Форум: "Основная";
Текущий архив: 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.04 c