void __fastcall TForm1::ButtonClick(TObject *Sender)
{
if(((TButton *)Sender)->Tag == 1)
... или
if(((TButton *)Sender)->Caption == "...")
...
}
Динамические кнопки
Создаю динамически 10 кнопок и всего лишь одну фун-ию для обработки событий нажатия на эти кнопки.Как фун-ия обработки должна узнавать какая именно из 10 кнопок была нажата, вообщем какая из кнопок заставила сработать обработчик?
Или же можно определить по Caption. Т.е.
Код:
Цитата:
Originally posted by uki_
присвой Tag свойству кнопок разное значение.
Или же можно определить по Caption. Т.е.
присвой Tag свойству кнопок разное значение.
Или же можно определить по Caption. Т.е.
Код:
void __fastcall TForm1::ButtonClick(TObject *Sender)
{
if(((TButton *)Sender)->Tag == 1)
... или
if(((TButton *)Sender)->Caption == "...")
...
}
{
if(((TButton *)Sender)->Tag == 1)
... или
if(((TButton *)Sender)->Caption == "...")
...
}
Свойство Tag, судя по хелпу Билдера, введено именно для подобных целей. Но, имхо, приводить к типу вот так:
Код:
((TButton *)Sender)->Tag
Надо, имхо, так:
Код:
TButton *btn = dynamic_cast<TButton*>(Sender);
if(btn)
{
switch(btn->Tag)
{
case 1:
/* ... */
break;
case 2:
/* ... */
break;
default:
/* ... */
break;
}
}
if(btn)
{
switch(btn->Tag)
{
case 1:
/* ... */
break;
case 2:
/* ... */
break;
default:
/* ... */
break;
}
}
Цитата:
Originally posted by Plisteron
Свойство Tag, судя по хелпу Билдера, введено именно для подобных целей. Но, имхо, приводить к типу вот так:
некорректно.
Надо, имхо, так:
Свойство Tag, судя по хелпу Билдера, введено именно для подобных целей. Но, имхо, приводить к типу вот так:
Код:
((TButton *)Sender)->Tag
Надо, имхо, так:
Код:
TButton *btn = dynamic_cast<TButton*>(Sender);
if(btn)
{
switch(btn->Tag)
{
case 1:
/* ... */
break;
case 2:
/* ... */
break;
default:
/* ... */
break;
}
}
if(btn)
{
switch(btn->Tag)
{
case 1:
/* ... */
break;
case 2:
/* ... */
break;
default:
/* ... */
break;
}
}
А если только две кнопки, твое imho, o Generalissimus, что подсказывает???? :)
Цитата:
Originally posted by uki_
А если только две кнопки, твое imho, o Generalissimus, что подсказывает???? :)
А если только две кнопки, твое imho, o Generalissimus, что подсказывает???? :)
То же самое, что и с 10.
Одной кнопке делаешь Button1->Tag = 1;
Другой Button2->Tag = 2;
Дальше как в вышенаписанном коде.
Это если, конечно, они динамически создаются. А если статически, то мудрить не надо, а создать для каждой отдельную функцию-обработчик события.
ЗЫ. Я просто генерал, потому как на портрете не Сталин, а Аугусто Пиночет. :)
Цитата:
Originally posted by Plisteron
То же самое, что и с 10.
Одной кнопке делаешь Button1->Tag = 1;
Другой Button2->Tag = 2;
Дальше как в вышенаписанном коде.
То же самое, что и с 10.
Одной кнопке делаешь Button1->Tag = 1;
Другой Button2->Tag = 2;
Дальше как в вышенаписанном коде.
Я имел в виду, что когда случаев только два, тогда обычно case не используют.
Цитата:
ЗЫ. Я просто генерал, потому как на портрете не Сталин, а Аугусто Пиночет. :)
Перепутать Пиночет с Сталином:???:
Обижаете коллега, точнее mon général.