- •Лекция 1. Методологии программирования
- •Лекция 2. Класс и ключевые понятия
- •Лекция 3. Uml-язык. Диаграммы классов Лекция 4. Архитектура программ в различных ос. Структура приложения в Delphi. Основные категории Delphi
- •Лекция 5. Библиотека визуальных компонентов. Описание компонентов vcl
- •Лекция 6. Библиотека визуальных компонентов. Описание компонентов vcl (продолжение)
- •Лекция 7. Форма. Элементы управления
- •Лекция 8. Описание компонентов vcl (продолжение): Ввод и выбор значений
- •Лекция 9. ModelMaker Список литературы
Лекция 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;
|