Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Создание табов в стиле IDE Delphi в FireMonkey без использования TTabControl

Delphi , Программа и Интерфейс , Интерфейс

Для создания вкладок в стиле IDE Delphi в FireMonkey без использования TTabControl, можно воспользоваться кастомизированным стилем. Это позволит добавить заполненный круг (filled circle) к стилю, что облегчит задачу.

Шаг 1: Создание пользовательского стиля для вкладки

Сначала необходимо создать новый стиль для TTabItem, который будет содержать визуальные элементы для закрытия вкладки и индикатора изменений. В этом стиле можно определить кнопку, которая отображает заполненный круг или крестик в зависимости от активности вкладки.

Шаг 2: Обработка событий изменения содержимого вкладки

Добавьте логику обработки события изменения содержимого вкладки. Это событие должно устанавливать состояние индикатора изменений (заполненный круг) для активной или неактивной вкладки.

Шаг 3: Обработчик закрытия вкладки

Создайте процедуру CloseTab, которая будет обрабатывать нажатие кнопки закрытия вкладки. В этой процедуре необходимо удалить ссылку на форму, связанную с вкладкой, и обновить индекс активной вкладки.

Пример кода для добавления нового таба:

procedure TMain.btnParametresClick(Sender: TObject);
var  F : TFormParam;
     ATabItem : TTabItem;
begin
// Если вкладка уже существует, активируем её.
if Liste.ContainsKey('Parametres')
then begin
    TabControl1.ActiveTab:=IndexTab('Paramètres');
end
else begin
// Создаём новую форму и добавляем вкладку в таб-контрол.
  F:=TFormParam.Create(Self);
  ATabItem:=TabControl1.Add();
  Liste.Add('Parametres',F);
  ATabItem.Text:='Paramètres';
  ATabItem.StyleLookup:='CloseTabItem'; // Указываем стиль для новой вкладки
  TButton(ATabItem.FindStyleResource('btnCloseTab')).OnClick:=CloseTab; // Обработчик закрытия
  TButton(ATabItem.FindStyleResource('btnCloseTab')).TagObject:=ATabItem;
  TButton(ATabItem.FindStyleResource('btnCloseTab')).TagString:='Parametres';
  ATabItem.AddObject(F.MainLayout);
  TabControl1.TabIndex:=TabControl1.TabCount-1; // Делаем новую вкладку активной
end;
// Прячем главный вью, если это необходимо для вашего интерфейса.
Multiview1.HideMaster;
end;

Пример кода обработчика закрытия вкладки:

procedure TMain.CloseTab(Sender: TObject);
var F : TForm;
begin
// Проверяем, можно ли закрыть форму и переходим на предыдущую вкладку.
if not Datas.PeutFermer then Exit;

if TabControl1.TabIndex = TabControl1.TabCount - 1 then
    TabControl1.Previous else TabControl1.Next;

// Находим связанную с вкладкой форму и закрываем её.
if Liste.TryGetValue(TButton(Sender).TagString, F) then
  F.Close;

TTask.Run(
    procedure
    begin
      TThread.Synchronize(nil,
        procedure
        begin
         TButton(Sender).TagObject.DisposeOf;
         if TabControl1.TabIndex > TabControl1.TabCount - 1
           then TabControl1.TabIndex := TabControl1.TabCount - 1; // Корректируем индекс активной вкладки, если он вышел за пределы
        end);
    end);

// Удаляем ссылку на закрытую вкладку из списка.
Liste.Remove(TButton(Sender).TagString);
end;

Шаг 4: Обработка отображения индикатора изменений

Чтобы показать "заполненный круг" при изменении содержимого таба, можно использовать простой визуальный элемент (например, TFMXImage), который будет переключаться в зависимости от логического флага изменения. Этот флаг должен обновляться каждый раз, когда происходит изменение данных вкладки.

Заключение

Создание кастомизированных табов с возможностью отображения состояния активности и изменений содержимого требует внимательного подхода к стилизации и обработке событий. Используя приведённые примеры, можно создать функциональные вкладки в стиле IDE Delphi для приложений FireMonkey.

Этот ответ предлагает начать разработку с создания пользовательского стиля, который позволит добавить необходимые индикаторы состояния на вкладках и обработать логику их взаимодействия. Это решение не является использованием стандартного TTabControl, но требует более глубокого понимания работы с кастомизированными стилями в FireMonkey.

Обратите внимание, что приведённый код является лишь примером и может потребовать дополнительной адаптации под конкретные нужды вашего приложения.

Создано по материалам из источника по ссылке.

В данном описании рассматривается процесс создания кастомизированных вкладок в стиле IDE Delphi для приложений FireMonkey с использованием пользовательского стиля и обработки событий, включая отображение индикатора изменений в виде заполненного


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Интерфейс ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-10 17:34:43/0.0037388801574707/0