Вниз
Скачать: 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.025 c
3-1130399234
Nikola62
2005-10-27 11:47
2005.12.11
Постраничный запрос


2-1132748523
tytus
2005-11-23 15:22
2005.12.11
Помогите примером


6-1125396912
Wistler
2005-08-30 14:15
2005.12.11
MX-запись из DNS


2-1132592037
shamen1990
2005-11-21 19:53
2005.12.11
Хелпппппппп!


3-1130395498
Juice
2005-10-27 10:44
2005.12.11
Connect к MySQL через dbExpress->ODBC




   Наверх