Содержание
-
Компоненты
Иерархия компонентов Элементы управления Родительские и дочерние компоненты Общие свойства компонентов
-
1. Иерархия компонентов
-
Компоненты
Компоненты – это особый вид объектов. Компоненты можно редактировать визуально в ходе разработки программы, а объекты – нет (только программно). Все компоненты Delphi (визуальные и невизуальные) представлены в обширной библиотеке объектов VCL (Visual Component Library) Невизуальные компоненты также редактируются только программно.
-
Все компоненты Delphi порождены от класса TComponent, в котором инкапсулированы самые общие свойства и методы компонентов.
-
TObject TPersistent Exception TCollection TComponent TStrings Не визуальные компоненты TControl (визуальные) TWinControl TGraphicControl
-
Компоненты
Методы, унаследованные от абстрактного класса TObject: function ClassName:String – строковое название класса function ClassType:TClass – тип класса function ClassParent:TClass – тип класса-предка Constructor Create; - конструктор по умолчанию Destructor Destroy; - деструктор по умолчанию Procedure Free;
-
type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1:TForm1; ………… Button1.ClassName – ‘TButton’ Button1.ClassType – TButton Form1.ClassParent – TForm Form1.ClassParent.ClassName – ‘TForm’
-
Класс TPersistent передает своим потомкам важный виртуальный метод: procedure Assign(Source:TPersistent); С помощью этого метода поля и свойства объекта Source копируются в объект, вызвавший метод Assign; Memo1.Lines.Assign(Listbox1.Items);
-
Класс TComponent передает своим потомкам следующие свойства и методы:
-
propertyName:TComponentName Данное свойство содержит имя компонента и может изменяться только во время конструирования. Через свойство Name осуществляется обращение к компоненту в программном коде.
-
propertyTag:Longint служит для хранения произвольного целого числа или указателя. Это свойство создано исключительно для нужд разработчика. Например, для сохранения некоторой специфичной для компонента информации.
-
Любой компонент является собственностью другого и, в свою очередь, может быть владельцем одного или нескольких компонентов. propertyOwner:TComponent Указывает на владельца компонента (это свойство доступно только для чтения).
-
Форма является владельцем всех расположенных на ней компонентов. В свою очередь объект приложения Application является владельцем всех форм. Владелец отвечает за удаление всех компонентов, которыми он владеет.
-
property Components[Index:Integer]:TComponent Свойство содержит список всех компонентов, которыми владеет данный компонент. Доступ к компоненту осуществляется через индекс
-
propertyComponentIndex:Integer Свойство указывает на положение компонента в массиве Components своего владельца
-
propertyComponentCount:Integer Свойство указывает на количество зарегистрированных в списке Components компонентов
-
Свойство Components может использоваться вместе с ComponentCount в циклах, когда надо изменить какие-то свойства всех компонентов. Например: fori := 0toComponentCount- 1do (Components[i] asTControl).Left := (Components[i] asTControl).Left + 10;
-
Constructor Create(AOwner: TComponent) где AOwner – ссылка на владельца компонента В ходе выполнения конструктора компонент вставляет ссылку на себя в список Components своего владельца и изменяет содержимое собственного свойства Owner.
-
Элементы управления
-
Компоненты
Элементы управления – это особый вид компонентов. Они видимы для пользователя, и с их помощью он может управлять программой (кнопки, списки, панели и т.д.). Все элементы управления – прямые потомки класса TControl. Различают оконные и неоконные элементы управления.
-
Оконными называются элементы управления, которые: Могут становиться активными Могут содержать другие элементы управления Обладают дескриптором окна (handle) Дескриптор Handle можно использовать для непосредственного обращения к API-функциям Windows. Оконные элементы происходят от абстрактного класса TWinControl
-
Оконные компоненты имеют т.н. оконный ресурс – это специальный ресурс Windows, предназначенный для создания и обслуживания окон. Только оконные компоненты способны получать и обрабатывать сообщения Windows. Примеры: форма (TForm), панель (TPanel), группа (TGroupBox) и др.
-
Неоконные элементы происходят от абстрактного класса TGraphicControl Неоконные компоненты не требуют от Windows оконного ресурса. Управляет такими элементами оконный компонент-владелец (например, форма), который является посредником между Windows и неоконными компонентами
-
Родительские и дочерние элементы
-
Компоненты
Оконные компоненты в терминологии Windows называются родительскими, а связанные с ними неоконные элементы – дочерними. Обязательным требованием Windows является визуальная синхронизация дочерних элементов: они не могут выходить за границы своего родителя и появляются и исчезают вместе с ним.
-
Класс TControl определяет свойство propertyParent:TWinControl; В отличие от Owner (который создает компонент) Parent управляет видимым компонентом. Свойство Parentопределяет родительский компонент, т.е. компонет-контейнер, содержащий данный компонент
-
Дочерние компоненты могут наследовать часть свойств содержащего их контейнера, например, шрифт, цвет, отображение ярлычков подсказки. Родительский компонент отвечает за прорисовку всех своих дочерних компонентов. Изменение во время выполнения свойства Parent заставляет компонент перемещаться на экране в клиентскую область нового родителя.
-
Т.к. конструктор TComponent.Create не изменяет свойство Parent, то при создании элементов, это свойство нужно задавать программно.
-
Пример при создании формы, создать элемент метка (Label1) и разместить его на форме var Label1: Tlabel; Procedure TForm1.FormCreate(Sender:TObject); Begin Label1 := TLabel.Create(Self); Label1.Parent := Self; Label1.Caption := ‘Дочерний элемент’; End; Программное создание элемента Заполнение свойства Parent Работа с элементом
-
Label1.Parent := Self; Данный оператор подключает метку к списку дочерних элементов формы, благодаря чему метку прорисовывается на форме. Без этой строки, метка никогда не нарисует себя.
-
Self Переменная Self – (скрытый параметр для каждого метода в объекте) позволяет обратиться к экземпляру класса в его методе.
-
var Form1:TForm1; Label1: Tlabel; Procedure TForm1.FormCreate(Sender:TObject); Begin Label1 := TLabel.Create(Form1); Label1.Parent := Form1; Label1.Caption := ‘Дочерний элемент’; End;
-
Помимо свойства Components, каждый оконный компонент получает от своего родителя TWinControl свойства: property Controls[Index:Integer]:TСontrols Свойство содержит список всех дочерних элементов. property ControlCount:Integer Количество дочерних элементов.
-
Общие свойства компонентов
-
Компоненты
Положение и размеры визуальных компонентов Property Height: Integer; //Высота Property Left: Integer; //Положениелевойкромки PropertyTop: Integer; //Положение верхней кромки Property Width: Integer; //Ширина
-
Положение и размеры
Height Width Top Left
-
Компоненты
Для формы значения свойств Left и Top задаются относительно левого верхнего угла экрана.
-
Выравнивание положения компонента относительно границ своего родителя Type TAlign = (alNone, alTop, alBottom, alLeft, alRigth, alClient); PropertyAlign: TAlign;
-
Panel1.Align :=alBottom;
-
Panel1.Align := alLeft;
-
Компоненты
Управление видимостью и доступностью PropertyVisible: Boolean; Procedure Hide; Procedure Show; PropertyEnabled: Boolean; Свойства Visible и Enabled доступны как из Инспектора объектов, так и программно. Методы Hide и Show доступны только программно
-
PropertyAutoSize: Boolean; Определяет, может ли объект автоматически изменять свои размеры в зависимости от количества и размеров содержащихся в нем компонентов
-
AutoSize = False AutoSize = True
-
Компоненты
Procedure TForm1.Button1Click(Sender:TObject); Begin Panel1.Enabled := not Panel1.Enabled; if Label1.Visible then Label1.Visible:= false else Label1.Visible := true; if Button2.Visible then Button2.Hide else Button2.Show; End;
-
С каждым управляющим элементом связывается текстовая строка, которая становится доступной посредством одного из свойств: Property Caption: TCaption; Property Text: TCaption; Пример: Label1.Caption := ‘Это метка’; Edit1.Text := ‘Это поле ввода’;
-
Если компонент выводит некоторый текст, то с ним связывается свойство: Property Font: TFont; Это составное свойство, имеет ряд вложенных свойств: Name – наименование шрифта Size – размер шрифта Style – начертание =set of [fsBold, fsItalic, fsUnderline, fsStrokeOut]
-
Свойство Font можно изменять и программно: Procedure TForm1.Button1Click(Sender:TObject); Begin Panel1.Font.Size := 12; Panel1.Font.Style := [fsBold, fsItalic]; IffsBoldin Label1.Font.Style then Label1.Font.Style:=Label1.Font.Style-[fsBold]; End;
-
СвойствоDesktopFont определяет, следует ли использовать для вывода текста в компоненте системный шрифт Windows : Property DesktopFont:Boolean; Пример: Label1.DesktopFont := True;
-
Управление всплывающими подсказками: PropertyHint:String; PropertyShowHint:Boolean; Hint– задает текст всплывающей подсказки. ShowHint– определяет выводить или не выводить всплывающую подсказку.
-
Всплывающая подсказка для кнопки Button1
-
Компоненты
Управление цветом компонентов: PropertyColor:TColor; Обычно это свойство выбирается из таблицы стандартных цветов Windows в виде константы clXXXX. Кроме этого, в Delphi имеется набор часто используемых цветов: например, clRead, clBlue, clBlack и др
-
Дочерние компоненты могут наследовать часть свойств содержащего их контейнера. Для этого должны быть установлены в true следующие свойства дочерних компонентов PropertyParentFont:Boolean; PropertyParentColor:Boolean; PropertyParentShowHint:Boolean;
-
Указатели мыши При перемещении указателя мыши по экрану он может изменять свою форму в зависимости от свойства Cursor компонента, над которым он расположен в данный момент typeTCursor = -32768..32767; PropertyCursor:TCursor;
-
Чтобы изменить форму указателя для всех окон программы одновременно, используется свойство Cursor у глобального объекта Screen, который автоматически создается для каждой программы Screen.Cursor = crHourGlass; … Screen.Cursor = crDefault; Восстанавливаем указатель Меняем указатель
Нет комментариев для данной презентации
Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.