|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Определить принадлежность элемента
Как установить принадлежность какого-нибудь Edit'a к определённой Panel?
Вообще у меня задача чуть сложнее: я использую компонент dxLayout от Dev'Express и там (например) под стандартный элемент Edit сначала создаётся ItemContainer, а потом уже этот ItemContainer привязывается к Group, которая объединяет Item'ы. Иерархия получается такая: Элемент в Item Item в Group Так вот мне необходимо назначить одно событие OnCahnge всем Edit'ам в определённой группе. |
#2
|
|||
|
|||
как то так
Код:
procedure SetCahngeEvent(Sender:TControl; ChangeEvent:TNotifyEvent); var I:Integer; C:TControl; begin for I:=0 to Sender.ControlCount-1 do begin C:=Sender.Controls[i]; if C is TEdit then TEdit(C).OnChange:=ChangeEvent else if C is TPanel then SetCahngeEvent(C,ChangeEvent) else if C is TGroupBox then SetCahngeEvent(C,ChangeEvent) else (* ещё пяток проверок, если эти не подошли*) end; end; |
#3
|
||||
|
||||
Наверное проще определять по свойству Tag или имени родителя элемента, создав и задав единственную процедуру чейнжа для всех
Код:
procedure Form1.EditChange(Sender: TObject); begin with (Sender as TEdit) do case Parent.Tag of 10: Text:= Parent.Name; 20: Text:= Parent.Name; // etc. end;{case} end; Код:
... with (Sender as TEdit).Parent do begin if Name = 'Panel1' then if Name = 'Panel2' then ... end; ... Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#4
|
||||
|
||||
Цитата:
Код:
if Edit1.Parent = Panel1 then ... Не стоит путать форумы с богадельнями. © Bargest |
Этот пользователь сказал Спасибо Freeman за это полезное сообщение: | ||
Uniq! (18.08.2014)
|