Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > как редактироват компонент в RunTime


Автор: asset_s 12.4.2005, 06:43
как редактировать компонет в runtime например когда изменяеш размеры и положения компонентов на Form при разработке. нужно очень поджкажите!
таскать компоненты я могу но изменять размеры ?

Автор: Satana 12.4.2005, 06:55
asset_s Ну а если использовать свойства width и height, разве не получается?

Автор: asset_s 12.4.2005, 07:02
Да можно но как зто сделить с мышкой

Автор: bursa 12.4.2005, 07:33
Самый простой способ - TSplitter
Но не всегда подходит

Придется писать таким образом: Ловишь событие перемещения мыши по компоненту - если на краю - преобразуешь курсор на стрелку, с середине - на 4 стрелки, на форме - обычный курсор.
Нажание мыши - в зависимости от курсора в глобальной переменной пишешь, что компонент может меняться (или в свойстве компонента). На перемещение мыши добавляешь, если свойство компонента на изменение=true, то меняшь размер или перемещаешь в зависимости от вида курсора. На событие MouseUp - свойство на изменение = false.

http://forum.vingrad.ru/index.php?showtopic=44088&st=0&#entry340303


Автор: asset_s 12.4.2005, 08:37
Понял спасибо!!! попробую!

Автор: Snowy 12.4.2005, 09:37
http://forum.vingrad.ru/index.php?showtopic=42898&st=0&#entry330896

Автор: bursa 12.4.2005, 15:50
Цитата(Snowy @ 12.4.2005, 09:37)
http://forum.vingrad.ru/index.php?showtopi...=0&#entry330896

Т.е. создавать окно?
Для одного - двух компонентов это отлично. Но если 100 и более... Ну не знаю....
Просто подскажи, Snowy, что будет с ресурсами?

Добавлено @ 15:52
Ну а вообще-то красиво.

Автор: Snowy 12.4.2005, 16:06
Цитата(bursa @ 12.4.2005, 15:50)
Т.е. создавать окно?

Зачем создавать? Просто задаешь параметры существующим компонентам.

Цитата(bursa @ 12.4.2005, 15:50)
Для одного - двух компонентов это отлично. Но если 100 и более...

А тут никаких сложностей. В OnCreate формы делаешь цикл с FindComponent.
И применяешь этот код ко всем найденным на форме компонентам или определенным типам.
Для цикла что один, что тысяча... Разница только во времени выполнения.
Цитата(bursa @ 12.4.2005, 15:50)
Просто подскажи, Snowy, что будет с ресурсами?

А что с ними будет... Попробуй - узнаешь. Зависит от целей.
Из того кода в линке, тебе нужен только первый.
Второй код прилеплен так... для выпендрежа.

Автор: Girder 12.4.2005, 17:18
Цитата(Snowy @ 12.4.2005, 17:06)
Второй код прилеплен так... для выпендрежа.
Я плакаль smile

Код
procedure TForm1.Button1Click(Sender: TObject);
var Style,ExStyle,i:integer;
begin
 for i:=0 to ComponentCount-1 do
  if (Components[i] is TWinControl) then
   With TWinControl(Components[i]) do
    begin
     Align:=alNone;
     Style:=GetWindowLong(Handle,GWL_Style);
     Style:=Style or WS_THICKFRAME;
     SetWindowLong(Handle,GWL_Style,Style);
     ExStyle:=WS_EX_CLIENTEDGE;
     SetWindowLong(Handle,GWL_ExStyle,ExStyle);
     SetWindowPos(Handle,HWND_TOP,Left,Top,Width,Height,SWP_FRAMECHANGED);
    end;
end;


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)