
- •Государственное бюджетное образовательное учреждение среднего профессионального образования Самарский техникум авиационного и промышленного машиностроения им. Д.И. Козлова.
- •Введение
- •Лабораторная работа №1
- •Цель работы
- •Программное обеспечение
- •Среда программирования Borland Delphi
- •Проект Delphi
- •Структура среды программирования
- •Инструментальные средства
- •Стандартные компоненты
- •Практическое задание
- •М етодические указания по выполнению
- •Методические указания
- •Общие рекомендации
- •Визуальные компоненты, используемые при разработке программы для лабораторной работы
- •Методические рекомендации
- •Методические рекомендации
- •Работа с кнопками.
- •Методические рекомендации
- •Иерархия библиотечных классов в Borland Delphi
- •Создание компонентов в среде Delphi
- •Способы создания компонентов
- •Процесс создания компонентов
- •Создание модуля
- •Создание описания и реализации класса для компонента
- •Тестирование не установленного компонента
- •Создание графического изображения для компонента
- •Инсталляция и деинсталляция компонента
- •Создание свойств, событий и методов компонентов
- •Работа со свойствами
- •События
- •Библиографический список
Работа с кнопками.
Для удобства работы рекомендуется создать массив из десяти указателей на кнопку, элементам которого при создании формы присвоить указатели на конкретные кнопки, созданные путем перетаскивания на форму. Это позволит адресовать кнопки по индексу.
Например,
...
var
Buttons : array[1..10]of TButton;
i:integer;
...
for i:=1 to 10 do
begin
Buttons[i]:=TButton.Create(Self);
Buttons[i].Parent:=Self;
Buttons[i].Caption:=IntToStr(i);
Buttons[i].Top:=i*30;
Buttons[i].Visible:=true;
...
end;
Разработка визуальных компонентов Delphi
Цель работы
Получение практических навыков разработки собственных компонентов.
Программное обеспечение
Borland Delphi, C++ Builder.
Практическое задание
Разработать визуальный компонент Delphi – потомок TGraphicControl, представляющий собой любую статичную картинку на форме, представленный соответствующей картинкой на панели компонентов.
Разработать визуальный компонент Delphi – потомок компонента, описанного в п.1, представляющий собой меняющуюся во времени картинку на форме.
Возможное целевое назначение таких компонентов – фирменный знак.
Методические рекомендации
Разработка новых визуальных компонентов обычно производится путем порождения классов-потомков от уже существующих в используемой библиотеке и требует как знаний концепций ООП и конкретного языка программирования, так и структуры конкретной объектно-ориентированной библиотеки компонентов
Иерархия библиотечных классов в Borland Delphi
Все компоненты Delphi являются частью иерархии классов, называемой Visual Component Library (VCL). Часть этой иерархии представлена на рисунке 7.1.
Класс TObject инкапсулирует наиболее общее поведение всех объектов в VCL и включает методы, которые обеспечивают:
возможность создавать, поддерживать и уничтожать экземпляры объектов, путем распределения, инициализации и освобождения памяти, необходимой под объект,
методы класса, предназначенные для доступа к информации класса,
поддерживает обработку сообщений.
Назначение TObject – служить базовым для всех других классов.
Многие методы TObject используются Delphi скрыто от разработчика и не вызываются разработчиком непосредственно. Другая группам методов должна быть перекрыта порождаемыми от него классами для реализации их более сложного поведения.
Экземпляры класса TObject обычно не создаются, так как большинство его методов абстрактные.
Класс TComponent является общим предком всех компонентов в VCL. Он обеспечивает минимальный набор свойств и событий необходимых, чтобы компонент мог использоваться Delphi
При создании нового компонента он добавляется в библиотеку путем порождения нового класса от одного из существующих классов иерархии.
TControl – базовый класс для всех компонентов, которые видимы во время исполнения и которыми пользователь может манипулировать во время выполнения программы. Такие компоненты называют элементами управления. Все элементы управления имеют свойства, методы и события которые, в основном, служат для обеспечения визуального аспекта, например расположения элемента управления, курсора и подсказки, связанных с элементом управления, методов отрисовки и перемещения элемента управления и обработки событий на действия от мыши. TControl имеет много защищенных свойств и методов, которые используются или публикуются в его потомках.
TWinControl – базовый класс для всех оконных элементов управления. Оконные элементы управления это те, которые:
способны получать фокус во время выполнения программы (т.е. пользователь может их выделять),
способны получать данные, вводимые пользователем в элемент с клавиатуры,
способны включать в себя другие элементы управления.
Элементы управления, которые включаю в себя другие элементы управления называют их владельцами (parent). Только оконный элемент управления может быть владельцем одного или более других компонентов.
Оконные элементы управления имеют свойство handle, которое представляет собой дескриптор окна. Дескриптор окна это идентификатор, предоставляемый Windows окну. Windows может взаимодействовать с оконным элементом управления через этот дескриптор.
Новые компоненты редко порождаются непосредственно от TWinControl. Большинство новых элементов управления создаются как потомки TCustomControl, который предоставляет возможности вывода графической информации – холст («canvas»), или как потомки более специализированных элементов управления, таких как TButtonControl, TCustomComboBox, TCustomEdit, или TCustomListBox.
TCustomControl – базовый класс для оконных элементов управления, которым необходима возможность создания сложных изображений.
Стандартный оконный элемент управления всегда «знает» как себя отобразить, так как он является частью Windows. Таким образом, кнопка или индикатор с флажком порождены непосредственно от TWinControl. Когда же создается оригинальный оконный элемент управления, который не имеет соответствующего стандартного компонента Windows, он порождается от TCustomControl, а не непосредственно от TWinControl. TCustomControl делает отрисовку оригинального элемента управления простой для программиста. TCustomControl имеет виртуальный метод Paint, который вызывается при необходимости перерисовки элемента управления (сообщение WM_PAINT). При разработке нового компонента программист помещает в этот метод действия по рисованию его элемента управления. Действия же эти он берет через свойство Canvas:TCanvas (канва или холст).
Класс TCanvas объединяет в себе «холст» (контекст графического устройства) и «рабочие инструменты» (перо, кисть, шрифт) а также набор функций по рисованию типовых геометрических фигур.
Если необходимо создать элемент управления, который не должен получать фокус ввода, то его порождают от TGraphicControl, а не от TCustomControl, чтобы избежать накладных расходов, связанных с возможностями оконного элемента управления. Отрисовка оконного элемента управления медленнее, чем отрисовка графического элемента управления.
TGraphicControl – базовый класс для элементов управления, не являющихся оконными.
Основная цель большинства графических элементов управления – отображения текста или графики. Компоненты Delphi, порожденные от TGraphicControl это: TBevel, TImage, TPaintBox, TShape, TSpeedButton, TSplitter и TCustomLabel, из которых в свою очередь порождены TDBText and TLabel.
В добавление к тому, что унаследовано от абстрактного компонента TControl, TGraphicControl имеет свойство Canvas, которое обеспечивает возможности рисования элемента управления и виртуальный метод Paint, который вызывает при необходимости его перерисовки (сообщении WM_PAINT, получаемом от владельца элемента управления).
Графический элемент управления не может получать фокус ввода, а также не может содержать в себе других элементов управления. Хотя он не может получить фокус ввода, он может реагировать на сообщения мыши.
Так как графический элемент управления не имеет дескриптора окна Windows (window handle), его потребность в системных ресурсах меньше и именно поэтому его перерисовка происходит быстрее, чем у оконного элемента управления, который имеет дескриптор окна.
Пример компонента, порожденного от TGraphicControl – TLabel.