Вниз
Скачать: 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.027 c
1-1131936511
Razor
2005-11-14 05:48
2005.12.11
Как правильнее передавать строки в DLL?


14-1132079997
Sergey Masloff
2005-11-15 21:39
2005.12.11
Говорят, раз в 5 лет нужно менять работу. Даже если все


2-1132721288
Васяня
2005-11-23 07:48
2005.12.11
ADO + DSN (Alias)


14-1132522510
alex02
2005-11-21 00:35
2005.12.11
Помогите взять интеграл


3-1130312080
oleggar
2005-10-26 11:34
2005.12.11
Clipper indexing




   Наверх