Вниз
Скачать: CL | DM;

Назначение OnClick динамически созданному объекту - ПРОДОЛЖЕНИЕ   Найти похожие ветки 

← →
Pank83 ©   (2005-11-10 11:07) [0]

Создал в коде много кнопок, назначил всем единую ПРоцедуру на OnClick. А можно-ли узнать какая из кнопок была нажата, желательно из тела ПРоцедуры.
Спасибо!


← →
Суслик ©   (2005-11-10 11:07) [1]

используй sender


← →
Pank83 ©   (2005-11-10 11:09) [2]

Из Сурдера видно только имя класса, а хотелось бы имя объекта.


← →
Pank83 ©   (2005-11-10 11:10) [3]

Из Сендера видно только имя класса, а хотелось бы имя объекта.


← →
злобная танька   (2005-11-10 11:30) [4]

sender это и есть объект. например трем кнопкам назначена одна процедура:
procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage((Sender as TControl).Name);
end;
выдает Button1, Button2 и т.д. соответственно.


← →
Суслик ©   (2005-11-10 11:31) [5]

(sender as tcomponent).name


← →
Pank83 ©   (2005-11-10 11:52) [6]

Вы уж меня извините, но ShowMessage((Sender as TControl).Name) и (sender as tcomponent).name не работает. Какие нибудь еще варианты есть?


← →
Плохиш ©   (2005-11-10 11:58) [7]


> Какие нибудь еще варианты есть?

Заняться изучением теории.


← →
TUser ©   (2005-11-10 12:06) [8]

Часто бывает удобнее использовать св-во Tag.


← →
umbra ©   (2005-11-10 12:08) [9]

2 Pank83 ©   (10.11.05 11:52) [6]

как не работает?


← →
Pank83 ©   (2005-11-10 12:19) [10]

Трабл возможно в следующем...
использован двумерный массив динамически создаваемых кнопок

описан так
Btn:array [1..25,1..25] of TButton

а создаю кноки так
Btn[i,p]:=TButton.Create(Self);
Btn[i,p].Caption:=s;
Btn[i,p].Parent:=PageControl1.pages[i];

извращение? но пока по другому никак


← →
ZeroDivide ©   (2005-11-10 12:37) [11]


> а создаю кноки так
> Btn[i,p]:=TButton.Create(Self);
> Btn[i,p].Caption:=s;
> Btn[i,p].Parent:=PageControl1.pages[i];
>


Ну дык впиши еще сюда
Btn[i,p]:=TButton.Create(Self);
Btn[i,p].Caption:=s;
Btn[i,p].Name := "Button" + IntToStr(i)+IntToStr(p);
Btn[i,p].Parent:=PageControl1.pages[i];

И ShowMessage((Sender as TComponent).Name); будет работать


← →
Суслик ©   (2005-11-10 12:37) [12]

почему еще не в "начинающим"?


← →
ZeroDivide ©   (2005-11-10 12:38) [13]


> использован двумерный массив динамически создаваемых кнопок
> извращение? но пока по другому никак


Вовсе не извращение. Правда по другому: использовать TObjectList все таки удобнее и правильнее.


← →
Суслик ©   (2005-11-10 13:22) [14]


> Вовсе не извращение. Правда по другому: использовать TObjectList
> все таки удобнее и правильнее.

угу, а потом av ловить: TObjectList владеет TButton и Page владеет TButton.
уничтожать TButton полезут оба (если, конечно, не задать соотв. параметр TObjectList - но тогда это от массива мало отличается)



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.039 c
3-1130156030
napik
2005-10-24 16:13
2005.12.11
Asses


1-1132152240
VEZ
2005-11-16 17:44
2005.12.11
OnExit всегда


14-1132583518
ArtemESC
2005-11-21 17:31
2005.12.11
Как програмно выключить или перезагрузить компьютер?


4-1128601644
AngelFire
2005-10-06 16:27
2005.12.11
Перехват ввода


3-1129972925
mnm
2005-10-22 13:22
2005.12.11
Стоит ли использовать Access?




   Наверх