![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте.
Я хотел бы, что бы вы мне объяснили, каким образом можно сделать событие на компоненты, созданные в run-time? И еще кое-что не понимаю... как на одну кнопку, создавать компоненты, (допустим панель) и каждый раз с расстоянием от предыдущего. (это ве на одну кнопку, одно нажатие - 1 панель со своими left, top, width, heiht) Последний раз редактировалось Gareth, 12.01.2014 в 19:05. |
|
#2
|
|||
|
|||
|
Заранее описываешь процедуру соотв. типа. Далее, созданному компоненту присваиваешь эту процедуру. Ну а смещение делается через сохранение координат последнего созданного компонента. Пример:
Код:
type
TForm1 = class(TForm)
...
procedure RunTimeButtonClick(Sender : TObject);
end;
procedure TForm1.RunTimeButtonClick(Sender : TObject);
begin
ShowMessage('Run-time event handler.');
end;
procedure TForm1.Button1Click(Sender : TObject);
var
I : Integer;
X, Y : Integer;
RTButton : TButton;
begin
X := 0;
Y := 0;
For I := 0 To 9 Do
Begin
RTButton := TButton.Create(Self);
RTButton.Caption := 'Button ' + IntToStr(I);
RTButton.OnClick := RunTimeButtonClick;
RTButton.Top := Y;
RTButton.Left := X;
X := X + RTButton.Width;
Y := Y + RTButton.Height;
End;
end; |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Gareth (14.01.2014)
| ||
|
#3
|
|||
|
|||
|
А для того, что бы потом различать, какой именно контрол вызвал событие,
можно делать так Код:
type
TForm1 = class(TForm)
...
RTag:Integer;
...
procedure RunTimeButtonClick(Sender : TObject);
end;
...
procedure TForm1.RunTimeButtonClick(Sender : TObject);
var
IndexOfButton:Integer;
begin
IndexOfButton:=TConmponent(Sender).Tag;//<<==--
ShowMessage('Run-time event handler :'+IntToStr(IndexOfButton));
end;
...
RTButton := TButton.Create(Self);
RTButton.Tag := RTag; Inc(RTag);//<<==--
|
| Этот пользователь сказал Спасибо icWasya за это полезное сообщение: | ||
Gareth (14.01.2014)
| ||
|
#4
|
|||
|
|||
|
Цитата:
Скажите пожалуйста, хочу сделать так, что бы по нажатию кнопки, создавался компонент, еще одно нажатие, еще один компонент. И так неопределённое количество раз. То-есть заранее знать не могу, сколько будет. И как заставить появляться новый компонент чуть ниже предыдущего? Заранее спасибо! |
|
#7
|
||||
|
||||
|
Цитата:
Код:
procedure TStream.WriteComponent(Instance: TComponent); |
| Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Gareth (03.04.2014)
| ||
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Gareth (03.04.2014)
| ||