Форум: "Основная";
Текущий архив: 2003.07.24;
Скачать: [xml.tar.bz2];
ВнизSender:TObject Найти похожие ветки
← →
SergP (2003-07-13 11:06) [0]Как использовать параметр sender:tobject, который передается обработчикам событий практически во всех компонентах.
Я так понимаю что он нужен для того чтобы определить какой компонент сгенерировал это событие. (если неверно - подправьте)
У меня есть несколько компонентов (обработчики событий у них общие).
Например есть несколько кнопок с одним обработчиком событий:
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
Как мне в этой процедуре узнать какая кнопка вызвала данный обработчик?
А вообще мне нужно присвоить какой-нить переменной значение одного из проперти компонента который сгенерировал данное событие.
Просто я нигде не смог найти примеров, где бы это использовалось, чтобы посмотреть.
Напишите как это сделать....
← →
jack128 (2003-07-13 11:15) [1]procedure TForm1.Button1Click(Sender: TObject);
var btButton : Tbutton
begin
if Sender is Tbutton then
begin
btButton := Tbutton(Sender);
if btButton = Button 1 then
...
else
if btButton = Button2 then
...
else
....
end
end;
← →
Real (2003-07-13 13:08) [2]Можно и проще, ты ведь точно знаешь какие будут попадать в обработчик?
if Sender=Button1 then ...
← →
SergP (2003-07-13 13:31) [3]2 Real
Я создаю компоненты в рантайме, таким образом:
buttons:array[1..10] of tbutton;
...
buttons[i].create(self);
...
могу ли я в таком случае сравнивать так:
for i:=1 to 10 do
begin
if sender=buttons[i] then ....;
end;
?
или можно все же обратиться к свойствам компонента не используя их имена, а используя только sender, типа так:?
var z:integer;
....
z:=sender.tag;
PS Я знаю что последняя строчка неправильная и неработает, но просто хотел показать что имелось ввиду....
← →
Palladin (2003-07-13 13:43) [4]
> buttons[i].create(self);
странно ты их создаешь
> могу ли я в таком случае сравнивать так:
> for i:=1 to 10 do
> begin
> if sender=buttons[i] then ....;
> end;
> ?
можешь
> z:=sender.tag;
1 z:=(Sender as TButton1).Tag
2 z:=TButton(Sender).Tag // при полной уверенности
← →
SergP (2003-07-13 13:58) [5]
> Palladin © (13.07.03 13:43)
>
> > buttons[i].create(self);
>
> странно ты их создаешь
buttons[i]:=tbutton.create(self);
Ну не помню я точно как у меня написано...Текста под руками нет.
К тому же я только на днях начал пробовать что-то создавать в рантайме, поэтому и мог ошибиться не имея текста под руками.
Да и кнопки я для примера привет, на самом деле это другой компонент, но суть от этого не меняется Но что-то типа того.
> 1 z:=(Sender as TButton1).Tag
> 2 z:=TButton(Sender).Tag // при полной уверенности
А насчет этого большое спасибо. Меня именно этот вариант и интересовал.
Только что значит "при полной уверенности". Т.е. в чем?
← →
Palladin (2003-07-13 14:15) [6]в том что Sender точно TButton
тебе уже написали между прочим выше
if Sender is TButton then ляля else мля...
ситуация бывает такова что обработчик может быть повешен на событие у кучи компонентов, более того, компоненты могут быть не только TButton
а для частных случаев пойдет и это
if Sender=TButton then
← →
KSergey (2003-07-13 14:58) [7]SergP, вам прямой ход вот сюда
http://www.delphikingdom.com/helloworld/runtime_comp.htm
И остальные статьи раздела почитайте - ооочень много интересного почерпнете.
PS: еще раз попрошу у всех прощения за один и тот же текст и ссылку раз в неделю. Но буду продолжать это делать, т.к. считаю правильным.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.07.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c