Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Вниз

Назначение 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.034 c
2-1132942763
дурачок
2005-11-25 21:19
2005.12.11
MP3


3-1130331984
DmitryA
2005-10-26 17:06
2005.12.11
Как открыть таблицу Visual Foxpro?


4-1128428489
yanker
2005-10-04 16:21
2005.12.11
размер в памяти


14-1131710280
BOA_KAA
2005-11-11 14:58
2005.12.11
На какую з/п?


14-1132074231
Неудачник
2005-11-15 20:03
2005.12.11
ПИШУ КУРСОВОЙ! ПОМОГИТЕ! ОСТАЛОСЬ 20 дней!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский