|
|
Регистрация | << Правила форума >> | 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
|
|||
|
|||
Цитата:
Скажите пожалуйста, хочу сделать так, что бы по нажатию кнопки, создавался компонент, еще одно нажатие, еще один компонент. И так неопределённое количество раз. То-есть заранее знать не могу, сколько будет. И как заставить появляться новый компонент чуть ниже предыдущего? Заранее спасибо! |
#5
|
||||
|
||||
Цитата:
Вот пример Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#7
|
||||
|
||||
Цитата:
Код:
procedure TStream.WriteComponent(Instance: TComponent); |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Gareth (03.04.2014)
|
#8
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Gareth (03.04.2014)
|