Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обращение ко всем компонентам в одном обработчике 
:(
    Опции темы
Han
Дата 7.10.2005, 14:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Привет! Допустим у меня на форме 5 Button. Знаю, что как-то можно в одном обработчике сделать обращение к ним всем, Например в обработчике написать , что при нажатии (ButtonClick) кнопка меняла свой цвет, но сделать это для всех, т.е. чтобы изменить цвет каждой мне нужно щелкнут по каждой. Вот. Не знаю понятно ли объяснил...
  Вверх
Vyacheslav
Дата 7.10.2005, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
     if (TButton* btn = dynamic_cast<TButton*>(Sender)) {
          btn->Color = ...;
     }
}




Это?


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
_hunter
Дата 7.10.2005, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



нельзя этого сделать.
можно только работу немного упростить -- пробежать циклом по всем компонентам формы или при создании кнопки писать указатель на нее куда-нить.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Han
Дата 8.10.2005, 08:30 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Vyacheslav, вроде это, помню, что через Sender. Надо попробовать. Спасибо.
  Вверх
Han
Дата 10.10.2005, 09:04 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Нашел кое-что попроще:

Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
((TButton*)Sender)->Caption="Hello!";
}


А для кнопок Button2-Button5 в событии OnClick выбираем Button1Click. И все. При нажатии на любую кнопку будет высвечиваться Hello!
  Вверх
Vyacheslav
Дата 10.10.2005, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Это не проще. Это небезопаснее. При присвоении(например случайном ) этого обработчика контролу, который не является TButton высока вероятность словить эксепшион.


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
_hunter
Дата 10.10.2005, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



Han, ай-яй-яй... -- совсем запутал smile
тебе нужно из одного обработчика ко всем контролам обратится или всем контролам назначить один обработчик?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Han
Дата 10.10.2005, 13:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Получается, что всем контролам один обработчик. В общем вот так как есть меня очень устраивает, но как говорит Vyacheslav не безопасно. Может можно сделать как-то по-другому, но по такому принципу?
  Вверх
_hunter
Дата 10.10.2005, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



небезопасно так:
((TButton*)Sender)
а так, как говорил
Vyacheslav:
if (TButton* btn = dynamic_cast<TButton*>(Sender)) {
вполне безопасно...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Han
Дата 2.11.2005, 06:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Как програмно вызвать обработчик Button1Click для нажатия например Button2 и др.
  Вверх
codelord
Дата 2.11.2005, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

Репутация: 16
Всего: 39



Цитата(Han @ 2.11.2005, 02:06)
Как програмно вызвать обработчик Button1Click для нажатия например Button2 и др.

непонял ... а в обработчике Button2 вставить Button1Click(Sender);
неподходит?



--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
bas
Дата 2.11.2005, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



Button2->OnClick=Button1Click
PM MAIL   Вверх
Han
Дата 2.11.2005, 16:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Может я не так объяснил. Для всех кнопок я поставил обработчик Button1Click. Мне нужно во время работы программы делать щелчки по Buttonам не нажимая на них (кодом). В Delphi видел такую реализацию:

Код

Button1Click(Controls[2]);
Button1Click(Controls[3]);
Button1Click(Controls[4]);
Button1Click(Controls[5]);

  Вверх
bas
Дата 2.11.2005, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



Так и вызывай
Код

TCommponent *T;
TButton *B;
String button;
 for (int i=1;i<=obj;i++)
      {
      button="Button"+IntToStr(i);
      T = FindComponent(button);
      B = dynamic_cast<TButton * >(T);
      Button1Click(B);
      }

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0595 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.