Какое свойство определяет ширину компонента
Многие стандартные визуальные компоненты имеют одинаковые свойства. Поэтому имеет смысл рассмотреть их отдельно, чтобы впоследствии больше не возвращаться к этому.
Свойство Align
Задает способ выравнивания компонента внутри формы. Имеет одно из следующих значений:
Значение | Описание |
AINone | Выравнивание не используется. Компонент располагается на том месте, куда был помещен во время создания программы. Принимается по умолчанию |
AlTop | Компонент перемещается в верхнюю часть формы, и его ширина становится равной ширине формы. Высота компонента не изменяется |
AlBottom | Компонент перемещается в нижнюю часть формы, и его ширина становится равной ширине формы. Высота компонента не изменяется |
AlLeft | Компонент перемещается в левую часть формы, и его высота становится равной высоте формы. Ширина компонента не изменяется |
AlRight | Компонент перемещается в правую часть формы, и его высота становится равной высоте формы. Ширина компонента не изменяется |
AlClient | Компонент занимает всю рабочую область формы |
Свойство Color
Задает цвет фона формы или цвет компонента или графического объекта. Может иметь одно из следующих значений:
Значение | Цвет |
ClBlack | Черный (Black) |
CIMaroon | Темно-красный (Maroon) |
CIGreen | Зеленый (Green) |
ClOlive | Оливковый (Olive green) |
CINavy | Темно-синий (Navy blue) |
CIPurple | Фиолетовый (Purple) |
CITeal | Сине-зеленый (Teal) |
CIGray | Серый (Gray) |
CISilver | Серебряный (Silver) |
CIRed | Красный (Red) |
CILime | Ярко-зеленый (Lime green) |
ClBlue | Голубой (Blue) |
ClFuchsia | Сиреневый (Fuchsia) |
ClAqua | Ярко-голубой (Aqua) |
DWhite | Белый (White) |
Цвета, приведенные в следующей таблице, являются системными цветами Windows и зависят от используемой цветовой схемы.
Значение | Цвет |
ClBackground | Текущий цвет фона окна |
ClActiveCaption | Текущий цвет заголовка активного окна |
CllnactiveCaption | Текущий цвет заголовка неактивного окна |
CIMenu | Текущий цвет фона меню |
ClWindow | Текущий цвет фона Windows |
ClWlndowFrame | Текущий цвет рамки окна |
CIMenuText | Текущий цвет текста элемента меню |
ClWindowText | Текущий цвет текста внутри окна |
CICaptionText | Текущий цвет заголовка активного окна |
CiActiveBorder | Текущий цвет рамки активного окна |
CllnactiveBorder | Текущий цвет рамки неактивного окна |
ClAppWorkSpace | Текущий цвет рабочей области окна |
ClHighlight | Текущий цвет фона выделенного текста |
ClHightlightText | Текущий цвет выделенного текста |
ClBtnFace | Текущий цвет кнопки |
ClBtnShadow | Текущий цвет фона кнопки |
CIGrayText | Текущий цвет недоступного элемента меню |
ClBtnText | Текущий цвет текста кнопки |
Помимо перечисленных в таблице цветов значение свойства Color может задаваться шестнадцатеричными значениями.
Свойство Ctl3D
Позволяет задать вид компонента. Если значение этого свойства равно False, компонент имеет двумерный вид, если True — трехмерный (значение по умолчанию).
Свойство Cursor
Позволяет определить вид курсора, который он будет иметь, находясь в активной области компонента. В DELPHY предопределено большое количество стандартных курсоров. Кроме того, пользователь может создавать свои собственные курсоры или использовать созданные другими.
Свойство DrogCursor
Позволяет определить вид курсора, который будет отображаться, когда в компонент «перетаскивается» другой компонент. Значения этого свойства те же, что и у свойства Cursor.
Свойство DrogMode
Позволяет определить режим поддержки протокола drag-and-drop. Возможны следующие значения:
Значение | Описание |
DmAutomatic | Компонент можно «перетаскивать», «зацепив» мышью |
DmManual | Компонент не может быть «перетащен» без вызова метода BeginDrag |
Свойство Enabled
Если это свойство имеет значение True, компонент реагирует на сообщения от мыши, клавиатуры и таймера. В противном случае (значение False) эти сообщения игнорируются.
Свойство Font
Многие визуальные компоненты используют шрифт по умолчанию. При создании компонента изначальное значение свойства Font (класс TFont) имеет следующие параметры:
Свойство | Значение |
Color | ClWindowText |
Height | — MulDiv(10, GetDeviceCaps(DC, LOGPIXELSY), 72) |
Name | System |
Pitch | FpDefault |
Size | 10 |
Style | [] |
Свойство Height
Это свойство задает вертикальный размер компонента или формы.
Свойство HelpContext
Задает номер контекста справочной системы. Этот номер должен быть уникальным для каждого компонента. Если компонент активен (находится в фокусе), нажатие клавиши F1 приводит к отображению экрана справочной системы (если такой существует для данного компонента).
Свойство Hint
Задает текст, который будет отображаться при обработке события OnHint, происходящего, если курсор находится в области компонента.
Свойство Left
Задает горизонтальную координату левого угла компонента относительно формы в пикселах. Для форм это значение указывается относительно экрана.
Свойство ParentColor
Это свойство позволяет указать, каким цветом будет отображаться компонент. Если значение этого свойства равно True, компонент использует цвет (значение свойства Color) родительского компонента. Если же значение свойства ParentColor равно False, компонент использует значение собственного свойства Color.
Свойство ParentCtl3D
Это свойство позволяет указать, каким образом компонент будет определять, является он трехмерным, или нет. Если значение этого свойства равно True, то вид компонента задается значением свойства Ctl3D его владельца, если же значение этого свойства равно False — то значением его собственного свойства Ctl3D.
Свойство ParentFont
Это свойство позволяет указать, каким образом компонент будет определять используемый им шрифт. Если значение этого свойства равно True, используется шрифт, заданный у владельца компонента, если же это значение равно False, то шрифт задается значением его собственного свойства Font.
Свойство PopupMenu
Это свойство задает название локального меню, которое будет отображаться при нажатии правой кнопки мыши. Локальное меню отображается только в случае, когда свойство AutoPopup имеет значение True или когда вызывается метод Popup.
Свойство TabOrder
Задает порядок получения компонентами фокуса при нажатии клавиши Tab. По умолчанию этот порядок определяется размещением компонентов в форме: первый компонент имеет значение этого свойства, равное 0, второй — 1 и т. д. Для изменения этого порядка необходимо изменить значение свойства TabOrder определенного компонента. TabOrder может использоваться только совместно со свойством Tab Stop.
Свойство TabStop
Это свойство позволяет указать, может компонент получать фокус или нет. Компонент получает фокус, если значение его свойства TabStop равно Тruе.
Свойство Tag
С помощью этого свойства можно «привязать» к любому компоненту значение типа Longlnt.
Свойство Тор
Это свойство задает вертикальную координату левого верхнего угла интерфейсного элемента относительно формы в пикселах. Для формы это значение указывается относительно экрана.
Свойство Visible
Это свойство позволяет определить, видим ли компонент на экране. Значением этого свойства управляют методы Show и Hide.
Свойство Width
Это свойство задает горизонтальный размер интерфейсного элемента или формы в пикселах.
Источник
Пришло время подробнее ознакомиться со свойствами компонент. И начнём мы с
базового элемента любого оконного приложения – формы. Свойств у формы
достаточно много, и в разных версиях Delphi их набор может немного
отличаться. Здесь будет рассмотрение свойств на основе Delphi 7.
Action – определяет объект TAction.
Это объект служит для быстрой привязки действий к компонентам, в особенности – к
пунктам меню и панелям инструментов. Но может быть привязан и к форме. Для
управления TAction служат редакторы TActionList со страницы
Standard и TActionManager со страницы Additional.
ActiveControl – определяет элемент, который
имеет в данный момент фокус ввода. Если выбрать какой-либо объект во время
разработки (design-time), то при запуске приложения этот объект и будет иметь
фокус ввода. Также свойство может быть полезно и во время выполнения (run-time)
– можно узнать, какой объект “держит” фокус в данный момент, а также можно
переместить фокус на любой из объектов. Пример: разместим на форме 2 кнопки –
Button1 и Button2, а также TTimer (страница System). Выбрав
элемент Timer1, дважды щёлкнем в Инспекторе объектов напротив надписи OnTimer на
вкладке Events, т.е. создадим обработчик события и напишем следующее:
ActiveControl:=Button2; Теперь, запустив программу, каждую секунду фокус
будет перемещаться на Button2.
Align – определяет выравнивание формы на
экране. Свойство принимает одно из следующих значений:
- alBottom – по нижнему краю;
- alClient – вся пользовательская (клиентская) область;
- alCustom – выравнивание определяется вызовом методом
объекта-родителя; - alLeft – по левому краю;
- alNone – без выравнивания;
- alRight – по правому краю;
- alTop – по верхнему краю.
AlphaBlend – включает/выключает прозрачность
формы.
AlphaBlendValue – задаёт степень
непрозрачности формы: 0 – форма полностью невидима, 255 – полностью видима.
Прозрачность активируется только при установке свойства AlphaBlend в True.
Anchors – определяет направления, по которым
компоненты “привязываются” к форме. Пример: если установить у формы значения
akLeft и akRight этого свойства в True, и точно также сделать у кнопки, то при
изменении ширины формы размер кнопки (ширина) также будет изменяться.
AutoScroll – включает автоматическое
появление полос прокрутки (Scroll bars) на форме, когда размеров формы
недостаточно для отображения всех элементов.
AutoSize – включает автоматическое изменение
размеров формы согласно позициям размещённых на ней элементов.
BiDiMode – определяет двунаправленное
отображение элемента. В некоторых языках письмо осуществляется не слево-направо,
а наоборот. Это свойство создано как раз для этой цели.
BorderIcons – определяет множество кнопок,
которые отображаются в заголовке окна:
- biSystemMenu – единственный элемент, который не является
кнопкой – отвечает за системное меню окна, которое вызывается комбинацией
клавиш [Alt]+[Пробел]. - biMinimize – кнопка сворачивания (минимизации) окна;
- biMaximize – кнопка разворачивания окна;
- biHelp – кнопка справки.
Если хотя бы одна из кнопок сворачивания и разворачивания
включена, то независимо от состояния другой, отображаются обе (но вторая
естественно неактивна). Если выключены обе, они не отображаются вообще. Это не
зависит от Delphi – так устроена ОС Windows.
BorderStyle – определяет поведение границ
окна и общий тип окна:
- bsDialog – диалоговое окно (из кнопок – только “Закрыть”,
иконки в заголовке окна нет); - bsNone – “чистый лист” (отсутствие у окна границ и
заголовка) – применяется обычно для создания заставок во время запуска
программы; - bsSingle – обычное окно, но с запретом изменения
размеров; - bsSizeable – обычное окно (по умолчанию) – размеры формы
можно изменять; - bsSizeToolWin – упрощённое окно с уменьшенным заголовком;
- bsToolWindow – упрощённое окно с уменьшенным заголовком
без возможности изменения размеров.
BorderWidth – ширина границы окна в пикселах.
Граница является невидимой и расположена в пользовательской части формы.
Caption – текст заголовка формы.
ClientHeight, ClientWidth –
размер клиентской (пользовательской) части формы, т.е. той, на которой
располагаются компоненты.
Color – цвет формы.
Constraints – определяет минимальные и
максимальные размеры высоты и ширины формы в пикселах. 0 – любое значение, т.е.
без ограничений.
Ctl3D – свойство определяет 3D-вид формы. При
выключенном – “плоское” изображение.
Cursor – курсор мыши в тот момент, когда он
находится над формой.
DefaultMonitor – определяет, на каком
мониторе появится форма. Имеет смысл применять это свойство только при наличии
более, чем одного монитора (например, если несколько экранов).
DockSite, DragKing и
DragMode – определяют поведение формы при осуществлении операций
Drag&Drop.
Enabled – отвечает за общую активность формы.
Если установлено в False, форма недоступна.
Font – шрифт, используемый на форме.
FormStyle – стиль формы или её поведение в
MDI-приложении (многооконное приложение, где дополнительные формы располагаются
“внутри” основной формы). Значения:
- fsNormal – обычная форма (значение по умолчанию);
- fsMDIChild – дочерняя (подчинённая) форма MDI-приложения;
- fsMDIForm – главная форма MDI-приложения;
- fsStayOnTop – форма находится поверх всех окон на экране.
Height – высота формы в пикселах. В отличие
от ClientWidth является высотой с учётом заголовка и границ формы.
HelpContext, HelpFile,
HelpKeyword, HelpType – свойства для связи
формы с файлом справки в формате *.hlp.
Hint – текст всплывающей подсказки.
HorzScrollBar – свойство определяет внешний
вид и поведение горизонтальной полосы прокрутки окна.
Icon – значок (иконка) формы. Отображается в
заголовке слева от заголовка. Задаётся файлом в формате *.ico.
KeyPreview – если свойство установлено в
True, то при нажатии клавиш сначала будут вызываться обработчики формы, а только
затем обработчики того компонента, который в данный момент имеет фокус ввода.
События, связанные с нажатием клавиш – OnKeyDown(), OnKeyPress(), OnKeyUp().
Left – позиция формы на экране (левого
верхнего угла) в пикселах.
Menu – позволяет выбрать один из
компонентов-меню, который станет главным меню окна, т.е. будет отображаться
вверху.
Name – имя формы как объекта. Может содержать
только латинские буквы, цифры и знак подчёркивания, и не может начинаться с
цифры. Фактически, это то имя, по которому в программе можно обратиться к форме.
ObjectMenuItem – используется при работе с
OLE-объектами и позволяет связать пункт меню и OLE-объект: когда объект выделен,
пункт меню активен и наоборот.
OldCreateOrder – определяет, когда происходят
события OnCreate() и OnDestroy() формы. Если установлено в False, то OnCreate()
произойдёт после вызова всех конструкторов, а OnDestroy() – после вызова всех
деструкторов. Начальное значение – False, изменять не рекомендуется.
ParentBiDiMode – изменение свойства BiDiMode
согласно значению объекта-предка формы.
ParentFont – изменение шрифта (Font) согласно
значению объекта-предка.
PixelsPerInch – пропорции шрифта в системе
(точек на дюйм).
PopupMenu – позволяет указать контекстное
меню (объект TPopupMenu) для формы. Это меню вызывается нажатием правой кнопки
мыши.
Position – определяет начальную позицию формы
на экране, т.е. в момент её появления. Основные значения:
- poDesigned – появление в том месте, в каком форма
расположена в design-time; - poDesktopCenter – по центру рабочего стола (рекомендуемое
значение); - poScreenCenter – по центру экрана;
- poMainFormCenter – по центру главной формы приложения
(для главной формы не имеет смысла).
PrintScale – определяет размеры формы при
выводе её изображения на печать.
Scaled – включает масштабирование формы в
соответствии с заданным значением свойства PixelsPerInch.
ScreenSnap – если установлено в True, то
форма будет автоматически “прилипать” к краям экрана в момент перемещения.
SnapBuffer – определяет расстояние (в
пикселах), на котором форма будет “прилипать” к краю экрана.
ShowHint – включает/выключает показ
всплывающей подсказки (Hint).
Tag – специальное свойство, которое есть у
всех объектов. Специального применения для этого свойства нет, поэтому оно
используется для разных целей в конкретной ситуации. Свойство удобно в том
случае, если нужно хранить некоторое целое число – не придётся заводить
дополнительную переменную.
Top – позиция формы (левого верхнего угла) на
экране в пикселах.
TransparentColor – включает/выключает
прозрачность определённого цвета формы.
TransparentColorValue – задаёт цвет, который
будет прозрачным.
UseDockManager – используется при реализации
Drag&Drop технологии, предоставляя дополнительные возможности этого метода
взаимодействия.
VertScrollBar – определяет внешний вид и
поведение вертикальной полосы прокрутки окна.
Visible – определяет видимость формы на
экране.
Width – ширина окна в пикселах, включая
границы.
WindowMenu – свойство-аналог свойства Menu,
но используемое при создании MDI-форм.
WindowState – одно из состояний окна:
- wsNormal – обычное состояние (занимает часть экрана);
- wsMinimized – окно свёрнуто;
- wsMaximized – окно развёрнуто на весь экран.
В итоге мы получаем огромное количество свойств, способных
изменить как внешний вид формы, так и её поведение, а также поведение компонент,
расположенных на ней. Но данная статья незаметно познакомила Вас не только со
свойствами формы, но и со свойствами большинства компонент. Дело в том, что
компоненты имеют общих “предков”, т.е. тех объектов, от которых они образованы,
поэтому свойства компонент очень похожи и большая их часть просто-напросто
совпадает. Если посмотреть на свойства кнопки (TButton), то сразу можно
заметить, что большинство свойств – те же самые, что и у формы. Это позволяет
быстро научиться работать с любым незнакомым объектом.
Примечания
Стоит сделать несколько примечаний насчёт свойств.
- Свойства прозрачности формы (AlphaBlend,
AlphaBlendValue, TransparentColor и TransparentColorValue)
корректно работают только на ОС Windows XP и следующих версиях. В предыдущих
версиях ОС изменение значения этих свойств не производит визуального
изменения формы. - Свойства, названия которых начинаются со слова Parent
(англ. – родитель), в большинстве случаев связывают значения
некоторых свойств со значениями соответствующих свойств объекта-родителя.
Так, кнопка (TButton) имеет свойство ParentFont и свойство Font, отвечающее
за шрифта текста на этой кнопке. Но и сама форма имеет свойство Font. В
результате, если у кнопки установить ParentFont в True, а затем
изменить шрифт у формы, то шрифт у кнопки изменится соответствующим образом.
Это позволяет быстро изменять одни и те же свойства у большого числа
компонент. Другие подобные свойства – ParentShowHint,
ParentColor, ParentBiDiMode. - Свойство Cursor, отвечающее за курсор, есть у
большинства компонент. Но при перемещении курсора его вид изменяется на тот,
который задан у самого “дальнего” объекта. Т.е. если и формы и у кнопки
заданы разные формы курсора, то при перемещении над кнопкой будет
использоваться курсор, заданный у самой кнопки. Число “вложений” одних
компонент в другие может быть довольно большим.
Заключение
В этой статье рассмотрены свойства формы и основные свойства
компонент. Изменяя свойства, можно настроить объекты так, как это требуется для
реализуемой программы. Объектно-ориентированное программирование в основном и
сводится к управлению свойствами объектов.
Автор: Ерёмин Андрей
Источник
Среда разработки Delphi обеспечивает разработчика средствами и инструментарием для создания программ методами объектно-ориентированного программирования. Для этого создана разветвленная иерархия классов, которая позволяет создавать приложения на любой вкус и для любой прикладной области. Все классы этой иерархии объединены в специальную библиотеку компонентов.
Компонент – функциональный элемент, имеющий определенные свойства и размещаемый программистом в окне формы. Компоненты для разработки интерфейса и системные компоненты называются соответственно визуальными и невизуальными.
Визуальные компоненты видны как во время разработки, так и во время выполнения. Они могут отображать данные и воспринимать ввод (координаты мыши). Более сложные визуальные компоненты позволяют вводить текст, выбирать элементы списка и выполнять довольно сложную обработку событий, связанных с мышью.
Невизуальные объекты доступны исключительно через программный код, и их свойства можно редактировать только с помощью программного кода. Невизуальные компоненты включают в себя сложные функции системы и компоненты Delphi, ускоряя процесс разработки. Существует две категории невизуальных компонентов – диалоговые и системные. Категория диалога предоставляет прямой доступ к общим диалогам Windows, таким как стандартный диалог открытия файла или диалог выбора цвета. Категория системных компонентов обеспечивает поддержку функциональных возможностей визуальных компонентов. Компоненты TMainMenu и TPopupMenu упрощают разработку меню прикладной программы. Компонент TTimer служит генератором событий.
Примерами невизуальных объектов также являются:
TСlipboard, предназначенный для организации буфера обмена;
TScreen – управление экраном во время работы компьютера;
TPrinter, инкапсулирующий функции Windows по обслуживанию принтера;
TApplication – управление проектом в целом;
и др.
Базовые классы VCL
В основе иерархии объектов библиотеки VCL лежит класс TObject. Он обеспечивает выполнение важнейших функций “жизнедеятельности” любого объекта. Благодаря ему каждый класс получает в наследство механизмы создания экземпляра объекта и его уничтожения.
Обычно разработчик не задумывается о том, как объект будет создан, и что необходимо сделать для его корректного уничтожения. Компоненты VCL создаются и освобождают занимаемые ресурсы автоматически. Иногда разработчику приходится создавать и удалять объекты самостоятельно. Но даже в этом случае ему достаточно вызвать соответствующие конструктор и деструктор:
Var SomeList : TStrings;
. .
SomeList := TStrings.Create;
. . .
SomeList.Free;
За кажущейся простотой этих операций скрывается довольно сложная реализация указанных процессов. Практически весь исходный код класса TОbject написан на ассемблере для обеспечения наибольшей эффективности операций, которые будут выполняться в каждом его потомке. Кроме того, класс TОbject обеспечивает создание и хранение информации об экземпляре объекта и обслуживание очереди сообщений.
Класс TРersistent происходит непосредственно от класса TОbject. Он обеспечивает своих потомков возможностью взаимодействовать с другими объектами и процессами на уровне данных. Его методы позволяют передавать данные в потоки, а также обеспечивают взаимодействие объекта с инспектором объектов.
Класс TСomponent служит основой для всех компонентов Delphi. Этот класс задает базовое поведение всех компонентов – их основные свойства и методы. К ним относятся:
возможность отображения компонента в палитре компонентов и управления им в дизайнере форм;
возможность выступать контейнером для других компонентов;
возможность выступать в качестве оболочки вокруг компонентов ActiveX и других объектов, реализующих интерфейсы.
Класс TСomponent является базовым для создания невизуальных компонентов, которые могут располагаться в палитре компонентов и использоваться в дизайнере форм.
Для создания визуальных компонентов базовым является TСontrol, а для создания компонентов, имеющих окна, – класс TWinControl. Визуальные компоненты являются элементами управления. Элементы управления – это варианты стандартных элементов управления Windows. Примером элемента управления является “кнопка”. Пользователь может произвести некоторое действие, выполнив щелчок на этой кнопке. Компонент “Меню” видим и доступен для редактирования только разработчику приложения. Для него этот компонент является инструментом, используемым для создания меню. Во время работы программы пользователь видит только результат работы “Меню”, а не сам элемент.
В дальнейшем изложении эти два понятия компонент и элемент управления являются синонимами. Все элементы управления являются компонентами, но не все компоненты – элементы управления.
Общие предки обуславливают общие свойства компонентов. Рассмотрим только те, которые имеют самое широкое распространение.
Класс TObject
Класс TОbject реализует функции, которые обязательно будет выполнять любой объект, который может быть создан в среде разработки. В первую очередь это создание и уничтожение экземпляра объекта.
Процесс создания объекта включает выделение области адресного пространства, установку указателя на экземпляр объекта, задание начальных значений свойств и выполнение установочных действий, связанных с назначением объекта. Объявление конструктора выглядит следующим образом:
Constructor Create;
Для уничтожения экземпляра объекта в TObject предназначены методы Destroy и Free:
Destructor Destroy; Virtual;
Procedure Free
Destroy обеспечивает освобождение всех занимаемых экземпляром объекта ресурсов. При уничтожении объектов рекомендуется вместо деструктора вызывать метод Free, который просто вызывает деструктор, но перед этим проверяет, чтобы указатель на экземпляр объекта был не пустым (не был равен Nil). Это позволяет избежать серьезных ошибок.
Если объект является владельцем других объектов (например, форма владеет всеми размещенными на ней компонентами), то его метод Free автоматически вызовет эти же методы для всех объектов. Поэтому при закрытии формы разработчик избавлен от необходимости заботиться об уничтожении всех компонентов.
Каждый объект должен содержать некоторую информацию о себе, которая используется приложением и средой разработки. Поэтому класс TObject содержит ряд методов, обеспечивающих представление этой информации в потомках.
Функция ClassName: ShortString; возвращает имя объекта, которое может быть использовано для идентификации. Например, один метод-обработчик щелчка на кнопке может работать с несколькими типами компонентов кнопок:
Procedure TForm1.Button1Click(Sender : TObject);
Begin
If Sender.ClassName = ‘TButton’ Then (Sender AS TButton).Enabled := False;
If Sender.ClassName = ‘TSpeedButton’ Then
(Sender AS TSpeedButton).Down := True;
End;
Метод ClassNamesIs (const Name : string) : Boolean; позволяет определить, принадлежит ли данный объект тому типу, имя которого передано в параметре Name. В случае положительного ответа функция возвращает True.
Класс TPersistent
Класс TРersistent предназначен для организации взаимодействия своих потомков с другими объектами и потомками.
Метод Assign (Source : TPersistent); осуществляет копирование содержимого одного объекта в другой. При этом объект-получатель остается самим собой, чего нельзя достигнуть, используя простое присваивание переменных объектного типа:
FirstObject := SecondObject;
В этом случае указатель на одну область адресного пространства, содержащую объект, замещается указателем на другую область адресного пространства, содержащую другой объект. Метод Assign позволяет сохранить сами объекты неизменными, заменяя только значения их свойств.
Класс TРersistent не используется напрямую, от него порождаются потомки, которые должны уметь передавать другим объектам значения своих свойств.
Класс TComponent
Класс TСomponent является предком всех компонентов VCL. Он используется в качестве основы для создания невизуальных компонентов и реализует основные механизмы, которые обеспечивают функционирование любого компонента. В нем появляются первые свойства, которые отображаются в инспекторе объектов.
Свойство Nameопределяет имя компонента. Имя компонента строится по тем же правилам, что и имена любых других объектов программирования – констант, переменных подпрограмм и т.д. Так как компоненты помещаются на форму средой Delphi, каждый компонент автоматически получает создаваемое средой имя, совпадающее с именем своего класса (без начальной буквы Т) и дополненное числовым суффиксом: Form1, Button2, Edit4 и т.д. Впоследствии программист может переименовать компонент, чтобы сделать текст программы более “читабельным”.
Свойство Tag типа Longint определяет произвольный целочисленный параметр, который не используется Delphi и которым программист может распоряжаться по своему усмотрению.
Свойство Сomponents–содержит список всех компонентов, владельцем которых является данный компонент. Свойство Components удобно использовать в том случае, когда необходимо обратиться к компонентам, которыми владеет данный компонент, используя их порядковые имена, а не по имени.
Свойство Owner – указывает на владельца компонента.
Свойство ComponentCount – определяет количество компонентов, владельцем которых является данный компонент.
Свойство ComponentIndex – содержит индекс данного компонента в списке Components его владельца.
Класс TControl
Вслед за классом TСomponent в иерархии базовых классов располагается группа из трех классов, которые обеспечивают создание различных визуальных компонентов. Существует несколько типов элементов управления, которые существенно отличаются по своим возможностям и поведению. Каждому типу соответствует собственный класс иерархии.
Класс TСontrol является базовым для всех визуальных компонентов и инкапсулирует механизмы отображения компонента на экране.
Текущее состояние элемента управления определяется свойством ControlState, тип которого:
Type TControlState = Set Of (csButtonDown, csClicked, csPalette, csReadingState,
csAlingnmentNeeded, csFocusing, csCreating, csCustomPaint,
csDestroyingHandle, csDocking);
Доступность элемента управления в целом определяется свойством Enabled. Свойство Enabled определяет, должен ли элемент управления реагировать на события мыши, клавиатуры или таймера. Если свойство Enabled имеет значение True, то элемент реагирует на события, иначе эти события игнорируются. Отключенный элемент управления при стандартной установке цветов Windows изображается серым цветом.
Свойство Height задает вертикальный размер компонента или формы в пикселях.
Свойство Width определяет ширину элемента управления или формы в пикселях.
Свойства Left и Top определяют вертикальную и горизонтальную координаты верхнего левого угла элемента управления относительно формы или родительского элемента. Для форм эти значения указываются относительно экрана.
Координаты любой точки элемента управления можно пересчитать в экранные при помощи метода ClientToScreen (const Point : TPoint) : TPoint;
И наоборот
ScreenToClient (const Point : TPoint) : TPoint;
Параметры рабочей области компонента определяются свойством ClientHeight : Integer, которое определяет высоту рабочей области в пикселях, и свойством ClientWidth : Integer, определяющим ширину рабочей области в пикселях.
Свойство ClientOrigin : TPoint содержит координаты левого верхнего угла элемента управления в системе координат рабочей области владельца.
Тип TРoint определен следующим образом:
Type TPoint = Record X : LongInt; Y : LongInt; End;
Функция GetClientOrigin : TРoint ; Virtual возвращает координаты верхнего угла рабочей области.
Свойство Align – определяет, как располагаются элементы управления внутри родительского элемента. Свойство может иметь одно из значений: alNone – выравнивание не используется; alTop – компонент прижимается к верхней границе своего родителя; alBottom, alLeft, alRight – к нижней, левой и правой границам соответственно. Свойство Align необходимо применять, если элемент управления должен оставаться в определенном положении на форме при изменении ее размеров.
Свойство Anchors : TАnchors обеспечивает фиксацию элемента управления по сторонам владельца. Тип TАnchors определен:
Type TAnchors = Set Of TAnchorsKind;
Type TAnchorsKind = (akTop, akLeft, akRight, akBottom);
Если по вертикали или горизонтали установлены оба якоря, то при изменении размеров владельца размер элемента управления изменяется таким образом, чтобы расстояния до сторон владельца остались неизменными.
Свойство AutoSize : Boolean обеспечивает изменение размеров компонента в соответствии с размерами его содержимого (текста, изображения, списка, иерархического дерева и т.д.).
Свойство Color определяет цвет элемента управления. Это свойство имеет набор значений, например: clBlack, clGreen, clBlue, clRed и т.д.
Свойство Cursor определяет изображение указателя мыши в тот момент, когда он находится на элементе управления.
Свойство Font определяет шрифт текстовой строки, его цвет (Color), размер (Size), стиль (Style) и пр.
Свойство Hint задает текст, который будет отображаться при обработке события OnHint, происходящего, если курсор находится в области компонента. При задержке курсора мыши на компоненте всплывает небольшое окно с сообщением, заданным в этом свойстве.
Для управления ярлыком используется свойство ShowHint : Boolean. При значении True ярлык начинает работать, при значении False ярлык выключается.
Свойство Visible определяет, будет ли данный компонент отображаться на экране. Если свойство Visible имеет значение True, то компонент виден пользователю, в противном случае – нет.
Свойство Caption – текстовая строка, связанная с компонентом. Текстовая строка является заголовком для формы. Для метки свойство Caption – это тот текст, который выводится в положении метки.
Свойство Text – это тоже текстовая строка. Например, для компонентов TМemo и TЕdit текстовая константа хранится в свойстве Text.
Свойство Parent содержит ссылку на родительский элемент. Свойство Parent в отличие от Owner относится к элементам управления. Если поместить три опции в группирующую рамку, то владельцем этих опций будет форма, где они находятся, а родительским элементом – группирующая рамка.
Свойства ParentColor, ParentFont и ParentShowHint указывают, что элемент управления должен брать значения для свойств Color (Цвет), Font (Шрифт) и ShowHint (показывать подсказку) из родительского элемента управления. Механизм связывания визуального компонента с родительским компонентом позволяет автоматически задавать для нового элемента управления некоторые свойства, отвечающие за его внешний вид. В результате все элементы управления, дочерние для одного родительского (формы, панели) будут выглядеть одинаково.
Свойство PopupMenu задает название локального меню, которое будет отображаться при нажатии правой кнопки мыши. Локальное меню отображается только в случае, когда свойство AutoPopup имеет значение True.
В классе TControl впервые появляются методы-обработчики событий, которые обеспечивают передачу в элемент событий мыши, технику drag-and-dock и перетаскивание (drag-and-drop).
Класс TWinControl
Новые механизмы, инкапсулированные в классе, обеспечивают выполнение характерных для оконных элементов функций: прием и передачу фокуса, отклик на действия мышью и ввод с клавиатуры.
Свойство TabOrder определяет положение компонента в так называемой последовательности табулятора. Это последовательность, в которой компоненты становятся активными, когда пользователь нажимает клавишу [Tab].
Метод SetFocus устанавливает фокус для данного компонента. Применяется для компонентов, имеющих фокус ввода.
Чтобы узнать, имеет ли элемент управления фокус, используется метод Focused : Boolean; Dynamic.
Свойство Brush определяе