Классы в Delphi продуманы очень хорошо. Если посмотреть на структуру всех доступных нам компонентов, то получится громадное дерево. В этой главе мы будем знакомиться с классом формы и ее свойствами. Но прежде чем перейти к этому, мы рассмотрим иерархию классов, от которых происходит форма:
- system. TObject — базовый объект для всего;
- classes.TPersistent — класс реализует возможность назначения себя другому классу;
- classes.TComponent — класс реализует функционал для не визуального компонента;
- controls .TControi — все визуальные компоненты, которые имеют форму;
- controls.TwinControi— все компоненты Windows, которые имеют идентификатор, происходят от этого класса;
- Forms. TScroiiingwinControi— базовый класс для компонентов с возможностью прокрутки;
- Forms. TCustomForm — это базовый класс для форм и диалогов.
Перед точкой можно увидеть имя модуля, в котором объявлен класс, а после точки имя класса. Классы перечислены в том порядке, в котором они наследуются,
т.е. самый первый идет TObject, его свойства и методы наследует TPersistent. Далее идет TComponent, который наследует свойства И методы TPersistent и TObject. Таким образом, функционал класса постепенно наращивается, а каждый последующий класс добавляет к функционалу что-то новое и необходимое для компонентов определенного вида.
В приложении 1 приведено описание основных компонентов, являющихся базовыми для большинства VCL-компонентов. Там же вы найдете основные свойства и методы.
Обратите внимание, что все визуальные компоненты происходят от TControi, а значит, все они будут обладать его свойствами. Возможно, что-то еще не очень понятно, но со временем все встанет на свои места. Знакомясь с компонентом, я буду показывать вам иерархию объектов, от которых он происходит.
Теперь рассмотрим класс TForm, на основе которого вы будете создавать формы для своего будущего приложения. Вы просто создаете новый класс от TForm, помещаете на него свои компоненты, добавляете функционал — и новая форма готова.
В Delphi расстановка элементов управления происходит визуально, и все делается одним нажатием клавиши мыши. Даже самый сложный пользовательский интерфейс можно сделать в считанные минуты.
Как вы уже знаете, если выделить какой-то компонент, то в объектном инспекторе появятся его свойства и события. Сейчас мы рассмотрим основные свойства и события формы. Большинство из них присутствуют и у компонентов. Поэтому в будущем уже не будем повторяться. Итак, начнем рассмотрение.
- ActiveControi — указывает на компонент, который должен быть активным по умолчанию.
- Align — выравнивание компонента.
Любой компонент может быть выровнен по одной из сторон родительского компонента (на поверхности которого он расположен). Этому свойству можно присвоить следующие значения:
- AiNone — нет выравнивания, как нарисовал, так и будет;
- AlBottom — выравнивание по нижнему краю;
- AiLef t — выравнивание по левому краю;
- AiRight — выравнивание по правому краю;
- AiTop — выравнивание по верхнему краю.
Компоненты выравниваются относительно формы, а форма выравнивается относительно экрана.
- AlphaBiend (тип свойства — логический) — свойство формы, которое означает, имеет ли форма прозрачность. Если это свойство равно true, то окно будет прозрачным. На рис. 6.1 показан пример полупрозрачного окна. Степень прозрачности задается через свойство AlphaBiendvaiue.
- AlphaBiendvaiue (тип свойства — целое число) — степень прозрачности формы. Здесь можно задавать числовое значение степени прозрачности от 0 до 255. Если поставить 0, то форма будет абсолютно прозрачной. 255 означает полную непрозрачность. Чтобы сделать форму полупрозрачной, нужно выставить какое- нибудь промежуточное значение (например, 127).

- Anchors — это свойство есть и у формы, и у компонентов.
Оно показывает, как происходит закрепление к родительскому объекту. Это свойство раскрывающееся. Если щелкнуть по квадрату слева от имени свойства, то раскроется список из четырех дополнительных свойств:
- akLef t — прикреплять левый край (по умолчанию true);
- актор — прикреплять верхний край (по умолчанию true);
- akRight — прикреплять правый край (по умолчанию f lase);
- akBottom — прикреплять нижний край (по умолчанию false).
По умолчанию прикрепление происходит по левому и верхнему краю. Это значит, что при изменении размера окна расстояние от компонента до левого верхнего угла не изменяется. Если прикрепить компонент к правой кромке окна, то при изменении размера не изменится расстояние до правой кромки.
- Autoscroii (тип свойства— логический)— указывает на то, будет ли форма автоматически производить скроллинг или нет.
- Autosize (тип свойства — логический) — если параметр равен true, то форма/ компонент будет автоматически подгонять свой размер в соответствии с содержимым.
- Bordericons — свойство, определяющее, какие кнопки должны присутствовать у окна (рис. 6.2).
Это свойство раскрывающееся. Если щелкнуть по квадрату слева от имени свойства, то раскроется список из четырех свойств:
- bisystemMenu— показать меню (иконка слева в строке заголовка окна) и другие кнопки заголовка окна;
- biMinimize — кнопка минимизации окна;
- biMaximize — кнопка максимизации окна;
- biHelp — кнопка помощи.

- Borderstyle — свойство формы. Отвечает за вид оборки окна. Это свойство мо
Для большего эффекта на форму помещена еще и кнопка, которая исчезает при пересечении с оборкой. жет принимать следующие значения:
• bsSizeable— установлено по умолчанию. Стандартное окно с нормальной оборкой, которое может изменять свои размеры (рис. 6.3);
• bsDialog — окно выглядит в виде диалога (рис. 6.4);
• bsNone — окно вообще без оборки. У такого окна нет оборки и меню, просто (квадрат с цветом фона) рабочая область;
• bssingie— на первый взгляд это простое окно, но у него нельзя изменить размеры. Оно имеет фиксированный размер, и изменять его мышкой нельзя;
• bssizeTooiwin— окно с тонкой оборкой. Особенно это заметно в заголовке окна (рис. 6.5);
• bsToolwindow — оно ничем не отличается от предыдущего (рис. 6.6). Единст-венная разница — у этого окна нельзя изменять размеры окна.
- Borderwidth — ширина оборки окна. Пока что все окна, которые здесь рассмат-ривались, имели ширину оборки, равную нулю. На рис. 6.6 показано окно с оборкой, равной 10. В центре окна растянуто на всю площадь поле для ввода текста, и несмотря на это, в окне по краям видны широкие оборки.

- caption — это строковое свойство, которое отвечает за заголовок окна. Мы уже использовали его, когда писали программу "Hello World".
? clientHeight — это свойство в виде целого числа. Показывает высоту клиентской области окна. Высота берется без учета ширины оборки и системного меню, только рабочая область.
? ciientwidth— это свойство в виде целого числа показывает ширину клиентской области окна. Ширина берется без учета ширины оборки и системного меню, только рабочая область.
- color — цвет клиентской области окна. В списке выбора есть все системные цвета, которые вы можете выбрать. Но если вы хотите использовать какой-то специфичный цвет, можете дважды щелкнуть по этому параметру, и перед вами откроется стандартное окно выбора цвета. В этом окне можно выбрать любой цвет. Но лучше использовать системные цвета.
- constraints — в этом свойстве содержатся максимальные и минимальные значения размеров окна. Таким образом, можно ограничить размеры окна, в которых оно будет изменяться. Это свойство раскрывающееся и содержит следующие параметры:
- MaxHeight — максимальная высота окна;
- Maxwidth — максимальная ширина окна;
- MinHeight — минимальная высота окна;
- Minwidth — минимальная ширина окна.
Если вы установите эти значения, то окно нельзя будет растянуть больше максимального размера и уменьшить меньше минимального.
- cti3D — (тип свойства — логический) — указывает показывать окно/компонент в псевдо-ЗО-плоскости или нет. Этот параметр остался еще от Windows 3.1, когда он действительно имел смысл. Сейчас даже если вы отключите 3D, окно сильно не изменится. Поэтому про это свойство можно забыть.
- cursor — это свойство отвечает за курсор, который будет отображаться при наведении указателя мыши на форму/компонент. Здесь могут быть, как показано в табл. 6.1, доступны несколько форм курсоров.

- Docksite— (тип свойства— логический)— указывает, можно ли на форму/ компонент бросать другие компоненты с помощью Drag & Drop. Это свойство создает эффект, который вы могли наблюдать в MS Office, когда панели инструментов можно отрывать от формы и прикреплять обратно. Это свойство как раз и разрешает прикреплять компоненты.
- cursor — это свойство отвечает за курсор, который будет отображаться при наведении указателя мыши на форму/компонент. Здесь могут быть, как показано в табл. 6.1, доступны несколько форм курсоров.
- DragKind — вид перетаскивания объекта при Drag & Drop. Здесь вам доступны два варианта:
- dkDrag — стандартный Drag & Drop, при котором объект остается на месте. Этот тип удобен при копировании объектов. Вы как бы перетаскиваете компонент на то место, где должна быть создана копия, но при этом исходный объект остается на месте;
- dkDock — перетаскивает сам объект. Этот параметр следует выбрать, если нужно, чтобы компонент мог прикрепляться к другим компонентам или форме. В примере к предыдущему свойству панель имеет именно такое свойство, чтобы могла прикрепиться к форме.
- DragMode — режим Drag & Drop. Здесь доступны также два варианта:
- dmManual — ручной режим. При таком режиме вы сами должны запускать перетаскивание объекта;
- dmAutomatic — режим Drag & Drop. Он будет включаться автоматически, если пользователь начал перетаскивать компонент мышью. При этом не нужно писать дополнительный код, как при ручном режиме.
- Enabled— (тип свойства— логический)— определяет доступность компонента. Если это свойство равно true, то пользователь может работать с этим компонентом. Иначе компонент недоступен, окрашен серым цветом, и вы, как пользователь, не сможете его использовать (например, рис. 6.7). Если это кнопка, то вы не сможете на нее нажать.
Font — шрифт, используемый при выводе текста на форме. Если вы дважды щелкнете по этой строке, то перед вами появится стандартное окно Windows выбора шрифта.
Formstyle— стиль формы. Здесь доступны для выбора следующие варианты:
- fsNormai — нормальное окно;
- fsMDiForm— окно является родительским для MDI-окон. Если вы помните старый Office, то должны знать, что там внутри основного окна можно было перемещать другие окна. Эти окна относятся к классу MDI — мультидоку- ментные окна. Хотя Microsoft не рекомендует использовать MDI-окна, и вроде как сама отказалась от их использования, но в Windows 2000, ХР и даже в Windows 7 консоль ММС выполнена именно так (рис. 6.8). В некоторых
случаях многодокументная архитектура остается неизменной и будет жить еще долго;
- fsMDichild— окно является дочерним MDI-окном. fsMDiForm создает главное окно, a fsMDichild создает дочернее, т. е. то окно, которое будет внутри главного;
- FsstayOnTop— окно с этим параметром всегда будет находиться поверх остальных.
? Height (тип свойства — целое число) — высота окна.
? Hint (тип свойства— строка)— текст подсказки, который будет появляться в строке состояния при наведении указателя мыши на форму/компонент.
? HorzScroiiBar— параметры горизонтальной полосы прокрутки. Этот параметр пока не будет рассматриваться, потому что если его раскрыть, то там будет столько настроек, что это тема для отдельного разговора.

icon — иконка, отображающаяся в заголовке окна. Если дважды щелкнуть по этому свойству, то появится окно загрузки иконки (рис. 6.9). В этом окне есть ряд кнопок:
- Load — загрузить иконку из файла;
- save — сохранить иконку в файл;
- сору— копировать иконку в буфер обмена;
- Paste — вставить иконку из буфера обмена;
- clear — очистить текущую иконку.
- Left (тип свойства — целое число) — левая позиция окна.
- Menu — меню, которое используется в главном окне. Этот параметр стоит рассмотреть отдельно.
- Name — имя формы/компонента. Запомните, что имя, которое вы здесь укажете, будет использоваться в качестве названия объекта.
Если это форма, то в коде будет создан шаблон объекта с таким же именем, но с добавлением в начале имени буквы "Т". Мы с вами уже рассмотрели исходный код, который сгенерировал Delphi для пустого проекта. Там объект назывался TForm1. Обратите внимание, что здесь, а именно в шаблоне, написано просто Fromi. Если вы попробуете изменить свойство Name, то и имя объекта в исходном кодсизменится.

- PoDefauitPosOnly — Windows сама будет решать только, где расположить окно, а размеры его будут такими, какие установите вы в свойствах;
- PoDefauitsizeOnly — Windows будет решать только, какими будут размеры окна, а позиция будет такая, какую вы укажете в свойствах;
- PoDesigned — и размер, и позиция будут такими, какими вы укажете в свойствах;
- PoDesktopCenter — окно будет располагаться по центру рабочего стола;
- PoMainFormCenter — окно будет располагаться по центру основной формы;
- PoOwnerFormCenter — окно будет располагаться по центру окна владельца. То есть того окна, которое вызвало это;
- PoScreenCenter — окно будет располагаться по центру экрана.
- showHint (тип свойства — логический) — оно показывает, нужно ли показывать подсказки.
- Tag — это свойство имеет тип — целое число. Оно ни на что не влияет, и вы можете его использовать в своих целях.
- тор (тип свойства — целое число). Верхняя позиция окна.
- Transparentcoior (тип свойства— логический) — определяет, являются ли форма или компонент прозрачными. В отличие от AlphaBlend, эта прозрачность работает всегда.
- TransparentcoiorValue — значение прозрачного цвета.
- vertscroiiBar— вертикальная полоса прокрутки. Она имеет те же параметры, что и горизонтальная. Мы рассмотрим ее отдельно.
- visible (тип свойства— логический) — если оно равно true, то форма/ компонент видимые. Иначе форма/компонент невидимы.
- width (тип свойства — целое число) — ширина окна.
- windowstate — состояние окна после запуска.
Здесь доступны следующие параметры:
- wsNormal — окно показывается в нормальном состоянии;
- wsMaximized — окно показывается максимизированным;
- wsMinimized — окно показывается минимизированным. На этом обзор свойств формы считаю законченным.
