Смекни!
smekni.com

Основы разработки электронного учебника (стр. 2 из 4)

- Tag — свойство типа int, которое не имеет предопределенного значения и может содержать любые данные или указатели, по усмотрению программиста.

Класс TComponent определяет ряд методов, которые придают объекту право владения другими компонентами и возможность доступа к ним посредством Инспектора объектов:

- Destroying и DestroyComponents устанавливают атрибуты данной компоненты и компонент, которыми она владеет, в состояние, указывающее на то, что они подлежат уничтожению.

- HasParent возвращает булево значение, указывающее на наличие родителя компоненты. Обращаться к этому методу следует до ссылок к родителю данной компоненты.

- InsertComponent добавляет компоненту, передаваемую в качестве параметра, к перечню компонент, которыми владеет данная компонента, а RemoveComponent удаляет компоненту из этого перечня.

- FindComponent возвращает указатель экземпляра компоненты, о которой известно только имя, но неизвестна ссылка на владельца

Класс TControl определяет общие для видимых компонент члены данных, методы и события.

Поскольку элементы TControl обладают способностью отображать себя, некоторые его свойства оперируют с положением, размером и видом объекта (Top, Left, Width, Height и Cursor, Hint), а другие свойства относятся к параметрам области клиента (ClientRect, ClientWidth и ClientHeight).

TControl также вводит свойства, устанавливающие видимость, доступность, цвет и шрифт элементов управления (Visible, Enabled, Color и Font). Свойства Text и Caption обеспечивают установку редактируемых текстов и названий.

Наличие свойства Parent (Родитель), содержащего соответствующую ссылку, обусловлено возможностью класса TControl иметь родителя. Этот родитель может быть производным от TWinControl, поскольку родители обязаны быть оконными элементами управления.

TControl содержит ряд событий, возникающих при манипуляциях мышью над, видимыми элементами управления (OnClick, OnDblClick, OnMouseDown, OnMouseMove, OnMouseUp, OnDragOver, OnDragDrop и OnEndDrag).

Большинство компонент являются производными от TWinControl или TGraphicControl. Эти базовые классы рассматриваются ниже.

Класс TWinControl инкапсулирует оконные элементы управления с дескрипторами. Некоторые производные от TWinControl (компоненты TEdit, TListBox и TComboBox) инкапсулируют стандартные элементы управления Windows — поля редактирования, простые и комбинированные списки и т.д. Поэтому программисту не придется манипулировать с ними посредством стандартных функций Windows API, а пользоваться свойствами и методами, предоставляемыми самими компонентами.

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

- Brush. Управляет цветом и орнаментом канвы, используемой при заливке графических фигур и фона.

- Controls. Содержит список элементов управления, для которых TWinControl является родителем.

- ControlCount. Содержит число элементов управления, для которых TWinControl является родителем.

- Ctl3d. Определяет, требуется ли трехмерное отображение компоненты.

- Handle. Ссылается на оконный дескриптор объекта Windows, который инкапсулирует TWinControl. Это свойство передается тем стандартным функциям Windows API, которые принимают дескриптор как параметр.

- HelpContext. Задает номер контекстной справки, соответствующий некоторому окну в файле помощи с расширением .hlp. Это свойство позволяет организовать контекстно-чувствительный поиск в справочной службе для отдельных компонент.

- Showing. Указывает, видима или невидима компонента.

- TabStop. Указывает, можно ли использовать клавишу табуляции для выбора нужной компоненты.

- TabOrder. Определяет позиции табулятора выбора компонент.

Методы TWinControl главным образом ориентированы на разработчиков компонент и предназначены для управления фокусом, получения статусной информации, диспетчеризации сообщений и позиционирования:

- Broadcast используется для рассылки сообщений всем потомкам TWinControl.

- CanFocus возвращает булево значение, которое определяет, может ли TWinControl принять фокус ввода. Например, компонента не сможет принять фокус, если ее свойство Visible имеет значение false.

- ContainsControl определяет, содержится ли данный элемент управления внутри класса TWinControl. Этот метод не сообщает о том, является ли данный элемент потомком по отношению к TWinControl. Например, внешний класс TWinControl может быть родителем другого элемента, и эта родительская преемственность может продолжаться далее. Однако, все внутренние элементы содержатся во внешнем классе TWinControl.

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

- DisableAlign и EnableAlign используются для временного запрещения или разрешения выравнивания компонент внутри TWinControl.

- Focused возвращает значение true, если TWinControl находится в фокусе ввода, т.е. является активным элементом формы, на которой он размещен.

- HandleAllocated возвращает значение true, если элемент управления имеет оконный дескриптор. HandleNeeded создает новый дескриптор, если он еще не был создан. Аналогичное действие выполняется автоматически при прямом обращении к свойству Handle.

- InsertControl добавляет элемент управления к свойству Controls (типа массив), делая TWinControl своим родителем. Лучший способ добавить потомка во время работы программы - просто присвоить ссылку на родителя свойству Parent. RemoveControl удаляет элемент управления из Controls.

- Invalidate и Repaint выполняют перерисовку компоненты.

- SetBounds устанавливает свойства границ компоненты (Left, Top, Width, Height) для TWinControl. Прямое изменение каждого из указанных свойств менее эффективно, поскольку всякий раз сопряжено с перерисовкой

- SetFocus активизирует TWinControl.

TWinControl имеет события, вызываемые взаимодействием с клавиатурой и изменением фокуса (OnKeyDown, OnKey Press, OnKeyUp, OnEnter и OnExif).

Разрабатываемые компоненты редко происходят непосредственно от TWinControl. Лучше производить новые компоненты от общего класса TCustomControl, который предоставляет канву для рисования и обрабатывает сообщение WM_PAINT, или от некоторых более специализированных классов (TButtonControl, TCustomComboBox, TCustomEdit или TCustomListBox).

Производные от абстрактного класса TGraphicControl, в отличие от TWinControl, не имеют оконного дескриптора, не могут принять фокус ввода и не могут являться родителями других элементов управления.

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

Производные TGraphicControl имеют обработчики событий, вызываемые манипуляциями с мышью.

TGraphicControl возлагает на пользователя операции перерисовки. Этот класс содержит свойство Canvas (Канва), которое обеспечивает доступ к отведенной для рисования поверхности, и виртуальный метод Paint, который вызывается в ответ на сообщение WM_PAINT, принимаемое родительским элементом управления.

Кроме того, при работе с формами, содержанием, браузерами, панелями, кнопками, рамками и надписями используются соответственно классы TForm, TTreeView, TCppWebBrowser, TPanel, TBitBtn, TBevel и TLabel.

3.2 Иерархия классов

В разрабатываемом программном продукте присутствует иерархия классов, представленная на рисунке 1.

Рисунок 1 — Иерархия классов

3.3 Выбор и обоснование инструментов разработки

В качестве инструментального средства реализации разрабатываемого программного продукта была выбрана интегрированная среда разработки Borland C++ Builder 6.0.

Выбор данного инструментального средства не случаен и основан на том, что данная ИСР имеет ряд достоинств. Основные преимущества Borland C++ Builder по сравнению с другими средствами разработки приложений:

- Быстрота разработки приложения.

- Высокая производительность разработанного приложения за счет получения 32-разрядного исполняемого кода с помощью оптимизирующего компилятора.

- Невысокие требования разработанного приложения к ресурсам компьютера.

- Возможность полного доступа к функциям операционных систем семейства Windows.

- Возможность модернизации среды разработки за счет встраивания в нее новых компонент, инструментов, экспертов

- Удачная проработка иерархии объектов

- Использование для написания кода одного из самых популярных языков программирования С++.


4 Программная реализация

4.1 Формы входных и выходных данных

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

Выходными данными представленного электронного учебника являются экранные формы с отображением на них лекционных материалов.

4.2 Функциональные решения

Работа программы строится на взаимодействии с пользователем. Программа реагирует на поступающие в ее адрес сообщения и вызывает соответствующие обработчики событий. Эти обработчики событий и есть рабочие функции программы.

При запуске программы создается вступительная форма (Form1), которая показывает приглашение к запуску главной формы. При нажатии кнопки "Запуск учебника" (TForm1::SpeedButton1Click) запускается главная форма (Form2). На ней изображено иерархическая структура разделов, и поле для отображения теории.

Для выбора определенного раздела следует сделать двойное нажатие на интересующее название раздела после чего вызывается функция TForm2::TreeView1DblClick. Данная функция в зависимости от того, какая тема выбрана в содержании, автоматически формирует путь к файлу с темой (dat-документу), загружает его в окно браузера тем.