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

Лекция 5. Библиотека визуальных компонентов. Описание компонентов vcl

ПОНЯТИЕ КОМПОНЕНТА

Понятие компонента является фундаментальным для Delphi.

Без компонентов все преимущества визуальной разработки приложения исчезают.

Существует два взгляда на компонент.

1. Компоненты – это экземпляры классов, порожденных прямо или косвенно от класса TComponent и имеющие опубликованные (published) свойства.

Экземпляры других классов – это объекты.

Среди опубликованных свойств компонентов обязательно присутствует имя (name), под которым экземпляр компонента представлен в Инспекторе объектов.

Разница между компонентом и объектом:

компонентом можно манипулировать на форме, объектом – нет.

Например объект TFont используется как свойство компонентов, имеющих текст (Label, Edit и др.).

Можно сказать: компонент - это объект + его программная визуализация на экране.

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

Это: кнопки, метки, строки редактора и т.д.

Компоненты делится на визуальные и невизуальные.

Визуальные компоненты – это управляющие элементы пользовательского интерфейса (кнопки, метки и т. д).

Они видны на экране и выглядят одинаково на стадии проектирования и во время работы приложения.

Невизуальные компоненты – работают, но их не видно на экране (таймер, компоненты доступа к базам данных и др.).

На стадии проектирования невизуальный компонент представлен на форме небольшим значком.

Его свойства устанавливают в Инспекторе объектов.

Некоторые компоненты имеют отображение на экране (например, MainMenu отображает строку главного меню).

Основные характеристики компонента (как экземпляра класса):

  • свойства,

  • методы,

  • события.

СВОЙСТВА КОМПОНЕНТА

Свойства описывают состояние компонента.

Свойство – это атрибут компонента, которое определяет, как компонент отображается на экране или как функционирует.

Свойства бывают изменяемые (для чтения и записи) и неизменяемые (только для чтения).

В зависимости от времени установки свойства подразделяются на:

свойства времени проектирования,

свойства времени выполнения.

Свойства времени проектирования устанавливаются для каждого компонента в Инспекторе объектов и определяют начальное состояние компонента.

Во время выполнения приложения эти свойства могут быть изменены программно.

Соответственно изменится вид и поведение компонента.

Свойства времени выполнения – это свойства, которые не отражены в Инспекторе объектов и управлять ими можно только программно.

С точки зрения языка Object Pascal свойства времени проектирования объявлены в секции класса published,

свойства времени выполнения – в секции public.

МЕТОДЫ КОМПОНЕНТА

Методы - это действия, выполняемые компонентом.

Вызовы методов компонентов помещаются в исходный код программы и происходят только во время выполнения приложения.

Методы не имеют под собой визуальной основы.

СОБЫТИЯ КОМПОНЕНТА

События – это обратные связи компонента.

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

ИЕРАРХИЯ VCL

TObject

TPersistent

TStrings

TComponent

TMenu

TControl TGraphicControl

TTimer TWinControl

TApplication

TCommonDialog

TGraphicsObject

TCanvas

TGraphics

TPicture

TObject

TPersistent

TStrings

TComponent

TMenu

TControl TGraphicControl

TTimer TWinControl

TApplication

TCommonDialog

TGraphicsObject

TCanvas

TGraphics

TPicture

КЛАСС TObject

Обеспечивает фундаментальные основы поведения всех объектов.

Класс инкапсулирует методы, которые:

создают и разрушают экземпляры классов, выделяя и освобождая память, инициализируют объекты.

реагируют на создание и разрушение экземпляров класса.

3. возвращают информацию об объектах и классах, к которым принадлежат эти объекты, а также информацию времени выполнения.

4. поддерживают обработку событий методами.

5. поддерживают интерфейсы, реализуемые классами.

КЛАСС TPersistent

Инкапсулирует методы:

для поддержки переносимости информации из одного объекта в другой,

для записи и чтения значений свойств объектов в потоки, в том числе и файловые (например, в файлы форм).

В классе определены виртуальные методы Assign (получить свойство) и AssignTo (назначить свойство) для копирования значений из одного объекта в другой объект того же класса:

procedure Assign ( Source: TPersistent);

Этот метод производит копирование, помещая содержимое объекта Source в тот объект, который вызвал метод.

С использованием всех возможностей Assign написаны графические объекты и буфер обмена (Clipboard).

Например, поместить битовую картинку в буфер обмена можно операцией:

Clipboard.Assign(MyBitmap)

а извлечь ее оттуда:

MyBitmap.Assign(Clipboard);

КЛАСС TComponent

- является базовым для всех компонентов.

Реализует следующие возможности:

1. интеграция с IDE (интегрированной средой разработки приложения) Delphi – возможность находится в Палитре компонентов,

2. поддержка свойств принадлежности, т.е. управления другими компонентами,

3. поддержка сохраняемости и восстанавливаемости (реализованная в классе TPersistent).

4. поддержка технологии Com – возможности импорта/экспорта компонентов Delphi в компоненты ActiveX.

Так как Delphi реализует файлы форм, используя потоки, то класс TComponent порожденный от TPersistent, предоставляет всем компонентам способность сохраняться в файле.

Класс TComponent содержит несколько свойств и методов, общих для всех потомков:

каждый компонент обладает собственный именем (идентификатором). Под этим именем он находится в списке Инспектора объектов, в программном коде:

property Name : TComponentName; TComponentName = string[63];

Имя компонента не может быть пустой строкой.

В модуле не может быть двух компонентов с одинаковыми именами.

Система сама дает имя компоненту и лучше его оставлять без изменения.

В каждом компоненте опубликовано также свойство

property Tag : LongInt;

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

ГЛОБАЛЬНЫЕ ОБЪЕКТЫ

С любой запущенной программой связываются от 2 до 5 глобальных объектов:

Application ( модуль Forms),

Screen ( модуль Forms),

Printer (модуль Printers),

Session (модуль DBTables),

Clipboard (модуль Clipbrd).

ОБЪЕКТ APPLICATION

Объект Application: TApplication инкапсулирует важнейшие свойства и методы программы.

Объект Application – посредник между программой и ОС Windows.

Реализует :

диспетчеризацию сообщений Windows,

контекстную справочную службу,

обработку клавиш быстрого доступа,

исключительные ситуации и т.д.

Некоторые методы класса TApplication:

MessageBox (Text, Caption: PChar; Flags: LongInt) : integer; - создает и показывает диалоговое окно:

- Text – сообщение в окне,

- Caption – заголовок окна,

- Flags – произвольная комбинация значений:

mbYesNo – вставляет кнопки Yes, No,

mbIconHand – вставляет значок Стоп,

mbYesNoCancel – вставляет кнопки Yes, No, Cancel,

mb_IconQuestion - вставляет значок в виде знака вопроса и т.д.

Пример:

Application.MessageBox ('text in window', 'zagolovok window', mb_IconQuestion +

mb_YesNo);

ОБЪЕКТ SCREEN

Объект Screen : TScreen инкапсулирует свойства и методы, упрощающие работу с экраном, изменяет раскладку клавиатуры (всегда запускать русскоязычную), работу с множеством экранов и др.

ОБЪЕКТ PRINTER

Объект Printer - (автоматически создается, если подключен модуль Printers) – предоставляет все необходимое для вывода данных на печать.

ОБЪЕКТ CLIPBOARD

Объект Clipboard - (автоматически создается, если подключен модуль Clipbrd) - инкапсулирует свойства и методы для работы с буфером обмена.

Описание компонентов VCL

КНОПКИ

Группа элементов управления – кнопок велика и разнообразна. Здесь и стандартные кнопки Windows, кнопки с картинками, диалоговые кнопки и группы кнопок.

Основным событием, связанным с нажатием кнопки, является OnClick.

Текст кнопки определен в свойстве

Caption :string;

Если в составе текста есть &, то следующий за ним символ используется в акселераторе (Alt+<символ>): &File, то Alt+F

Кнопки в окне могут работать, кроме мыши, и от клавиатуры

и быть кнопкой ввода “Ok”,

либо – отмены, “Cancel”.

Для этого используются свойства кнопки:

Default : Boolean; (кнопка ввода при True)

Cancel : Boolean; (кнопка отмены при True)

По умолчанию они установлены в False.

Пример: на форму установим кнопку, напишем обработчик события OnClick : Close;

Если у кнопки установить свойство Default в значение True, то она будет срабатывать и по нажатию клавиши Enter (стандартным названием такой кнопки будет OK).

(А если установить свойство Cancel=True, то кнопка будет срабатывать от нажатия Esc).

КОМПОНЕНТ TButton

Основная кнопка:

Button : TButton;

Все, что говорилось выше, относится и к этой кнопке.

Компонент BitBtn

Компонент BitBtn (вкладка Additional) является потомком TButton.

Кнопка имеет пиктограмму и ряд дополнительных удобств.

Свойство кнопки ModalResult используется при работе с модальными формами – разновидность окон, предназначенных для выбора пользователем одного или нескольких ответов: mrOk, mrNo, mrIgnore, mrAbort и др.

Завершение модального окна диалога выполняется установкой ненулевого значения в свойстве ModalResult (оно доступно из программы). Анализируя это свойство, программа «узнает» какую кнопку нажал пользователь и в соответствии с этим направляет вычисления.

Определены стандартные виды кнопок

property Kind : TBitBtnKind;

bkCustom,

bkOk,

bkHelp,

bkYes, bkNo,

bkClose,

bkAbort и др.

Для каждой из них определены передаваемый форме результат (свойство ModalResult):

mrOk, mrCancel, mrYes, mrNo, mrAbort, mrRetry, mrIgnore, mrAll,

а также название и картинки для разных состояний.

Поместим на форму кнопку BitBtn и установим свойство Kind=bkCancel

Если в обработчике OnClose кнопки написать

if ModalResult = mrCancel then Close;

то форма закроется при нажатии и на клавишу Esc.

Более того, некоторые кнопки сразу же совершают действие (свойство Kind).

Кнопка вида bkClose закрывает форму, вызывая метод Close.

Кнопка bkHelp осуществляет инициализацию систему помощи со своим контекстом.

Glyph – смена пиктограммы кнопки.

Кнопка также имеет свойства Caption, ModalResult, Default и Cancel.

Статус Default получают кнопки вида bkOk, bkYes,

а Cancel – кнопки видов bkCancel, bkNo

Компонент TRadioButton

Радио кнопка – это кнопка с зависимой фиксацией.

Особенностью их является механизм включения.

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

Checked :Boolen; - определяет, нажата ли данная кнопка. При изменении этого события, генерируется событие OnClick.

Пример: Сделаем переключатель между тремя картинками (см. глава 4 пособия) и разработаем общий (один на все кнопки) обработчик событий.

Выделить всю группы кнопок (можно рамкой)

Вставить программный код в событие OnClick кнопки:

procedure TForm1.RadioButton1Click(Sender: TObject);

begin

Image1.visible:= radioButton1.Checked;

Image2.visible:= radioButton2.Checked;

Image3.visible:= radioButton3.Checked;

end;

property Alignment: TLeftRight; - выравнивание текста радио-кнопки

и может производится по левому и правому краю.

Компонент SpeedButton

Это кнопка с изображением может иметь как зависимую, так и независимую фиксацию.

GroupIndex : Integer; - определяет поведение этих кнопок.

Если GroupIndex равен 0, у кнопки нет фиксации и она не зависит от других кнопок, принадлежащих тому же родительскому элементу.

Кнопки в группе, т.е. с одинаковым ненулевым значением GroupIndex, имеют зависимую фиксацию.

Property Glyph – загрузка картинки.

property Down : Boolean; - определяет, нажата ли кнопка.

(пример рассмотрен в главе 4 пособия)

Компонент TRadioGroup

Готовая группа радио-кнопок, содержащая все средства для управления ими.

Каждая радио-кнопка в группе наследует все свойства TRadioButton. Радио-кнопки могут располагаться в несколько рядов.

Columns: Integer; - устанавливает число столбцов (<16).

ItemIndex: Integer; - индекс нажатой кнопки. Индекс исчисляется от 0.

Если = -1, ни одна кнопка не нажата.

Items: TStrings; - набор строк с заголовками

КОМПОНЕНТ TSpinButton

Расположен на вкладке Samples.

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

Компонент не имеет заголовка.

Рисунки можно менять, используя свойства

property DownGlyph: Tbitmap;

property UpGlyph: Tbitmap;

Кнопка не имеет события OnClick.

При нажатии на кнопки возникают соответственно события:

OnUpClick,

OnDownClick.

Этот компонент может работать только в паре с другими компонентами, например, редактором Edit.

КОМПОНЕНТ SpinEdit

Расположен на вкладке Samples.

Имеет редактор и двунаправленные стрелки для перебора целых чисел в диапазоне, установленном в свойствах MinValue и MaxValue.

(работа показана в главе 4 пособия)

КОМПОНЕНТ CheckBox

Это независимые переключатели (страница Standard).

Используются для установки параметров, характеризуемых двумя условиями – «Да» и «Нет».

Checked – определяет, включен ли переключатель.

Caption - текст рядом с переключателем.

Например:

if CheckBox1.Checked then

Form1.Image1.Visible :=True

else

Form1.Image1.Visible := False;