Динамические PageControl и TabSheet 2
В данном документе показана технология динамического добавления страниц
компонента 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.0\SOURCE\VCL.
Полный код примера
// Код использует форму с единственной на ней кнопкой.
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.
|
|