p align="left">- 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-документу), загружает его в окно браузера тем. Для перехода к предыдущему или следующему разделу предусмотрены кнопки "Предыдущая", "Следующая" при нажатии которых вызывается событие TForm2::SpeedButton2Click и TForm2::SpeedButton3Click соответственно. В программе предусмотрены функции выбора шрифта, поиска, отображения всплывающих подсказок, а так же сохранение выбранной темы в *.txt фаил. Для изменения шрифта следует выбрать Опции -> Шрифт после чего запускается стандартное окно выбора шрифта FontDialog в котором можно выбрать шрифт, стиль, размер, видоизменение и цвет текста отображаемого на главной форме. Для поиска следует выбрать Опции -> Поиск после чего запускается стандартное окно поиска FindDialog в котором можно задать текст для поиска (поиск осуществляется в открытом в данный момент разделе). Отображение всплывающих подсказок может быть включено и отключено, которое осуществляется при выборе Опции -> Всплывающие подсказки. Сохранение осуществляется путём выбора нужной темы(отобразить на экране) и нажать в правом нижнем углу кнопку сохранить. Далее выбрать путь сохранения файла. При закрытии главной формы вызывается событие TForm2::FormClose, которое вызывает функцию Application->Terminate(). 4.3 Модули реализации В разработанный проект входят одиннадцать модулей - файл проекта (головная программа - файл Project1.cpp), заголовочный файл пригласительной формы (описание класса TForm1-- файл Unit1.h), файл с реализацией функций-членов класса TForm1 (файл Unit1.cpp),заголовочный файл главной формы (описание класса TForm2-- файл Unit2.h), файл с реализацией функций-членов класса TForm2 (файл Unit2.cpp), заголовочный файл формы об авторе (описание класса TForm3-- файл Unit3.h), файл с реализацией функций-членов класса TForm3 (файл Unit3.cpp), заголовочный файл формы о программе (описание класса TForm4-- файл Unit4.h), файл с реализацией функций-членов класса TForm4 (файл Unit4.cpp). 4.4 Взаимосвязь модулей Наиболее распространенная связь, которая может существовать между двумя модулями, - компиляционная зависимость. В C++ такая зависимость указывается директивой #include (файл Form2.cpp содержит директиву #include ко всем модулям программы) 4.5 Тестирование Тестирование программы проводилось в процессе разработки программы и по завершению этой разработки. В ходе тестирования проверялась работоспособность каждой операции, которую выполняет программа, моделировались все возможные действия пользователей и проверялась реакция программы на них. 5 Описание применения 5.1 Назначение программы Данная программа представляет собой программно-педагогическое средство и предназначена для изучения материалов по предмету C++. 5.2 Область применения Разработанный программный продукт может применяться как одиночным пользователем в целях самостоятельной проработки материала по языку С++, так и в учебных заведениях в качестве вспомогательного средства в учебном процессе. 5.3 Система помощи В программе реализована всплывающая справка. Заключение Поставленная задача выполнена полностью. Разработанный электронный учебник можно успешно применять на практике, внедряя его в учебный процесс. Однако, как и в любом приложении в программе описанной выше имеются множество недостатков. В частности у программы отсутствует возможность контроля знаний путем проведения тестирования, что не является плюсом представленного продукта. Кроме того, пользовательский интерфейс продуман не достаточно профессионально, что вызвано отсутствием опыта у разработчика. Несмотря на указанные недостатки, реализованное программное средство пригодно для использования в ходе учебного процесса и для самостоятельного изучения тем по предмету язык программирования C++. В дальнейшем при необходимости его можно легко модернизировать и доработать, так как при разработке соблюдался единый удобный для понимания стиль программирования. Список использованных источников 1. Либерти, Джесс. Освой самостоятельно С++ за 21 день: 3-е изд, пер. с англ.: Уч. пос. -- М.: Издательский дом «Вильямс», 2000. -- 816 с.: ил. -- Парал. тит. англ. 2. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на С++. 2-е изд.: Пер. с англ. - М.: Издательство Бином, СПб.: Невский диалект, 1999. 3. Прата Стивен. Язык программирования C++. Лекции и упражнения.Учебник.: Пер. с англ. - М.: Издательство Диасофт, 2004. Приложение А Текст программы //файл с головной программой Project1.cpp //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop USEFORM("Unit1.cpp", Form1); USEFORM("Unit2.cpp", Form2); USEFORM("Unit3.cpp", Form3); USEFORM("Unit4.cpp", Form4); //--------------------------------------------------------------------------- #include "Unit1.h" HRGN Rgn; //--------------------------------------------------------------------------- WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
Страницы: 1, 2, 3
|