реклама на сайте
подробности

 
 
> Обработчик для множества компонентов CheckBox
Buratino
сообщение Sep 26 2013, 08:44
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 24-11-11
Из: Город-герой Минск
Пользователь №: 68 491



Пишу VCL Forms Application на С++ Builder XE4. На форме имеется большое количество CheckBox'ов. Есть ли способы их опроса , позволяющих избежать обращение к каждому из них по отдельности (как в примере)?

Код
    
if (CheckBox1->Checked == true)
    {
    signal1 = 1;
    Label1->Font->Color = clLime;
    }
    else
    {
    signal1 = 0;
    Label1->Font->Color = clBtnFace;
    }

    if (CheckBox2->Checked == true)
    {
    signal2 = 2;
    Label2->Font->Color = clLime;
    }
    else
    {
    signal2 = 0;
    Label2->Font->Color = clBtnFace;
    }

и т.д. .......


Сообщение отредактировал Buratino - Sep 26 2013, 08:47
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Ramil
сообщение Sep 29 2013, 04:18
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 93
Регистрация: 5-08-04
Пользователь №: 452



Я создавал такие вещи динамически, при этом удобно становится обрабатывать контролы какие бы они не были, одним обработчиком. Что кнопки что чекбоксы, что пункты меню .


Код
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
    checking = new TCheckBox*[10];

   for(int i = 0; i<10; i++)
    {
      checking[i] = new TCheckBox(this);
      checking[i]->Parent = Form1;
      checking[i]->Height = 25;
      checking[i]->Left = 50;
      checking[i]->Top = i*checking[i]->Height;
      checking[i]->Caption = "CheckBox  " + IntToStr(i+1);
      checking[i]->Visible = true;
      checking[i]->OnClick = CheckBoxClick;
    }

}
//---------------------------------------------------------------------------

void __fastcall TForm1::CheckBoxClick(TObject *Sender)
{
  
  for (int i=0; i<10; i++)
    {
      if (Sender == checking[i] )
       {
         ShowMessage(IntToStr(i+1));
       }
    }
}
//--------


checking и обработчик клика CheckBoxClick(TObject *Sender) объявлены в классе формы


Код
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        void __fastcall CheckBoxClick(TObject *Sender);
private:    // User declarations
public:        // User declarations
        __fastcall TForm1(TComponent* Owner);

        TCheckBox **checking;

};
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 07:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.0178 секунд с 7
ELECTRONIX ©2004-2016