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

1 ... 124 125 126 [ 127 ] 128 129 130 ... 159


прямоугольник имеет серый цвет

Рис. 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



1 ... 124 125 126 [ 127 ] 128 129 130 ... 159

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