|
Программирование >> Программирование на языке c++
прямоугольник имеет серый цвет Рис. 9.24. Состояние триггерных кнопок: а - активное; 6 - пассивное; в - безразличное Инициализация средств контроля (если необходимо) 4 } 4 class my app : public TApplication public: ту арр() : TApplication() {} virtual void InitMainWindowQ; void my app :: InitMainWindowQ { TFrameWindow *my frame = new TFrameWindow(0, New ,new DrawButton); SetMainWindow(my frame); my frame->EnableKBHandler(); } обратите внимание на функцию EnableKBHandler int OwlMain(int, char**) { return my app().Run(); } Новая функция программы EnableKBHandler описывается в виде: void EnableKBHandler(yoid); и устанавливает флаг, который позволяет использовать клавишу табуляции (и другие клавиши) для выбора (переключения) активной кнопки экрана (она имеет границу в виде утолщенного прямоугольника). Если нажать клавишу Enter клавиатуры, то автоматически выбирается активная кнопка экрана. Нажатие клавиши Tab перемещает утолщенный прямоугольник с одной кнопки на другую. 9.5.1. Использование триггерных кнопок (check box control) Триггерные кнопки имеют три состояния: 4- включенное, или активное, состояние (рис. 9.24, а); выключенное, или пассивное, состояние (рис. 9.24, б); 4- безразличное состояние (см. рис. 9.24, в). Работа с триггерными кнопками поддерживается объектами класса TCheckBox. Рассмотрим пример программы: #include <owl\checkbox.h> #include <owl\applicat.h> #include <owl\framewin.h> #include check.h class DrawButton : public TWindow public: DrawButton(TWindow* parent = 0); TCheckBox *Check1, *Check2, *Check3; void Hand B1(); void Hand B2(); void Hand B3(); protected: DECLARE RESPONSE TABLE(DrawButton); DEFINE RESP0NSE TABLE1(DrawButton,TWindow) EV C0MMAND{CHECK ID1,Hand B1), EV COMMAND(CHECKJD2,Hand B2), Ey COMMAND(CHECK ID3,Hand B3), ENd1rESP0NSE TABLE; DrawButton::DrawButton(TWindow* parent) : TWindow(parent,0,0) { Checkl = new TCheckBox(this,CHECK ID1, my but1 ,100, 50,80,30) Check2 = new TCheckBox(this,CHECKJD2, my but2 ,100, 150,80,30) Checks = new TCheckBox(this,CHECK ID3, my but3 ,100, 250,80,30) Check1->Attr.Style &= ~BS AUTOCHECKBOX; Check1->Attr.Style = WS BORDER BS AUT03STATE; Check2->Attr.Style = BS LEFTTEXT; } void DrawButton:: Hand B1() { MessageBox((Check2->GetCheck()==BF CHECKED) ? Checked : Unchecked , Button 2 ); } void DrawButton::Hand B2() { switch(Check1->GetCheck{)) { case BF CHECKED: MessageBox( Checked , Button 1 ); break; case BF UNCHECKED: MessageBox( Unchecked , Button 1 ); break; case BF GRAYED: MessageBox( Grayed , Button 1 ); } } void DrawButton:: Hand B3() { (Check3->GetCheck()==BF CHECKED) ? (void)MessageBox( l am in the checked state ) : Check1->SetCheck(BF GRAYED); } class my app : public TApplication { public: my app() : TApplication() {} virtual void InitMainWindowQ; void my app :: InitMainWindowQ { TFrameWindow *my frame = new TFrameWindow(0, New , new DrawButton); SetMainWindow(my frame); my frame->EnableKBHandlerQ; } int OwlMain(int, char**) { return my appQ.RunQ; } Определенный пользователем файл check.h имеет вид: #define CHECKJD1 101 #define CHECKJD2 102 #define CHECKJD3 103 В программе использовался следующий конструктор класса TCheclcBox: 13 в. А. Скляров 385
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |