|
|
Регистрация | << Правила форума >> | 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
|
||||
|
||||
Желаю удачи
|