Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.11;
Скачать: CL | DM;

Вниз

Как по Sender-y определить Родителя?   Найти похожие ветки 

 
Dns   (2007-10-15 18:57) [0]

Добрый вечер.
Как по Sender-y определить Родителя? Ну на пример для  того что бы переименовать Родителя.
Спасибо.


 
Ega23 ©   (2007-10-15 19:02) [1]

1. В каком контексте упоминается Sender?
2. Кто в твоём понимании "Родитель"? Класс-предок? Owner? Parent? Parent Sender-а?


 
Dns   (2007-10-15 19:07) [2]

Ну например в кнопка расположена на форме.Как в процедуре кнопки OnClick мне  изменить Caption формы.


 
Dib@zol ©   (2007-10-15 19:08) [3]

Вестимо, Form1.Caption:="blablabla!!!";


 
Dns   (2007-10-15 19:09) [4]

!!!Кнопку создал программно...!!!


 
Dib@zol ©   (2007-10-15 19:10) [5]

Ну и что? Form1 из нее тоже доступен! {со вздохом} Показывай как делаешь.


 
Dns   (2007-10-15 19:16) [6]

Предположим что я незнаю какая именно форма содержит кнопку.Как определить как по SENDER-у изменить caption Формы?


 
Dib@zol ©   (2007-10-15 19:18) [7]

Сам напросился.

SetWindowText(GetParent(Self.Handle), "blablabla!!!");


 
foreverDelphi ©   (2007-10-15 19:20) [8]


> Dib@zol ©   (15.10.07 19:18) [7]
>
> Сам напросился.
>
> SetWindowText(GetParent(Self.Handle), "blablabla!!!");

а если родитель не форма?


 
Dns   (2007-10-15 19:25) [9]

Точно... если родттель не форма?
Где то встречал функцию
...(sender).caption:="1112"
или ...(sender).close;


 
Ins ©   (2007-10-15 19:28) [10]

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:32) [11]

О, супер, работаем, спасибо вам большое.Весьма признателен.


 
Ins ©   (2007-10-15 19:32) [12]

Еще бы предусмотреть в [10] то, что Parent-а может и не быть...


 
koha ©   (2007-10-15 19:36) [13]

С проверкой ...

if (Button1.GetParentComponent is Tform) then begin
   ShowMessage("is parent TForm");
   (Button1.GetParentComponent as TForm).Caption:= "Твой текст";
 end
 else ShowMessage("is not parent TForm");


 
koha ©   (2007-10-15 19:40) [14]


> Ins ©   (15.10.07 19:28) [10]


- правильный, но грамоздкий


 
Ins ©   (2007-10-15 19:43) [15]


> [14] koha ©   (15.10.07 19:40)

А если в твоем случае положить кнопку на панель? :)


 
Dns   (2007-10-15 19:45) [16]

О, супер, работаем, спасибо вам большое.Весьма признателен.


 
Dns   (2007-10-15 19:47) [17]

О, супер, работаем, спасибо вам большое.Весьма признателен.


 
Dns   (2007-10-15 19:47) [18]

О, супер, работаем, спасибо вам большое.Весьма признателен.


 
Dns   (2007-10-15 19:48) [19]

О, супер, работаем, спасибо вам большое.Весьма признателен.


 
koha   (2007-10-15 21:48) [20]

> [15] Ins ©   (15.10.07 19:43)
>
> > [14] koha ©   (15.10.07 19:40)
>
> А если в твоем случае положить кнопку на панель? :)


- тогда  else ShowMessage("is not parent TForm");

- это то понятно, но очень паразительно, что это за приложение в котором создаются кнопки не весть где и автор не ведает в какой форме, что аж приходится искать? Ботва это все. MyButton.parent:=Form1 - и не знать кому впарил кнопку?


 
Leonid Troyanovsky ©   (2007-10-15 22:20) [21]


> koha   (15.10.07 21:48) [20]

> MyButton.parent:=Form1 - и не знать кому впарил кнопку?

Может у него нет Form1 :)
Да, и, во-ще, Form1 - MD.

--
Regards, LVT.


 
Ega23 ©   (2007-10-15 22:38) [22]


> - это то понятно, но очень паразительно, что это за приложение
> в котором создаются кнопки не весть где и автор не ведает
> в какой форме


Ну вот у меня такое сплошь и рядом. Кнопки создаются на фрейме, а вот уж куда потом этот фрейм ляжет - один Ктулху ведает. Может на форму, а может на панель, а может и на панель, которая лежит на другом фрейме, который лежит на другой панели, которая лежит на TabSheet, который лежит на PageControl, который ещё на одной панели лежит, и только конечная панель лежит на форме.


 
DevilDevil ©   (2007-10-16 12:31) [23]

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));



Страницы: 1 вся ветка

Текущий архив: 2007.11.11;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.017 c
2-1192803968
greengeneral
2007-10-19 18:26
2007.11.11
генерация


11-1177177531
bessam
2007-04-21 21:45
2007.11.11
BitBtn.Enabled := False , а по виду надписи не скажешь.


15-1190984490
lookin
2007-09-28 17:01
2007.11.11
Загрузить старые ветки


2-1192545392
Чародей
2007-10-16 18:36
2007.11.11
Combo и Access Violation


2-1192559427
Norm Iridium
2007-10-16 22:30
2007.11.11
Как слить два файла и отсортировать?