Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];

Вниз

Как по 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.048 c
6-1173444998
vlavich
2007-03-09 15:56
2007.11.11
Проблема с установкой RAS соединения


2-1192627288
Sonia
2007-10-17 17:21
2007.11.11
Зацикливание при иерархическом запросе


4-1178601036
-=Germe$=-
2007-05-08 09:10
2007.11.11
Еще раз про глобальные ловушки


2-1192469739
KokocIK
2007-10-15 21:35
2007.11.11
Таблицы, СУБД Oracle


9-1163003459
DevilDevil
2006-11-08 19:30
2007.11.11
Альфаканал





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский