
Программирование / Делфа длАТПП-01 / Билет7
.docВОПР 7
TControl – абстрактный базовый класс всех визуальных компонентов. Наследником является класс TWinControl.
TWinControl – абстрактный класс для всех средств управления окнами.
TWinControl имеет следующее уникальное свойство:
Handle – выдает элемент, который нужен для связи с соответствующими структурами Windows.
Уникальный обработчик класса TWinControl:
-
OnSetFocus – действие, когда компонент получил фокус ввода.
Прямым наследником этого класса является класс TGraphicControl.
TGraphicControl – базовый класс всех неоконных средств управления, является наследником TWinControl.
TGraphicControl имеет следующее уникальное свойство:
Paint - обеспечивает интерфейс для метода, который выполняет образ графического управления.
Примерами TGraphicControl являются TLable, TImage –описанные выше.
TLable – текст без возможности редактирования (метка). Элемент этого типа обычно используется, когда необходимо отобразить текст, который не может быть отредактирован пользователем, например заголовки компонентов, не имеющих собственного свойства Caption, однако для большинства средства управления, Caption является заголовоком окна
Наследники класса TControl образуют всю палитру видимых компонентов Delphi. Терминологически они называются элементами управления, так как на их основе прежде всего реализуются управляющие элементы Windows - кнопки, переключатели, списки и т. п. В тексте книги я часто буду употреблять слова компонент и элемент как синонимы.
. Класс TControl определяет свойство Parent, которое содержит ссылку на родительский компонент:
property Parent: TWinControl;
Это свойство не следует путать с собственником Owner: Owner создал компонент (не обязательно - видимый), a Parent управляет видимым компонентом. Поскольку конструктор TComponent.Create не изменяет свойства Parent (в родительском классе TCornponent такого свойства нет), при создании видимых компонентов на этапе прогона программы это свойство необходимо изменять программно. Например, следующий обработчик события OnCreate формы Forml вставит надпись Дочерний элемент в левый верхний угол формы:
procedure TForml.FormCreate(Sender: TObject);
var IbLabel: TLabel;
begin
IbLabel := TLabel.Create (Self); IbLabel. Parent := Self;
IbLabel.Caption := 'Дочерний элемент'; end;
Если убрать оператор
IbLabel.Parent := Self;
метка никогда не узнает о том, что пришла пора прорисовать cебя на экране, и ее текст не будет виден. Наоборот, изменение свойства Parent подключает метку к списку дочерних элементов формы, и оконная функция формы обратится к нужному методу метки.
ПОЛОЖЕНИЕ, РАЗМЕРЫ И ОФОРМЛЕНИЕ КОМПОНЕНТОВ
Положение и размеры компонента определяются четырьмя его свойствами (в пикселях):
property Height: Integer; // Высота
property Left: Integer; // Положение левой кромки
property Top: Integer; // Положение верхней кромки
property Width: Integer; // Ширина
Для всех компонентов, кроме форм, эти свойства задаются в координатах клиентской части родительского компонента. Для формы - в координатах экрана. Клиентская часть компонента - это внутренняя его область за исключением заголовка, рамки и меню. Свойства обычно определяются на стадии конструирования формы, но они доступны также и на этапе прогона программы. Изменение любого из них приводит к немедленному изменению положения или размера компонента как на этапе конструирования, так и при прогоне программы. Все четыре числовые величины содержатся также в единственном свойстве
property BoundsRect: TRect;
type TPoint = record
X: Longlnt;
Y: Longlnt;
end;
TRect = record
case Integer of
0: (Left, Top, Right, Bottom: Integer) ;
1: (TopLeft, BottomRight: TPoint) ;
end;
В некоторых случаях бывает необходимо пересчитать относительные координаты точки внутри клиентской части в абсолютные координаты экрана и наоборот. Эта задача решается двумя методами TControl:
function ClientToScreen(const Point: TPoint): TPoint;
function ScreenToClient (const Point: TPoint): TPoint;
Важную роль играет свойство Align, определяющее выравнивание положения компонента относительно границ своего родителя:
type TAlign = (alNone, alTop, alBottom,
alLeft, alRight, alClient) ;
property Align: TAlign;
Любой видимый компонент можно спрятать или показать с помощью свойства Visible или методами Hide и Show:
property Visible: Boolean; // True - показывает
procedure Hide; // Прячет компонент
procedure Show; // Показывает компонент
Спрятанный компонент не реагирует на события от мыши или клавиатуры, он не участвует в дележе клиентской области родителя, ему нельзя передать фокус ввода клавишей Tab.
Если компонент частично или полностью перекрывается другими компонентами, его можно расположить над всеми компонентами и убрать обратно с помощью методов
procedure BringToFront; // Сделать верхним procedure SendToBack; // Сделать нижним
Свойство
property Enabled: Boolean;
определяет возможность активизации компонента. Если оно имеет значение False, компонент запрещен для выбора. Такие компоненты (точнее, надписи на них) обычно отображаются серым цветом.
Некоторые компоненты имеют плоское изображение (например, метка TLabel), другие - всегда объемное (например, кнопка TButton), Для остальных элементов объемность изображения регулируется свойством
property Ctl3D: Boolean;
С каждым управляющим компонентом связывается текстовая строка, которая становится доступна либо через свойство Caption, либо через свойство Text (альтернативой свойству Text, которое имеет тип String, является свойство TCon-trol.WindowsText типа PChar).
Если эта строка прорисовывается в компоненте, используется шрифт, задаваемый свойством Font:
property Font: TFont;
В этом случае свойство
type TAlignment = (taLeftJustify, taRightJustify, taCenter); property Alignment: TAlignment;
регулирует расположение текста относительно границ компонента: taLeftJustify -прижать к левой границе; taRightJustify - прижать к правой границе; taCenter -расположить по центру. С помощью придания свойству
property DesktopFont: Boolean;
значения True можно потребовать от компонента, чтобы он выводил текст системным шрифтом Windows.
Видимая часть элемента заливается цветом Color:
property Color: TColor;