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

Проблема с чекбоксами в VirtualTrees.pas 5.0.0: некорректная отрисовка состояния csUncheckedNormal при включении toThemeAware

Delphi , Синтаксис , Деревья

В статье рассматривается проблема, связанная с некорректной отрисовкой чекбоксов в версии 5.0.0 пакета VirtualTrees.pas при включенном параметре toThemeAware. При настройке чекбоксов на csUncheckedNormal, они отображаются как выделенные (checked) и активные (hot). Для правильной отрисовки неотмеченного, тематизированного чекбокса с помощью DrawElement, необходимо задать значения Element = teButton, Part = 3, и State = 5. Однако, в VirtualTrees.pas используется неправильное значение State = 1, когда узел установлен в csUncheckedNormal.

Для решения этой проблемы было предложено несколько вариантов. Один из них заключается в использовании функции TThemeServices.GetElementDetails или самостоятельном расчете индекса состояния для получения правильной отрисовки элемента. Ниже приведен пример кода, исправляющий проблему:

procedure TBaseVirtualTree.PaintCheckImage(Canvas: TCanvas;
  const ImageInfo: TVTImageInfo;
  Selected: Boolean);
var
  State: Integer;
  Details: TThemedElementDetails;
begin
  ...
  case Index of
    0..8: // radio buttons
    begin
      State := Ord(TThemedButton(tbRadioButtonUncheckedNormal)) + Index - 1;
      Details := StyleServices.GetElementDetails(TThemedButton(State));
    end;
    9..20: // check boxes
    begin
      State := Ord(TThemedButton(tbCheckBoxUncheckedNormal)) + Index - 9;
      Details := StyleServices.GetElementDetails(TThemedButton(State));
    end;
    21..24: // buttons
    begin
      State := Ord(TThemedButton(tbPushButtonNormal)) + Index - 21;
      Details := StyleServices.GetElementDetails(TThemedButton(State));
    end;
  else
    begin
      Details.Part := 0;
      Details.State := 0;
    end;
  end;
  ...
end;

Этот код решает проблему некорректной отрисовки чекбоксов в VirtualTrees.pas 5.0.0 при включенном параметре toThemeAware.

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

Контекст: В статье описывается проблема с неверной отрисовкой чекбоксов в версии 5.0.0 пакета VirtualTrees.pas при использовании параметра toThemeAware, когда они отображаются как выделенные и активные, а не неотмеченные, как ожидалось.


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

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




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


:: Главная :: Деревья ::


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:18:31/0.0052511692047119/1