Вопрос пользователя заключается в желании создать вкладку TTabsheet во время выполнения программы, на которой будут находиться одинаковые компоненты. Для решения этой задачи можно использовать несколько подходов, в том числе создание наследника класса TTabSheet или использование фрейма с предварительно размещенными компонентами.
Создание наследника класса TTabSheet
Для начала рассмотрим пример создания наследника класса TTabSheet. Это позволит добавлять одинаковые компоненты на каждую вкладку, не заботясь о их копировании вручную.
В этом примере создается кнопка FTestButton внутри конструктора TCustomTabSheet, которая будет доступна на всех вкладках, созданных с помощью этого класса.
Использование фрейма с компонентами
Другой подход заключается в создании фрейма в дизайнере с нужными компонентами, а затем добавлении его экземпляра на каждую вкладку.
Добавление вкладки в TPageControl
Необходимо помнить, что созданный наследник TCustomTabSheet нужно добавить в TPageControl, что не очевидно из примера с созданием класса. Обычно это делается в дизайнере, но для динамического создания вкладок потребуется выполнить это программно.
function TMyForm.AddTSMemo(ntbk: TPageControl; Caption: string): TTabSheet;
var
mmo: TMemo;
begin
Result := TTabSheet.Create(Self);
Result.PageControl := ntbk;
Result.Caption := Caption;
mmo := TMemo.Create(Self);
mmo.Parent := Result;
mmo.Font.Name := 'Courier New';
mmo.Font.Size := 10;
mmo.Align := alClient;
mmo.ScrollBars := ssBoth;
mmo.WordWrap := True;
// Сохраняем указатель на memo в свойство Tag вкладки
Result.Tag := Integer(mmo);
end;
Вызов функции для добавления вкладки:
var
ts: TTabSheet;
begin
ts := AddTSMemo(myPageControl, ExtractFileName(text_file_nm));
end;
Для доступа к компоненту TMemo, созданному на вкладке, можно использовать свойство Tag:
TMemo(ts.Tag).Lines.LoadFromFile(text_file_nm);
Таким образом, создается новая вкладка с TMemo и загружается содержимое файла. Нет необходимости в создании наследника класса, можно добавлять любые компоненты после присвоения названия вкладке.
Важно помнить, что при использовании динамического создания компонентов, необходимо также позаботиться о корректном освобождении ресурсов, чтобы избежать утечек памяти.
Эти подходы позволяют создавать динамические вкладки с одинаковыми компонентами, что может быть полезно в различных сценариях разработки пользовательского интерфейса в Delphi.
Создание и управление вкладками в интерфейсе пользователя в среде разработки Delphi для добавления одинаковых компонентов на каждую вкладку.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.