Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MU_k_lab_inf_ch2_PE_2011.doc
Скачиваний:
21
Добавлен:
11.04.2015
Размер:
806.91 Кб
Скачать

Лабораторная работа № 6 Визуальное программирование

Цель работы: ознакомление с технологий визуального программирования в системе программирования Delphi

Подготовка к работе

Изучить по методическим указаниям к работе и приведенной ниже литературе следующие вопросы:

  • понятия компонента и элемента управления в Delphi;

  • создание новых компонентов пользователя и включение их в палитру компонентов Delphi;

  • иерархия классов библиотеки визуальных компонентов (VCL-VisualComponentsLibrary)Delphi;

  • Назначение, основные свойства, методы и события классов:

  • TObject- базовый класс всех классовVCL;

  • TComponent,TControl,TGraficControl- базовые классы, предназначенные для разработки неоконных элементов управления. классов,

Программа работы

  • Получить задания у преподавателя, создать рабочую папку для хранения нового проекта, запустить Delphiи создать модульMyComponentдля объявления нового компонента.

  • Создать класс графического элемента управления TMyComponent.

  • Добавить в описание компонента свойства, отражающие состояние компонента StateMyComponent и/или его ориентациюOrientation.

  • Перекрыть в создаваемом классе виртуальный метод Paint, который при рисовании изображения должен учитывать текущее состояние компонента и/или его ориентацию.

  • Создать новое приложение Application1и добавить в проект разработанный модуль. Создать в приложении разработанный компонент, установить значения нужных свойств и проверить его поведение после запуска приложения на выполнение.

  • Зарегистрировать разработанный компонент в Delphiи поместить его в палитру компонентов в разделMyComponent.

  • Сделать выводы и оформить отчет по лабораторной работе. ( в отчете представить текст программы Application1и модуляMyComponent.

Контрольные вопросы

  1. Где хранятся визуальные компоненты Delphi?

  2. Какие способы создания новых компонентов вы знаете?

  3. Что такое компонент?

  4. Назовите базовые классы для проектирования компонентов.

  5. На какие два типа можно разделить компоненты?

  6. Куда помещаются зарегистрированные компоненты?

  7. В чем заключается процедура регистрации?

  8. С какой целью используется свойство Canvasкомпонентов?

  9. Какие компоненты свойства Canvasвы знаете? Назовите их назначение и их основные свойства.

  10. Перечислите последовательность действий при «ручном» создании компонента для размещения его на оконном средстве управления.

  11. Назовите различия между владельцем и родителем компонента.

Методические указания к выполнению работы

К п.1. Для создания нового модуля выберите пункт меню File|New|Unit. Затем создайте заголовок модуля и шаблон нового компонента – потомка класса TGraphicControl:

unit MyComponent;

interface

uses

Windows, Messages, SysUtils, Classes, Controls;

type

TMyComponent = class(TGraphicControl)

private

{ Private declarations }

protected

{ Protected declarations }

public

{ Public declarations }

published

{ Published declarations }

end;

implementation

end.

Компонентом может быть почти любой элемент программы, которым можно управлять во время разработки. Создание компонента означает получение нового класса из существующего класса. Класс TComponent является общим предком каждого компонента в иерархии VCL (1). TComponent обеспечивает минимум свойств и событий, необходимых для компонента. Компоненты в Delphi могут быть визуальные и невизуальные. Невизуальные компоненты должны быть потомками класса TComponent. Напротив, класс TControl (потомок TComponent) является базовым для создания визуальных элементов управления.

Рисунок 1

Визуальные компоненты в свою очередь могут быть оконные и графические. Оконные элементы управления в VCL это объекты, которые появляются во время выполнения и с которыми пользователь может взаимодействовать. Каждое оконное средство управления имеет дескриптор окна, доступный через его свойство Handle, которое позволяет Windows идентифицировать и работать с данным элементом управления. При использовании VCL дескриптор позволяет элементу управления принимать фокус ввода, и может передаваться функциям Windows API. Все оконные элементы управления являются потомками класса TWinControl.

Если элемент управления не должен принимать фокус ввода, его лучше сделать графическим средством управления. Графическое средство управления подобно оконным элементам управления, но не имеет какого-либо дескриптора окна, и поэтому потребляет меньшее количество системных ресурсов. Хотя это средство управления не может принимать фокус ввода, оно может реагировать на сообщения мыши. Delphi поддерживает создание пользовательского графического средства управления через компонент TGraphicControl. Компонент TGraphicControl это абстрактный класс, унаследованный от TControl и который предоставляет Вам холст для рисования (свойство Canvas) и обрабатывает сообщения WM_PAINT; все для того чтобы можно было переопределить метод Paint.

К п.2. Конструктор Create объявлен в классе TComponent как виртуальный метод. Перекройте конструктор класса Create и при необходимости измените в нем значения некоторых наследуемых свойств. В классах-наследниках TControl и TGraficControl он перекрывается, но не перегружается, поэтому его заголовок имеет неизменный вид:

constructor TMyComponent.Create(AOwner: TComponent);

begin

inherited; // обязательная инициализация наследуемой части

.... // инициализация объекта класса-потомка

end;

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

Владелец компонента – компонент, при уничтожении которого уничтожится и данный компонент. Этим и ограничивается связь с владельцем компонента. Форма является владельцем всех расположенных на ней компонентов. В свою очередь объект TApplication является владельцем всех форм.

К п.3. После изменения свойств состояния компонента его изображение должно измениться, поэтому необходимо выполнить его перерисовку, вызвав один из взаимозаменяемых наследуемых методов Repaint или Refresh (TControl).

К п.4. Каждый создаваемый графический элемент управления, как правило, имеет свое изображение, поэтому необходимо при описании класса перекрывать виртуальный метод Paint. Для прорисовки изображения используется свойство Canvas (тип TCanvas).

Цвет и стиль изображения задаются свойствами CanvasPen (перо) и Brush (кисть) (соответственно типы TPen и TBrush).

Само изображение формируется при помощи методов Canvas: Ellipse (нарисовать окружность или эллипс), Rectangle (прямоугольник) и т.д. Например:

procedure Paint; override;

begin

with Canvas do begin

Pen.Color:=clRed; // задать цвет пера

Pen.Width:=2; // задать ширину пера

Brush.Color:=clBlue; // задать цвет кисти

Ellipse(0,0,10,10); // нарисовать круг

end;

end;

Константы цвета определены в модуле ExtCtrls.

Для получения более подробной информации о методах и свойствах перечисленных типов данных обратитесь к справочной системе Delphi.

К п.5. Для создания нового приложения выберите пункт меню File|New|Application. Для добавления модуля к проекту выберите пункт меню Project|Add to project и выберите в появившемся диалоговом окне файл модуля MyComponent.pas.

Для проверки работоспособности неустановленного компонента необходимо:

  • прибавить название модуля компонента к предложению usesмодуля формы;

  • добавить в раздел publicформы переменную типа компонента;

  • создать обработчик события OnCreateформы. Для этого щелкните мышкой на изображении формы, затем в окне инспектора объектов выберите закладкуEventsи сделайте двойной щелчок на строкеOnCreate. Delphi автоматически предоставит вам шаблон обработчика сообщения для выбранного события;

  • создать компонент в обработчике OnCreateформы. Для этого нужно вызвать конструктор компонента и передать ему параметр, определяющий владельца компонента. В данном случае владельцем будет сама форма. Это значит, что в качестве параметра можно передать значениеSelf. При использовании в методе,Self- это ссылка на объект, который содержит метод. В этом случае, в обработчикеOnCreateформы,Selfуказывает на форму.

  • установить значение свойства Parentкомпонента. Установка свойстваParent это всегда первое необходимое действие после создания элемента управления.Parent– родительский компонент-контейнер, на котором располагается данный компонент. Контейнерами являются оконные компонент, такие, как формы, панели и другие.

  • установить любые другие свойства компонента.

Например:

unit MainF;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, MyComponent;

type

TForm1 = class(TForm)

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

MyComponent1: TMyComponent;

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

MyComponent1:=TMyComponent.Create(Self);

MyComponent1.Parent:=Self;

MyComponent1.Left:=100;

MyComponent1.Visible:=True;

end;

К п.6. Регистрация - это процесс, который сообщает Delphi, какие компоненты прибавить к его библиотеке компонентов, и на какой странице Палитры компонентов они должны появиться. Для регистрации компонента, необходимо:

  • добавьте процедуру Registerбез параметров в интерфейсную часть модуля компонента:

procedure Register;

  • напишите тело процедуры Register в разделе implementation модуля. RegisterComponents это процедура, которая получает два параметра: название страницы Палитры компонентов и набор типов компонентов:

procedure Register;

begin

{ поместить компоненты на страницу Samples }

RegisterComponents('Samples', [TCustom1, TCustom2]);

{ поместить компоненты на новую страницу }

RegisterComponents('MyPage', [TMyComponent1, TMyComponent2]);

end;

Таблица Варианты заданий к лабораторной работе №6

.№

Графический элемент управления

Класс

Свойства

Изображение

Вкл.

(Вертик.)

Выкл.

(Гориз.)

1

Светодиод

TLightDiod

StateDiod

2

Сегмент индикатора

TSegment

StateSegment

Orientation

3

Лампочка

TLamp

StateLamp

4

Тумблер верт

TSwitch

StateSwitch

5

Реостат

(плавное изменение)

TVar

StateVar

6

Переключатель

(фиксированные положения)

TSwitching

StateSwitching

7

Потенциометр

TPot

State

8

Кран

TKran

State

9

Рубильник

TRub

State

10

Кнопка

TKnop

State

12

Магнитная стрелка

TMStrel

State

13

Окно «Авария»

TOkAvar

State

15

Перемычка

TPerem

State

16

Дверка разъёма

TDwRaz

State

17

Два светодиода

State

18

Переключатель

(плавное изменение)

TSwitching

StateSwitching

19

Реостат

(фиксированные положения)

TVar

StateVar

Литература

  1. Галкин А.А., Градусов А.Б., Гришин В.С., Градусов Д.А. Программирование и основы алгоритмизации в примерах и задачах: Учебное пособие. Владимир: Изд-во Владимирского гос. ун-та.

  2. Давыдов В.Г. Программирование и основы алгоритмизации: Учебное пособие. М.: Высшая школа, 2003.423 с.

  3. Фаронов В.В. Delphi 2005. Язык, среда, разработка приложений. С-П: Питер, 2005.- 560 с.

  4. Архангельский А. Я. Программирование в Delphi 5. М.: Бином, 2000. 1070 с.

  5. Архангельский А.Я. Object Pascal в Delphi 5. М.: Бином, 1999. - 220 с.

  6. Дарахвелидзе П., Марков Е. Delphi4 – среда визуального программирования. СПб.:BHV, 1998. – 802 с.

  7. Фаронов В.В. Турбо-Паскаль (в 3-х книгах). Кн. 1. Основы Турбо-Паскаля.-М.: МВТУ.Фесто Дидактик, 1996.-304 с

  8. Епанешников A.M., Епанешников В А Программирование в среде Turbo Pascal 7.0.-M: Диалог МИФИ, 1997-208 с.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]