8.2.2. Пояснения к программе

 Заголовочный файл owl\button.h содержит описание класса TButton и его членов.

В начало программы помещены директивы

#define CM_BUTTON1 100

#define CM_BUTTON2 200,

определяющие константные идентификаторы сообщений, которые будут посылаться программе кнопками в ответ на щелчки мышью. CM_BUTTON1 генерируется первой кнопкой, CM_BUTTON2 - второй. Можно выбрать другие имена сообщений, отличные от CM_BUTTONn и значения констант, отличные от приведенных в программе, но для того, чтобы программа правильно реагировала на сообщения кнопок, необходимо правильно заполнить таблицу реакций, передав в качестве аргументов макросам таблицы имена констант и имена функций отклика.

Конструктор прикладного окна создает с помощью оператора new две кнопки, передавая им в качестве аргументов идентификатор окна, идентификатор уведомляющего сообщения, которое будет генерировать кнопка, текст надписи на кнопке и координаты размещения кнопки в окне приложения.

Обратите внимание на то, что адреса созданных объектов-кнопок не присваиваются указателям. Этого не требуется делать потому, что в программе нет необходимости ссылаться на эти объекты.

Функции отклика на сообщения кнопок CmButton1 и CmButton2 изменяют признак цвета геометрических фигур и объявляют о необходимости перерисовки окна приложения.

Таблица отклика конструируется так же, как это делалось при использовании меню. Она содержит идентификаторы уведомляющих сообщений, приходящих от кнопок и имена функций класса прикладного окна, отвечающих за обработку данных сообщений.

8.2.3. Задание.

1) Создать приложение и исследовать его работу.

2) Изменить аргументы конструктора (текст кнопки, координаты, размер и т. д.) TButton одной из кнопок.

3) Исследуйте работу приложения, закомментировав вызов Invalidate в одной из функций отклика.

9. Ввод и редактирование текста

Данная тема будет посвящена панелям ввода и редактирования - одной из популярнейших компонент Windows.

Использование панели ввода и редактирования текста позволяет приложению ввести и при необходимости отредактировать одну или несколько строк текста.

Панель редактирования создается, как объект класса TEdit и может быть размещена в любом прикладном окне. Данная панель представляет собой стандартный текстовый редактор Windows, в котором доступны все операции редактирования текста - вставка и замена текста, удаление символов и работа с буфером обмена Windows.

Различают два типа панелей редактирования - однострочная и многострочная.

Создание панелей редактирования и размещение их в окне приложения осуществляются аналогично созданию кнопок и полос прокрутки. Объект создается из класса TEdit. Конструктору объекта передается идентификатор окна, в котором будет размещена панель, константный идентификатор панели, текст, который будет помещен в редактор и координаты панели в окне приложения. Дополнительно конструктору передается стиль панели редактирования: TRUE, если создается многострочная панель, FALSE, если панель - однострочная (см раздел 10.7).

9.1. Пример использования однострочного текстового редактора для ввода и редактирования текста

Приведенное в этом разделе приложение создает однострочный текстовый редактор и выводит копии этой строки в окне приложения.

9.1.1. Исходный текст приложения

#include <owl\applicat.h>

#include <owl\framewin.h>

#include <owl\edit.h>

#include <owl\button.h>

#include <owl\dc.h>

#define ID_ONELINER 150

#define CM_BUTTON 160

#define TEXTLEN 10

class TMyWin: public TFrameWindow

 {

 TEdit *oneLiner;

 char txt[TEXTLEN];

 public:

TMyWin(): TFrameWindow(0,"the TEdit object")

{

 - oneLiner=new TEdit(this,ID_ONELINER,"Input one line",10,10,100,30,TEXTLEN,FALSE);

 - new TButton(this,CM_BUTTON,"Update",10,100,70,25);

 - txt[0]='\0';

}

 protected:

void CmButton();

void Paint(TDC&,BOOL,TRect&);

 DECLARE_RESPONSE_TABLE(TMyWin);

 };

 DEFINE_RESPONSE_TABLE1(TMyWin,TFrameWindow)

EV_COMMAND(CM_BUTTON,CmButton),

 END_RESPONSE_TABLE;

 void TMyWin::CmButton()

{

oneLiner->GetLine(txt,TEXTLEN,0);

Invalidate();

//UpdateWindow();

}

void TMyWin::Paint(TDC& dc,BOOL,TRect&)

{

 - for (int i=1;i<=2;i++)

 - dc.TextOut(150,50+i*20,txt);

}

 class TMyApp:public TApplication

 {

public:

TMyApp(): TApplication(){};

void InitMainWindow()

 - {

 - MainWindow=new TMyWin();

 - }

};

 int OwlMain(int,char *[])

{

return TMyApp().Run();

}


Информация о работе «Borland C++ для Windows»
Раздел: Информатика, программирование
Количество знаков с пробелами: 59535
Количество таблиц: 0
Количество изображений: 13

Похожие работы

Скачать
25316
2
1

... автоматизации, которые не описаны в интерфейсе IDispatch. Var Object: Variant; Object := CreateOleObject('Word.Application'); Использование экземпляра сервера автоматизации, то есть вызов его методов, осуществляется с помощью конструкций, обычных для вызова методов в Delphi: <Ссылка на сервер>.<Название метода>(<Список параметров>); Однако механизм, используемый для ...

Скачать
16146
2
10

... требования: Процессор – Pentium 400 MHz. Оперативная память – 512 Mb. Жесткий диск – 10 Gb. Операционная система – Windows XP Professional Программное обеспечение – Borland Database Engine. 2. Разработка рабочего проекта 2.1  Разработка программы Программа, моделирующая игру «Нечет» и «Чет» разработана на языке Object Pascal в визуальной среде Delphi 6. Проект содержит одно окно- ...

Скачать
133101
1
9

... мире. Внутренняя схема - это сама база данных. Отсюда вытекают основные этапы, на которые разбивается процесс проектирования базы данных информационной системы: Концептуальное проектирование - сбор, анализ и редактирование требований к данным. Для этого осуществляются следующие мероприятия: обследование предметной области, изучение ее информационной структуры выявление всех фрагментов, каждый ...

Скачать
46945
2
0

... из контекстного меню или из меню Run, закрыть приложение и лишь затем вносить изменения в проект. В этом случае уменьшится вероятность потери ресурсов Windows. Компоненты Borland C++ Builder Выбор компонентов для групповых операций Для эффективной разработки пользовательских интерфейсов приложений C++ Builder нередко возникает необходимость в манипулировании компонентами на формах. ...

0 комментариев


Наверх