var
T: TTabSheet;
P: TPageControl;
begin// Создаем PageControl// При создании получаем ссылку на PageControl, чтобы в дальнейшем на него ссылаться.
P := TPageControl.Create(application);
with P dobegin
Parent := Form1; // устанавливаем его как элемент управления формы.
Top := 30;
Left := 30;
Width := 200;
Height := 150;
end; // with TPageControl// Создаем 3 страницы
T := TTabSheet.Create(P);
with T dobegin
Visible := True;
// Это необходимо, или форма не будет корректно перерисовываться
Caption := 'Страница 1';
PageControl := P; // Назначаем Tab в Page Controlend; // with
T := TTabSheet.Create(P);
with T dobegin
Visible := True;
// Это необходимо, или форма не будет корректно перерисовываться
Caption := 'Страница 2';
PageControl := P; // Назначаем Tab в Page Controlend; // with
T := TTabSheet.Create(P);
with T dobegin
Visible := True;
// Это необходимо, или форма не будет корректно перерисовываться
Caption := 'Страница 3';
PageControl := P; // Назначаем Tab в Page Controlend; // with// Создаем 3 кнопки, 1 на страницуwith tbutton.create(application) dobegin
Parent := P.Pages[0]; // "Указываем" кнопке родительскую страницу
Caption := 'Привет, страница 1';
Left := 0;
Top := 0;
end; // withwith tbutton.create(application) dobegin
Parent := P.Pages[1]; // "Указываем" кнопке родительскую страницу
Caption := 'Привет, страница 2';
Left := 50;
Top := 50;
end; // withwith tbutton.create(application) dobegin
Parent := P.Pages[2]; // "Указываем" кнопке родительскую страницу
Caption := 'Привет, страница 3';
Left := 100;
Top := 90;
end; // with// Это должно быть сделано, или Tab первоначально не синхронизируется// с правильной страницей. Только в случае, если у вас более чем одна страница.
P.ActivePage := P.Pages[1];
P.ActivePage := P.Pages[0]; // Реально показываемая страницаend;
Here's the translation of the Delphi code into Russian:
Код на языке Delphi создает экземпляр TPageControl с тремя экземплярами TTabSheet и тремя экземплярами TButton, один на каждой странице.
Разбивка кода:
Первая секция создает экземпляр TPageControl под именем P и устанавливает его свойства: Parent, Top, Left, Width и Height.
Следующие секции создают три экземпляра TTabSheet под именами T и устанавливают их свойства:
Visible: Устанавливается в значение True, чтобы сделать страницу видимой.
Caption: Устанавливает заголовок каждой страницы (например, "Страница 1").
PageControl: Присваивает экземпляру TPageControl под именем P каждому вкладке, что связывает вкладку с контролем страниц.
Следующие секции создают три экземпляра TButton и устанавливают их свойства:
Parent: Устанавливает родителя каждого кнопки в одну из страниц контрола страниц (P.Pages[0], P.Pages[1], и т.д.).
Caption: Устанавливает заголовок каждой кнопки.
Left и Top: Устанавливают позицию каждой кнопки на своей соответствующей странице.
В конце кода устанавливается активная страница контрола страниц в вторую страницу (P.Pages[1]) с помощью свойства ActivePage.
Примечания:
Свойство Visible для каждого вкладки установлено в значение True, что делает их видимыми по умолчанию.
Свойство Caption для каждой страницы, но это не ясно, почему это необходимо. Это может быть остатком из более ранней версии кода или просто косметическим изменением.
Свойство PageControl присваивается каждой вкладке, что связывает вкладку с контролем страниц.
Свойство ActivePage устанавливается в вторую страницу (P.Pages[1]) в конце, что делает ее видимой по умолчанию. Это может быть полезно, если вы хотите показать конкретную страницу по умолчанию.
Альтернативные решения:
Вместо создания отдельных кнопок для каждой страницы можно создать одиночную кнопку и переместить ее на различные страницы с помощью свойства Parent.
Если вам нужно больше гибкости в вашем макете, рассмотрите использование контейнера TPanel или другого контрола для хранения ваших кнопок и других элементов интерфейса.
В статье описывается пример создания динамических PageControl и TabSheet в Delphi, при помощи которого можно создавать интерфейсы с плавающими окнами и управлять ими.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.