Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.11;
Скачать: 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 вся ветка

Текущий архив: 2005.12.11;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.044 c
2-1132873596
Alex17
2005-11-25 02:06
2005.12.11
Exel


2-1132581168
GuAV
2005-11-21 16:52
2005.12.11
Inplace Editor в StringGrid с реакцией на завершение ввода.


3-1130310225
carmen
2005-10-26 11:03
2005.12.11
Обращение в SQL запросе не по имени поля


14-1132296979
MBo
2005-11-18 09:56
2005.12.11
Пятничные задачки с участием несравненного Васи Пупкина ;)


14-1132296265
Knight
2005-11-18 09:44
2005.12.11
Спам или реальность?