Программирование >>  Программирование на языке c++ 

1 ... 127 128 129 [ 130 ] 131 132 133 ... 159


#define ID 2 101 #define ID 3 102

9.5.3. Группирование кнопок (group box control)

Группирование позволяет совместно использовать кнопки, рассмотренные в § 9.5.1 и 9.5.2 (см. рис. 9.28). В этом случае для кнопок, рассмотренных в § 9.5.2, автоматически поддерживается механизм взаимоисключения. Если выбирается любая кнопка в пределах группы, то родительскому интерфейсному объекту автоматически посылается сообщение о том, что нажата одна из кнопок. Группирование поддерживается объектами класса TGroupBox, который наследуется из класса TControl. Рассмотрим простую программу:

#include-<owl\applicat.h> #include <owl\framewin.h> #include <owl\checkbox.h> #include <owl\radiobut.h> #include <owl\groupbox.h> #include group.h class my app : public TApplication { public:

my app() : TApplicationO { } protected:

virtual void InitMainWindow(void); };

Группа кнопок

г GROUP BUTTONS -i

□ CHECK

О 1 02 03

Рис. 9.28. Группирование кнопок



class my group : public TGroupBox { public:

my group(TWindow* parent, int Id,

const char far* text, int x, int y, int w, int h, TModule*module = 0) : TGroupBox(parent,ld,text,x,y,w,h,moduie) {} void SelectionChanged(int buttonJD);

void my group::SelectionChanged{int buttonJD) { switch(button ID)

{ case ID 1: MessageBox( Button 1 , !!! ); break;

case ID 2: MessageBox{ Button 2 , !!! ); break;

case ID 3: MessageBox{ Button 3 , J!I ); break;

case ID C; MessageBox{ Check box , ! . ); } } class my win : public TWindow { public:

my win(); protected:

TCheckBox* my check;

TRadioButton* my radio 1;

TRadioButton* my radio 2;

TRadioButton* my radio 3;

TGroupBox* group; };

my win::my win () : TWindow(0,0,0) { group = new my group (this,-1, GR0UP BUTTONS ,

25,25,200,100);

my check = new TCheckBox

{this,ID C, CHECK ,40,60,70,20,group); my radio 1 = new TRadioButton

(this,ID 1, 1 ,140,55,40,20,group); my radio 2 = new TRadioButton

(this,ID 2, 2 ,140,75,40,20,group); my radio 3 = new TRadioButton

(this,iD 3, 3 ,140,95,40,20,group); } void my app::lnitMainWindow(void)



{SetMainWindow(new TFrameWindow(0, Group box ,new

my win)); }

int OwlMain(int, char**) { return my app().Run(); }

Файл group.h, содержащий описание констант для уникальных идентификаторов, может быть задан в таком виде:

#define Ю С 201

#define ID 1 202

#define ID 2 203

#define ID 3 204

Используемый в программе конструктор класса TGroupBox описывается в виде:

TGroupBox{TWindow* parent, int Id,

const char far* text, int x, int y, int w, int h,

TModule* module=0);

Его параметры уже рассматривались ранее.

Все сообщения, генерируемые кнопками, перехватываются функцией SelectionChanged, которая является компонентом класса TGroupBox и имеет следующее описание:

virtual void SelectionChanged(int controllD); Эта функция проверяет значение компонента-данного NotifyParent класса TGroupBox, который имеет тип BOOL. Этот компонент автоматически получает значение TRUE, когда состояние одной из кнопок меняется. Если NotifyParent имеет значение TRUE, то вызывается функция SelectionChanged. Ее параметр принимает значение идентификатора (ID) нажатой кнопки. Рис. 9.29 иллюстрирует основные действия программы.

Рассмотрим еще одну программу: #include <owl\applicat.h> #include <owl\framewin.h> #include <owl\checkbox.h>



1 ... 127 128 129 [ 130 ] 131 132 133 ... 159

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика