Середовище програмування Delphi

После размещения компонента на форме система Delphi автоматически вносит изменения в файлы модуля и описания. В описание класса формы (файл модуля) для каждого нового компонента добавляется строчка формата

Создание интерфейса приложения

Розробка додатка

Delphi відноситься до систем візуального програмування, що називаються також системами RAD (Rapid Application Development — швидка розробка додатків). Розробка додатка в Delphi включає два взаємозалежних етапи:

Об створення інтерфейсу додатка;

П визначення функціональності додатка.

Інтерфейс додатка визначає спосіб взаємодії користувача і додатки, тобто зовнішній вигляд форми (форм) при виконанні додатка і те, яким образом користувач керує додатком. Інтерфейс конструюється шляхом розміщення на формі компонентів, називаних интерфейсными або керуючими компонентами (елементами). Створюється інтерфейс додатка за допомогою Конструктора форми.

Функціональність додатка визначається процедурами, що виконуються при виникненні визначених подій, наприклад, що відбуваються при діях користувача з керуючими елементами форми.

Таким чином, у процесі розробки додатка на форму містяться компоненти і для них установлюються необхідні властивості і створюються оброблювачі подій.

 

Интерфейс приложения составляют компоненты, которые разработчик выби­рает из Палитры компонентов и размещает на форме, т. е. компоненты яв­ляются своего рода строительными блоками. При конструировании интер­фейса приложения действует принцип WYSIWYG (What You See Is What You Get — что видите, то и получите), и разработчик при создании прило­жения видит форму почти такой же, как и при его выполнении.

Компоненты являются структурными единицами и делятся на визуальные (видимые) и невизуальные (системные). При этом понятия "видимый" и "невидимый" относятся только к этапу выполнения, на этапе проектирования видны все компоненты приложения.

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

К невизуальным компонентам относятся компоненты, выполняющие вспо­могательные, но не менее важные действия, например, таймер Timer или набор данных Table (компонент Timer позволяет отсчитывать интервалы времени, а компонент Table представляет собой записи таблицы базы данных).

При создании интерфейса приложения для каждого компонента выполня­ются следующие операции:

П выбор компонента в Палитре компонентов и размещение его на форме; П изменение свойств компонента.

Разработчик выполняет эти операции в окне Конструктора формы, исполь­зуя Палитру компонентов и Инспектор объектов. При этом действия разра­ботчика похожи на работу в среде графического редактора, а сам процесс создания интерфейса приложения больше напоминает конструирование или рисование, чем традиционное программирование. В связи с этим часто ра­боту по созданию интерфейса называют не программированием, а конст­руированием.

Выбор компонента в Палитре выполняется щелчком мыши на нужном ком­поненте, например кнопке Button, в результате чего его пиктограмма при­нимает утопленный вид. Если после этого щелкнуть на свободном месте формы, то на ней появляется выбранный компонент, а его пиктограмма в Палитре принимает обычный вид. Пиктограммы компонентов отражают назначение компонентов, и при наличии небольших практических навыков выбор нужного компонента происходит достаточно быстро. Кроме того, при наведении на каждый компонент указателя мыши отображается текст с ин­формацией о его назначении.

Обозначения типов объектов в Delphi, в том числе и компонентов, начина­ются с буквы т. Иногда типы используются вместо названий для обозначе­ния компонентов. Мы же в данной книге будем использовать для компо­нентов именно названия, а не типы, т. е. Button, а не TButton, Label, а не

TLabel.

<Название компонентам <Тип компонентам

Название нового компонента является значением его свойства Name, а тип совпадает с типом выбранного из Палитры компонента. Например, для кнопки Button эта строчка первоначально будет иметь вид:

Buttonl: TButton;

В файле описания для кнопки Button может быть записан следующий код:

object Buttonl: TButton

Left = 88

Top = 120

Width =75

Height = 25

Caption = 'Buttonl'

TabOrder = 0 end

Для размещения на форме нескольких одинаковых компонентов удобно пе­ред выбором компонента в Палитре компонентов нажать и удерживать кла­вишу <Shift>. В этом случае после щелчка мыши в области формы и разме­щения там выбранного компонента его пиктограмма в Палитре остается утопленной, и каждый последующий щелчок на форме приводит к появле­нию на ней еще одного такого же компонента. Для отмены выбора данного компонента достаточно выбрать другой компонент или щелкнуть мышью на изображении стрелки в левом углу Палитры компонентов.

После размещения компонента на форме можно с помощью мыши изме­нять его положение и размеры. В случае нескольких компонентов можно выполнять выравнивание или перевод того или иного компонента на перед­ний или задний план. При этом действия разработчика не отличаются от действий в среде обычного графического редактора. Одновременное выде­ление на форме нескольких компонентов можно выполнить щелчком мыши при нажатой клавише <Shift>.

По умолчанию компоненты выравниваются на форме по линиям сетки, что определяет флажок Snap to grid (Выравнивать по сетке), входящий в набор параметров интегрированной среды разработки. В ряде случаев этот флажок приходится отключать, например, при плотном размещении компонентов на форме. По умолчанию шаг сетки равен восьми пикселам, а сетка при проектировании отображается на поверхности формы. Необходимость вы­равнивания по сетке, видимость сетки (переключатель Display grid(Отображать сетку)) и размер шага сетки по горизонтали и вертикали уста­навливаются на вкладке Preferences(Параметры) диалогового окна Environment Options(Параметры среды), вызываемого одноименной коман­дой меню Tools(Средства).

Внешний вид компонента определяется его свойствами, которые становятся доступными в окне Инспектора объектов, когда компонент выделен на форме и вокруг него появились маркеры выделения (рис. ). Доступ к свойствам самой формы осуществляется аналогично, однако в выбранном состоянии форма не выделяется маркерами. Для выделения (выбора) формы достаточно щелкнуть в любом ее месте, свободном от других компонентов.

Рис.Доступ к свойствам компонента

 

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

В левой части окна Инспектора объектов приводятся названия всех свойств компонента, которые доступны на этапе разработки приложения. Справа для каждого свойства стоит его значение. Отметим, что кроме этих свойств компонент может иметь и свойства, которые доступны только во время вы­полнения приложения.

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

Управление свойствами в процессе проектирования заключается в измене­нии значений свойств компонентов непосредственно в окне Конструктора формы ("рисование") или с помощью Инспектора объектов.

Разработчик может изменить значение свойства компонента, введя или вы­брав нужное значение. При этом одновременно изменяется соответствую­щий компонент, т. е. уже при проектировании видны результаты сделанных изменений. Например, при изменении названия кнопки (свойство caption) оно сразу же отображается на ее поверхности.

Для подтверждения нового значения свойства достаточно нажать клавишу <Enter> или перейти к другому свойству или компоненту. Отмена измене­ний производится клавишей <Esc>. Если свойству введено недопустимое значение, то выдается предупреждающее сообщение, а изменение значения

отвергается. Изменения свойств автоматически учитываются в файле описа­ния формы, используемом компилятором при создании формы, а при изме­нении свойства Name изменения вносятся и в описание класса формы.

Каждый компонент для большинства своих свойств, например, color (цвет), Caption (название) и visible (видимость), имеет значения по умолчанию.

Для обращения к компоненту в приложении предназначено свойство Name, которое образуется автоматически следующим образом: к названию компо­нента добавляется его номер в порядке помещения на форму. Например, первая кнопка Button получает имя Buttonl, вторая — Button2 и т. д. Пер­воначально от свойства Name получает свое значение и свойство Caption.

Обычно разработчик дает компонентам более информативные имена, чем имена по умолчанию. При этом целесообразно включать в имя данные о типе компонента и его назначении в приложении. Так, кнопке типа TButton, предназначенной для закрытия окна, может быть присвоено имя btnciose или ButtonCiose. Каждый разработчик самостоятельно устанавли­вает удобные правила именования компонентов. В данной книге для про­стоты мы будем часто использовать имена по умолчанию, например, Formi, Buttonl ИЛИ Editl.

Свойства, связанные с размерами и положением компонента (например, Left и Тор), автоматически изменяют свои значения при перемещении компонента мышью и смене его размеров.

Если на форме выделено несколько компонентов, то в Инспекторе объектов доступны свойства, общие для всех этих компонентов. При этом сделанные в Инспекторе объектов изменения действуют для всех выделенных компо­нентов.

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

П Простой (текстовый) — значение свойства вводится или редактируется как обычная строка символов, которая интерпретируется как числовой или строковый тип Delphi; используется для таких свойств, как Caption, Left, Height И Hint.

П Перечисляемый — значение свойства выбирается из раскрывающегося списка. Список раскрывается щелчком на стрелке, которая появляется при установке курсора в области значения свойства. Можно не выбирать, а ввести с помощью клавиатуры нужное значение, однако на практике это обычно не делается, т. к. допускаются только предлагаемые значения. Кроме того, возрастает трудоемкость и увеличивается вероятность ошиб­ки. Используется для таких свойств, как Formstyle, visible и ModalResult.

О Множественный — значение свойства представляет собой комбинацию значений из предлагаемого множества. В Инспекторе объектов слева от названия свойства множественного типа стоит знак "+". Формирование значения свойства выполняется с помощью дополнительного списка, раскрываемого двойным щелчком на названии свойства. Этот список со­держит перечень всех допустимых значений свойства, справа от каждого значения можно указать True или False. Выбор True означает, что дан­ное значение включается в комбинацию значений, a False — нет. Ис­пользуется ДЛЯ таких СВОЙСТВ, как Borderlcons И Anchors.

П Объекта — свойство является объектом и, в свою очередь, содержит другие свойства (подсвойства), каждое из которых можно редактировать отдельно. Используется для таких свойств, как Font, items и Lines. В области значения свойства-объекта в скобках указывается тип объекта, например, (т-Font) или (TSrings). Для свойства-объекта слева от названия может стоять знак "+", в этом случае управление его свойствами выпол­няется так же, как и для свойства множественного типа, т. е. через рас­крывающийся список. Этот список в левой части содержит названия подсвойств, а в правой — значения, редактируемые обычным способом. В области значения может отображаться кнопка с тремя точками. Это означает, что для данного свойства имеется специальный редактор, кото­рый вызывается нажатием на эту кнопку. Так, для свойства Font откры­вается стандартное окно Windows для установки параметров шрифта.

При выполнении приложения значения свойств компонентов (доступных в окне Инспектора объектов) можно изменять с помощью операторов при­сваивания, например, в обработчике события создания формы. Так, измене­ние заголовка кнопки Buttoni можно выполнить следующим образом:

Buttonl.Caption := 'Закрыть';

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

Отметим, что существуют свойства времени выполнения, недоступные через Инспектор объектов и с которыми можно работать только во время выпол­нения приложения. К таким свойствам относятся, например, число записей RecordCount набора данных или поверхность рисования canvas визуального компонента.