Пятница, 17.05.2024
Королевство Delphi
Главное меню
Статьи
Наш опрос
Как часто ви на этот сайт заходите?
Всего ответов: 159
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Разные » Примеры Delphi

Динамические PageControl и TabSheet

Вариант 1

var
t: ttabsheet;
p: tpagecontrol;
begin
// Создаем pagecontrol
// При создании получаем ссылку на pagecontrol, чтобы в дальнейшем на него ссылаться.
p := tpagecontrol.create(application);
with p do
begin
parent := form1; // устанавливаем его как элемент управления формы.
top := 30;
left := 30;
width := 200;
height := 150;
end; // with tpagecontrol

// Создаем 3 страницы
t := ttabsheet.create(p);
with t do
begin
visible := true;
// Это необходимо, или форма не будет корректно перерисовываться
caption := 'Страница 1';
pagecontrol := p; // Назначаем tab в page control
end; // with

t := ttabsheet.create(p);
with t do
begin
visible := true;
// Это необходимо, или форма не будет корректно перерисовываться
caption := 'Страница 2';
pagecontrol := p; // Назначаем tab в page control
end; // with

t := ttabsheet.create(p);
with t do
begin
visible := true;
// Это необходимо, или форма не будет корректно перерисовываться
caption := 'Страница 3';
pagecontrol := p; // Назначаем tab в page control
end; // with

// Создаем 3 кнопки, 1 на страницу
with tbutton.create(application) do
begin
parent := p.pages[0]; // "Указываем" кнопке родительскую страницу
caption := 'Привет, страница 1';
left := 0;
top := 0;
end; // with

with tbutton.create(application) do
begin
parent := p.pages[1]; // "Указываем" кнопке родительскую страницу
caption := 'Привет, страница 2';
left := 50;
top := 50;
end; // with

with tbutton.create(application) do
begin
parent := p.pages[2]; // "Указываем" кнопке родительскую страницу
caption := 'Привет, страница 3';
left := 100;
top := 90;
end; // with

// Это должно быть сделано, или tab первоначально не синхронизируется
// с правильной страницей. Только в случае, если у вас более чем одна страница.
p.activepage := p.pages[1];
p.activepage := p.pages[0]; // Реально показываемая страница
end;

Вариант 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.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.

Получить ссылку на материал

Категория: Примеры Delphi | Добавил: Барон (12.12.2011)
Просмотров: 3425 | Теги: TabSheet, PageControl | Рейтинг: 0.0/0
[ Пожертвования для сайта ] [ Пожаловаться на материал ]

Если вам помог материал сайта кликните по оплаченной рекламе размещенной в центре

Поиск
Категории раздела
Delphi.NET [3]
Kylix Delphi for Linux [9]
Советы Дельферу [6]
Хитрости в Delphi [2]
Обзор Delphi [45]
Инсталлятор [11]
Пользовательский интерфейс [18]
Примеры Delphi [93]
Функции и процедуры [15]
Разные [31]
Королевство Delphi © 2010-2024
Яндекс цитирования