9.1.2. Пояснения к программе
Заголовочный файл owl\edit.h содержит описание класса TEdit и его членов-функций.
Класс TMyWin описывает прикладное окно. В классе определен указатель на объект TEdit, используемый для ссылки на член-функции элемента редактирования.
Конструктор TMyWin создает однострочную панель редактирования. Первый аргумент конструктора TEdit равен this. Это привязывает панель редактирования к прикладному окну. Конструктору также передается текст, который будет изначально размещен в панели редактирования.
Дополнительно в окне приложения размещается кнопка, при нажатии которой текст из буфера редактора переписывается в строку с именем txt. Для этого вызывается GetLine. Первый параметр функции - указатель на строку, в которую требуется переписать текст строки из редактора, второй аргумент - длина переписываемой строки, третий аргумент - номер копируемой из элемента редактирования строки. Функция отклика на нажатия кнопки объявляет о необходимости перерисовки главного окна. Это приводит к тому, что Paint выводит текст, скопированный в txt в окно приложения. После запуска приложения Вы можете изменить текст в элементе редактирования, а затем нажать на кнопку. В результате все изменения в редакторе будут отображены в окне приложения.
9.1.3. Задание
1) Создайте и исследуйте приложение.
2) Поместите в окно приложения еще одну панель редактирования. После нажатия на кнопку приложение должно выводить в свое окно строки из первой и второй панели редактирования.
9.2. Использование многострочного текстового редактора для ввода и редактирования текста.
Нижеприведенное Windows-приложение использует многострочную панель редактирования текста.
9.2.1. Исходный текст программы
#include <owl\applicat.h>
#include <owl\framewin.h>
#include <owl\edit.h>
#include <owl\button.h>
#include <owl\dc.h>
#define ID_MULTILINER 150
#define CM_BUTTON 160
class TMyWin: public TFrameWindow
{
TEdit *multiLiner;
char *txt;
public:
TMyWin(): TFrameWindow(0,"the TEdit object")
{
- multiLiner=new TEdit(this,ID_MULTILINER,"Input lines",10,10,200,100,0,TRUE);
- new TButton(this,CM_BUTTON,"Update",10,130,70,25);
}
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()
{
Invalidate();
//UpdateWindow();
}
void TMyWin::Paint(TDC& dc,BOOL,TRect&)
{
- for (int i=1;i<=multiLiner->GetNumLines();i++)
- {
- int lineLength= multiLiner->GetLineLength(i-1);
- txt= new char[lineLength];
- multiLiner->GetLine(txt,lineLength,i-1);
- dc.TextOut(250,50+i*20,txt);
- delete txt;
- }
}
class TMyApp:public TApplication
{
public:
TMyApp(): TApplication(){};
void InitMainWindow()
- {
- MainWindow=new TMyWin();
- }
};
int OwlMain(int,char *[])
{
return TMyApp().Run();
}
9.2.2. Задание
1) Сравните листинги программ, приводимые в 9.2.1 и в 9.1.1, уделив особое внимание на различия в конструировании однострочной и многострочной панелей редактирования.
2) Создайте и выполните приложение.
3) Создайте элемент меню прикладного окна, вызывающий однострочный или многострочный элемент редактирования.
9.3. Немного английского
to edit - редактировать
GetLine - to get a line - получить строку
GetLineLength - to get a line length - получить длину строки
10. Приложение. Классы библиотеки OWL.
10.1. Иерархия классов библиотеки OWL, используемых в пособии
10.2. Класс TApplication
Производный от класса TModule. Используется для порождения класса для объекта-приложения Windows.
Класс TApplication содержит 7 членов-данных и 35 членов-функций, из которых в данном пособии используются:
10.2.1. Член-данное:
TFrameWindow *MainWindow; - - public
Указатель на главное окно приложения.
10.2.2. Член-функции:
virtual void InitApplication(); - - protected
Выполняет любую инициализацию, необходимую только для первого экземпляра приложения. По умолчанию InitApplication ниего не выполняет.
virtual void InitInstance(); - - - protected
Выпоняется для каждого экземпляра приложения. InitInstance вызывает InitMainWindow, а затем создает и высвечивает на экране главное окно путем вызова соответственно TWindow::Create и TWindow::Show.
virtual int Run(); - - - public
Инициализирует экземпляр приложения, вызывая InitApplication для первого экземпляра и InitInstance для всех остальных. Если инициализация прошла успешно, Run вызывает MessageLoop и запускает приложение.
virtual void InitMainWindow(); - - protected
По умолчанию InitMainWindow создает обобщенный объект - главное окно с именем приложения в качестве заголовка. Для создания требуемого главного окна необходимо переопределить InitMainWindow, не забыв сделать ссылку в MainWindow на созданное главное окно (класса TFrameWindow).
TAplication( const far*name=0); - - public
Этот конструктор создает объект класса TApplication.
name - указатель на имя приложения.
Этот конструктор используется в теле функции OwlMain.
... автоматизации, которые не описаны в интерфейсе IDispatch. Var Object: Variant; Object := CreateOleObject('Word.Application'); Использование экземпляра сервера автоматизации, то есть вызов его методов, осуществляется с помощью конструкций, обычных для вызова методов в Delphi: <Ссылка на сервер>.<Название метода>(<Список параметров>); Однако механизм, используемый для ...
... требования: Процессор – Pentium 400 MHz. Оперативная память – 512 Mb. Жесткий диск – 10 Gb. Операционная система – Windows XP Professional Программное обеспечение – Borland Database Engine. 2. Разработка рабочего проекта 2.1 Разработка программы Программа, моделирующая игру «Нечет» и «Чет» разработана на языке Object Pascal в визуальной среде Delphi 6. Проект содержит одно окно- ...
... мире. Внутренняя схема - это сама база данных. Отсюда вытекают основные этапы, на которые разбивается процесс проектирования базы данных информационной системы: Концептуальное проектирование - сбор, анализ и редактирование требований к данным. Для этого осуществляются следующие мероприятия: обследование предметной области, изучение ее информационной структуры выявление всех фрагментов, каждый ...
... из контекстного меню или из меню Run, закрыть приложение и лишь затем вносить изменения в проект. В этом случае уменьшится вероятность потери ресурсов Windows. Компоненты Borland C++ Builder Выбор компонентов для групповых операций Для эффективной разработки пользовательских интерфейсов приложений C++ Builder нередко возникает необходимость в манипулировании компонентами на формах. ...
0 комментариев