![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Привет всем! И еще вопрос. Искал в интернете инфу про перетаскивание компонент, все понятно когда созданы не динамически... А когда созданы динамически??? Это нужно для каждого компонента динамически описывть обработку событий(т.е щелчка мышки, перетаскивание...)? Других способов более легких нет?
|
#2
|
||||
|
||||
![]() Способы (варианты):
1. Написать библиотеку компонентов, в которых уже установлены эти свойства. 2. Написать компонент (или класс), который будет помогать тебе заполнять различные свойства создаваемых компонентов. 3. Просто создать функцию, автоматезирующую этот процесс. 4. ![]() Возможно есть еще варианты ![]() |
#3
|
||||
|
||||
![]() Кстати, одним универсальным обработчиком (с использованием Sender: TObject) можно обрабатывать аналогичные события разных компонентов
|
#4
|
|||
|
|||
![]() Понятно. Спасибо. В общем разбираться в моем случае нужно долго и упорно))))
|
#5
|
||||
|
||||
![]() Не обязательно
Все зависит от того что ты уже знаешь и что конкретно хочешь. Если тебе не понятно как прикрепить события можем обьяснить, если не понятно Sender: TObject тоже расскажут А так вопрос был общий и ответ тоже Программисты для того и пишут программы (компоненты, функции...) чтобы автоматизировать какойто процесс и другим облегчить решение ихних задач (Разработчики Делфи значительно облегчили нам работу - кинул кнопку и она уже на форме, щелкнул немного накодил и она уже работает) Конкретизируй вопрос или покажи код где неполучается ![]() |
#6
|
|||
|
|||
![]() Динамически создаю компоненты, как лучше в моем случае организовать перетаскивание компонентов???
Код:
T: TTabSheet; Edit: TEdit; Lab: TLabel; QRLab: TQRLabel; ....... For i:=1 to Form1.PageControl1.PageCount+1 do BEGIN for j:=1 to PG[i].Label_Count do begin Lab:= TLabel.Create(Self); Lab.Caption:=PG[i].Info_Label[j].Caption; Lab.Top:= PG[i].Info_Label[j].Top; Lab.Left:= PG[i].Info_Label[j].Left; Lab.Font.Size:=PG[i].Info_Label[j].Size; if PG[i].Info_Label[j].Style = 1 then Lab.Font.Style:=[fsBold]; // Lab.Visible:=true; Lab.Parent:= PageControl1.Pages[i-1]; Edit:= TEdit.Create(Self); Edit.Top:= PG[i].Info_Edit[j].Top; Edit.Left:= PG[i].Info_Edit[j].Left; Edit.Name:='Edit'+IntToStr(i)+IntToStr(j); Edit.Text:=''; Edit.Parent:= PageControl1.Pages[i-1]; end; END; |
#7
|
||||
|
||||
![]() PashaXP, смотри. Например, ты создаёшь обработчик нажатия на Button такого вида:
Код:
MyButtonClick(Sender:TObject); Код:
MyButton.OnClick:=MyButtonClick |
#8
|
||||
|
||||
![]() Пока не совсем понял что ты хочешь перетаскивать
но в общих чертах события можешь привязать так: Код:
TForm1 = class(TForm) //.................... public { Public declarations } procedure LabsClick(Sender: TObject); end; //.................... implementation //.................... procedure TForm1.LabsClick(Sender: TObject); begin if Sender is TLabel then begin (Sender as TLabel).Caption := 'my name - ' + (Sender as TLabel).Name; // ....... end else if Sender is TEdit then begin (Sender as TEdit).Text := 'my name - ' + (Sender as TLabel).Name; // ....... end end; //.................... Lab.OnClick := LabsClick; //.................... Код:
For i:=1 to Form1.PageControl1.PageCount+1 do |
#9
|
|||
|
|||
![]() Просто выдернул код из проги, а перетаскивать хочу TEdit, TLabel и еще в дальнейшем TQRLabel. Спасибо за советы))) !!!! Буду разбираться и пробовать...
|
#10
|
||||
|
||||
![]() Желаю удачи
![]() |