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

Создание панели вкладок в стиле браузера для FireMonkey FM2 без сторонних компонентов

Delphi , Компоненты и Классы , Вкладки и Страницы

Создание панели вкладок с кнопкой закрытия в Delphi XE3 FireMonkey 2

Приветствую! В данной статье мы рассмотрим, как создать панель вкладок в стиле браузера для FireMonkey FM2, которая будет включать кнопку закрытия для каждой вкладки. Это будет полезно для разработчиков, которые работают с Delphi и предпочитают создавать свои собственные компоненты, избегая использования сторонних библиотек.

Контекст вопроса:

Разработчик столкнулся с проблемой создания панели вкладок с кнопкой закрытия в FireMonkey FM2. Поскольку в FM2 нет компонентов TTabsheet и TPageControl, как в VCL, использовать ответы из старых вопросов не представляется возможным. Предложенный код из VCL несовместим с FM2, и разработчик не хочет использовать сторонние компоненты, опасаясь их несовместимости с будущими версиями Delphi.

Решение проблемы:

Для создания панели вкладок с кнопкой закрытия в FireMonkey FM2, можно использовать компонент TTabControl, который доступен в "Common Controls". Важно заменить TPageControl и TTabsheet на TTabControl и TTabItem соответственно, а также заменить TRect на TRectF, так как в FMX используются типы с плавающей точкой.

Подтвержденный ответ:

Ниже приведен пример кода на Object Pascal (Delphi), который реализует функционал панели вкладок с кнопками закрытия для каждой вкладки. Код предназначен для работы в среде FireMonkey FM2 и не использует сторонние компоненты.

unit Unit1;

interface

uses
  System.SysUtils,
  FMX.Controls,
  FMX.Forms,
  FMX.Layouts;

// Остальная часть интерфейса...

type
  TFormMain = class(TForm)
    // Компоненты формы...
    procedure FormCreate(Sender: TObject);
    procedure TabControlMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Float);
    // Другие процедуры...
  private
    FCloseButtonsRectF: array of TRectF;
    FCloseButtonMouseDownIndex: Integer;
    // Другие приватные поля...
  public
  end;

var
  FormMain: TFormMain;

// Реализация...

procedure TFormMain.FormCreate(Sender: TObject);
var
  I: Integer;
begin
  // Инициализация компонента TTabControl...
  SetLength(FCloseButtonsRectF, TabControl.Items.Count);
  FCloseButtonMouseDownIndex := -1;
  // Инициализация массива для хранения координат кнопок закрытия...
end;

procedure TFormMain.TabControlDrawItem(Sender: TObject; const Item: TTabItem; var DefaultDraw: Boolean);
var
  CloseBtnSize: Single;
  TabCaption: TPointF;
  CloseBtnRectF: TRectF;
  CloseBtnDrawDetails: TThemedElementDetails;
begin
  // Отрисовка вкладки с кнопкой закрытия...
  // Здесь должен быть код для отрисовки кнопки закрытия, аналогичный VCL, но с использованием TRectF и других FMX-типов.
end;

procedure TFormMain.TabControlMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Float);
var
  I: Integer;
begin
  // Обработка нажатия на кнопку закрытия...
  // Здесь должен быть код для определения нажатия на кнопку закрытия и соответствующего действия.
end;

// Остальная часть реализации...

Альтернативный ответ:

Если разработчик не хочет вдаваться в детали реализации с нуля, он может воспользоваться открытым компонентом, расширяющим базовый FMX TTabControl, доступным на GitHub по ссылке: neTabControl. Этот компонент предоставляет исходный код, который можно изучить и адаптировать под свои нужды.

Заключение:

В данной статье мы рассмотрели, как создать панель вкладок с кнопкой закрытия для каждой вкладки в Delphi XE3 FireMonkey 2, не прибегая к использованию сторонних компонентов. Представленный код является лишь примером и требует дальнейшей доработки и адаптации под конкретные требования проекта.

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

Разработчик в Delphi XE3 хочет создать панель вкладок с функцией закрытия вкладок в FireMonkey 2, используя стандартные компоненты без сторонних библиотек.


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

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




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


:: Главная :: Вкладки и Страницы ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-01-22 14:54:38/0.0036239624023438/0