В данном документе показана технология динамического добавления страниц компонента pagecontrol (объектов ttabsheet) к элементу управления windows 95/nt pagecontrol (объект tpagecontrol). Оба этих объекта объявлены в модуле comctrls. Поэтому убедитесь в том, что comctrls указан в списке используемых модулей.
Как динамически создать pagecontrol
Прежде, чем мы приступим к динамическому созданию страниц, давайте динамически создадим pagecontrol (если он еще не на форме). Это делается посредством вызова конструктора tpagecontrol create с параметром owner, равным self. Конструктор create возвращает объектную ссылку на вновь созданный объект pagecontrol и назначает его переменной 'pagecontrol'. Вторым шагом будет установка свойства pagecontrol parent в self. Свойство parent определяет где должен быть отображен новый pagecontrol; в нашем случае это будет сама форма. Вот кусок кода, демонстрирующий вышесказанное:
var
pagecontrol : tpagecontrol;
pagecontrol := tpagecontrol.create(self);
pagecontrol.parent := self;
Примечание: При разрушении формы разрушаются также pagecontrol и ее
закладки, поскольку они принадлежат форме.
Как динамически создавать закладки
Существует два основных способа добавления новых страниц к pagecontrol. Сначала вы должны динамически создать ttabsheet следующим образом:
var
tabsheet : ttabsheet;
tabsheet := ttabsheet.create(self);
Затем ему необходимо присвоить заголовок следующей командой:
tabsheet.caption := 'Закладка 1';
И, наконец, самая важное действие заключается в том, что новой странице
необходимо сообщить, какому объекту pagecontrol она принадлежит. Это
делается с помощью присваивания свойством ttabsheet pagecontrol
переменной-ссылки tpagecontrol, типа той, которую мы создали выше
(pagecontrol). Вот кусок кода, демонстрирующий вышесказанное:
tabsheet.pagecontrol := pagecontrol;
Как динамически добавлять к страницам элементы управления
Ключевым моментом при создании и размещении элемента управления на странице tabsheet является назначение свойства parent на переменную-ссылку класса ttabsheet. Вот пример:
var
button : tbutton;
button := tbutton.create(self);
button.caption := 'Кнопка 1';
button.parent := tabsheet;
Более подробно об объектах tpagecontrol и ttabsheet вы можете узнать в
онлайн-документации, или посмотреть код файла comctrls.pas, расположенного в
вашем каталоге ..delphi 2.0sourcevcl.
Полный код примера
// Код использует форму с единственной на ней кнопкой.
unit dynamictabsheetsunit;
interface
uses
windows, messages, sysutils, classes, graphics, controls,
forms, dialogs, stdctrls, buttons;
type
tform1 = class(tform)
button1: tbutton;
procedure button1click(sender: tobject);
procedure testmethod(sender: tobject);
private
{ private declarations }
public
{ public declarations }
end;
var
form1: tform1;
implementation
uses comctrls;
{$r *.dfm}
procedure tform1.button1click(sender: tobject);
var
pagecontrol: tpagecontrol;
tabsheet: ttabsheet;
begin
// Создаем pagecontrol
pagecontrol := tpagecontrol.create(self);
pagecontrol.parent := self;
// Создаем первую страницу и связываем ее с pagecontrol
tabsheet := ttabsheet.create(self);
tabsheet.caption := 'Закладка 1';
tabsheet.pagecontrol := pagecontrol;
// Создаем первую страницу
with tbutton.create(self) do
begin
caption := 'Кнопка 1';
onclick := testmethod; // Назначаем обработчик события
parent := tabsheet;
end;
// Создаем вторую страницу и связываем ее с pagecontrol
tabsheet := ttabsheet.create(self);
tabsheet.caption := ' Закладка 2';
tabsheet.pagecontrol := pagecontrol;
end;
procedure tform1.testmethod(sender: tobject);
begin
showmessage('Привет');
end;
end.
Источник: delphiworld
Последние комментарии