![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как по Sender-y определить Родителя? [D7, XP]
Dns © (2007-10-15 18:57:00)Добрый вечер.
Как по Sender-y определить Родителя? Ну на пример для того что бы переименовать Родителя.
Спасибо.
DevilDevil (2007-10-16 12:31:00) [1]
var
Ctrl: TControl;
begin
if Sender is TControl then
Ctrl:=TControl(Sender)
else
Exit;
while (Ctrl <> nil) and not (Ctrl is TForm) do begin
Ctrl:=Ctrl.Parent;
end;
if Ctrl <> nil then TForm(Ctrl).Caption:='...';
end;
или
if Sender is TWinControl then
Ctrl:= GetParentForm(TWinControl(Sender));
Ega23 (2007-10-15 22:38:00) [2]
> - это то понятно, но очень паразительно, что это за приложение
> в котором создаются кнопки не весть где и автор не ведает
> в какой форме
Ну вот у меня такое сплошь и рядом. Кнопки создаются на фрейме, а вот уж куда потом этот фрейм ляжет - один Ктулху ведает. Может на форму, а может на панель, а может и на панель, которая лежит на другом фрейме, который лежит на другой панели, которая лежит на TabSheet, который лежит на PageControl, который ещё на одной панели лежит, и только конечная панель лежит на форме.
Leonid Troyanovsky (2007-10-15 22:20:00) [3]
> koha (15.10.07 21:48) [20]
> MyButton.parent:=Form1 - и не знать кому впарил кнопку?
Может у него нет Form1 :)
Да, и, во-ще, Form1 - MD.
--
Regards, LVT.
koha (2007-10-15 21:48:00) [4]> [15] Ins © (15.10.07 19:43)
>
> > [14] koha © (15.10.07 19:40)
>
> А если в твоем случае положить кнопку на панель? :)
- тогда else ShowMessage('is not parent TForm');
- это то понятно, но очень паразительно, что это за приложение в котором создаются кнопки не весть где и автор не ведает в какой форме, что аж приходится искать? Ботва это все. MyButton.parent:=Form1 - и не знать кому впарил кнопку?
Dns (2007-10-15 19:48:00) [5]О, супер, работаем, спасибо вам большое.Весьма признателен.
Dns (2007-10-15 19:47:00) [6]О, супер, работаем, спасибо вам большое.Весьма признателен.
Dns (2007-10-15 19:47:00) [7]О, супер, работаем, спасибо вам большое.Весьма признателен.
Dns (2007-10-15 19:45:00) [8]О, супер, работаем, спасибо вам большое.Весьма признателен.
Ins (2007-10-15 19:43:00) [9]
> [14] koha © (15.10.07 19:40)
А если в твоем случае положить кнопку на панель? :)
koha (2007-10-15 19:40:00) [10]
> Ins © (15.10.07 19:28) [10]
- правильный, но грамоздкий
koha (2007-10-15 19:36:00) [11]С проверкой ...
if (Button1.GetParentComponent is Tform) then begin
ShowMessage('is parent TForm');
(Button1.GetParentComponent as TForm).Caption:= 'Твой текст';
end
else ShowMessage('is not parent TForm');
Ins (2007-10-15 19:32:00) [12]Еще бы предусмотреть в [10] то, что Parent-а может и не быть...
Dns (2007-10-15 19:32:00) [13]О, супер, работаем, спасибо вам большое.Весьма признателен.
Ins (2007-10-15 19:28:00) [14]var
Ctrl: TControl;
begin
if Sender is TControl then
Ctrl:=TControl(Sender)
else
Exit;
while not (Ctrl is TForm) do begin
Ctrl:=Ctrl.Parent;
end;
TForm(Ctrl).Caption:='...';
end;
Dns (2007-10-15 19:25:00) [15]Точно... если родттель не форма?
Где то встречал функцию
...(sender).caption:='1112'
или ...(sender).close;
foreverDelphi (2007-10-15 19:20:00) [16]
> Dib@zol © (15.10.07 19:18) [7]
>
> Сам напросился.
>
> SetWindowText(GetParent(Self.Handle), 'blablabla!!!');
а если родитель не форма?
Dib@zol (2007-10-15 19:18:00) [17]Сам напросился.
SetWindowText(GetParent(Self.Handle), 'blablabla!!!');
Dns (2007-10-15 19:16:00) [18]Предположим что я незнаю какая именно форма содержит кнопку.Как определить как по SENDER-у изменить caption Формы?
Dib@zol (2007-10-15 19:10:00) [19]Ну и что? Form1 из нее тоже доступен! {со вздохом} Показывай как делаешь.
Dns (2007-10-15 19:09:00) [20]!!!Кнопку создал программно...!!!