Программное создание элементов управления
Страница 1 из 5
Этапы создания элемента управления.
Создать элемент управления можно не только в конструкторе формы, но непосредственно в коде одного из обработчиков событий. При программном создании элемента управления необходимо выполнить последовательность следующих шагов:
1. В области описания формы задать переменную с типом элемента управления: Edit1: TEdit
2. В программе указать создание переменной: Edit1 := TEdit.Create(Panel1) (параметр – владелец элемента управления, контейнер или форма -- Self ).
3. Указать контейнер расположения элемента: Edit1.Parent := Self
4. Определить остальные необходимые свойства элемента, отличные от значений по умолчанию: Edit1.Top := 10
5. В случае необходимости, удалить элемент управления из памяти: Edit1.Free .
Следующая программа демонстрирует перечисленные этапы
TForm1 = class(TForm)
// Описание программно создаваемого эл-та управления
private
Edit1 : TEdit;
// Поле ввода. Создание в процессе выполнения
{ private declarations }
public
{ public declarations }
end;
end;
______________________________________________________________________
procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1 = nil then
// Если поля ввода не существует
begin
Edit1 := TEdit.Create(Panel1);
// Владелец - панель
Edit1.Parent := Panel1;
// Задание родительского контейнера
Edit1.Left := Edit1.Parent.Width div 2;
Edit1.Top := Edit1.Parent.Height div 2;
// в середине контейнера
Edit1.Width := Edit1.Parent.Width div 4;
// ширина - четверть ширины контейнера
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if Edit1 <> nil then
// Если поле ввода существует
begin
Edit1.Parent := Self;
// Задание родительского контейнера (форма)
Edit1.Left := Edit1.Parent.Width div 2;
Edit1.Top := Edit1.Parent.Height div 2;
// в середине контейнера
Edit1.Width := Edit1.Parent.Width div 4;
// ширина - четверть ширины контейнера
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
// Panel1.Free; // Если уничтожить панель,
//строка ввода тоже удалится, независимо
// от того, в каком контейнере она находится
Edit1.Free;
// Строка ввода удаляется из памяти
Edit1 := nil;
end;