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

Вниз

событие на динамически созданный компонент   Найти похожие ветки 

 
Kot Andrei ©   (2005-08-31 09:29) [0]

т.е. как событие та присвоить я знаю... Например создаем Button1,
назначаем Parent:=Form1, назначаем обработчик события OnClick, Button1.OnClick:=MyClick, Потом пишем обработчик MyClick - и вот здесь начинаются трудности, дело в том что мне нужно в этом обработчике изменить свойство вызвавшего его компонента, т.е в MyClick написать например: Button1.Color:=clRed;
Но ведь Button1 еще не создан и делфя естественно ругается, как заставить ее понять что к моменту вызова этой процедуры Button1 уже будет существовать????

Надеюсь Вы поняли чего я хочу...
З.Ы. Писал очень поздно ночью, потому вопрос может глупый, а сейчас уже на работе , где даже делфи под рукой нет...:((((


 
kot andrei ©   (2005-08-31 09:30) [1]

Аааа , забыл сказать (если это важно) форма тоже создается динамически...


 
ShiFT   (2005-08-31 09:37) [2]

(Sender as TButton).Color := clRed;


 
Bless ©   (2005-08-31 09:42) [3]

Button1.Color:=clRed;
Но ведь Button1 еще не создан и делфя естественно ругается, как заставить ее понять что к моменту вызова этой процедуры Button1 уже будет существовать????


А можно пример кода? Что-то я сомневаюсь, что Делфи будет ругаться на button1 на этапе компиляции, даже если он не создан. Он ведь (button1) описан, правда?


 
kblc ©   (2005-08-31 09:48) [4]

Простите, а как она (Button1) может быть не создана, если ты уже ей событие присваеваешь???? и реагируешь на это сабытие (тем более OnClick)!!!!


 
Reindeer Moss Eater ©   (2005-08-31 09:49) [5]

Событие - это свойство.
Свойствам можно присваивать значения.
Создай свой экземпляр и присвой его свойству-событию нужное тебе значение.


 
Reindeer Moss Eater ©   (2005-08-31 09:54) [6]

дело в том что мне нужно в этом обработчике изменить свойство вызвавшего его компонента,

Компонет, вызвавший обработчик события передается тебе в параметре sender.
Вот с ним и работай.


 
Bless ©   (2005-08-31 10:01) [7]

Reindeer Moss Eater[6]>

Все верно. Но ведь код
Button1.Color:=clRed
в обработчике тоже корректный (хоть Sender кошернее :) А у автора сабжа он не работает.


 
kot andrei ©   (2005-08-31 10:02) [8]

>>ShiFT   (31.08.05 09:37) [2]
>>(Sender as TButton).Color := clRed;

>>Reindeer Moss Eater ©   (31.08.05 09:54) [6]
>>Компонет, вызвавший обработчик события передается тебе в
>>параметре sender.
>>Вот с ним и работай.

Спасибо! Я думаю это то что мне нужно! вечером попробую!

Всем остальным тоже большое спасибо!


 
Reindeer Moss Eater ©   (2005-08-31 10:06) [9]

А у автора сабжа он не работает.

Люди могут подразумевать очень разные вещи под этим.
Например у Button1 нет свойства Color и чел говорит, что "код не работает"

Или у ТButton меняют Font.Color на clRed а он не меняется, и чел снова говорит, что "код не работает"


 
Bless ©   (2005-08-31 10:10) [10]

Reindeer Moss Eater ©  (31.08.05 10:06) [9]
Например у Button1 нет свойства Color и чел говорит, что "код не работает"


Тю, блин. И то правда. :) Как-то не обратил внимание. Так тут и sender не поможет :)


 
begin...end ©   (2005-08-31 10:18) [11]

У TButton есть свойство Color. Но оно не опубликовано.


 
Bless ©   (2005-08-31 10:25) [12]

begin...end[11]>
Это от какого предка оно ему досталось?


 
begin...end ©   (2005-08-31 10:29) [13]

> Bless ©   (31.08.05 10:25) [12]

От TControl.


 
kot andrei ©   (2005-08-31 11:28) [14]

че то торможу совсем!!!!
поставил делфю на работе, сижу вот пробую:

var
 Form1: TForm1;
 myform: tform;
mybutton :tbutton;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
myform:=tform.Create(myform);
with myform do begin
width:=100;
height:=100;
name:="MyForm1";
show;
end;
mybutton:=tbutton.Create(mybutton);
with mybutton do begin
parent:=myform;
caption:="Проба";
onclick:=<<<<?????
end;
end;

procedure myclick; //здесь набо изменить каптион у баттона
<<<<<?????
end.


помогите плиз , торможу!!!! Давно не создавал ничего динамически...:о((((


 
kblc ©   (2005-08-31 12:05) [15]

и это у тебя работает? :)

у Баттона OnClick д.б. вообще TNotifyEvent! т.е. procedure (Sender: TObject) of object;
т.е. для начала создай свой класс. В нём определи такую процедуру. А потом присваивай.
 А в обработчике напишешь if Sender is TButton then (Sender as TButton).Caption:="123";


 
kot andrei ©   (2005-08-31 12:10) [16]

kblc ©   (31.08.05 12:05) [15]

пасибо!
совсем полохой стал :о)
ну да ладно буду разбираться! закрывайте ветку а то уже стыдно :о)



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

Форум: "Основная";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.047 c
2-1124270369
ArtemESC
2005-08-17 13:19
2005.09.25
API


1-1125373161
Артем К.
2005-08-30 07:39
2005.09.25
Подскажите, пожалуйста, как перевести дату и время в


14-1125743451
lookin
2005-09-03 14:30
2005.09.25
Печень просит подаянья....


1-1125819308
dddim
2005-09-04 11:35
2005.09.25
иконки от проектов delphi


4-1123059315
Гость22
2005-08-03 12:55
2005.09.25
Можна ли узнать, занят файл или нет (на чтение, запись)?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский