![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
... |
| Этот пользователь сказал Спасибо Freeman за это полезное сообщение: | ||
Uniq! (18.08.2014)
| ||