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

Как улучшить пользовательский интерфейс с помощью подсказок в TTrackBar в Delphi

Delphi , ОС и Железо , Windows

Введение: В Delphi компонент TTrackBar является оберткой для стандартного контрола трека бара операционной системы Windows. Одной из полезных функций этого компонента является отображение подсказок при перемещении ползунка. По умолчанию в подсказке отображается простое целое число в пределах минимума и максимума контрола. Однако, иногда требуется более гибкое форматирование этого числа, например, в процентах для контрола громкости. В данной статье мы рассмотрим, как можно изменить текст подсказки для TTrackBar в Delphi.

Проблема: По умолчанию подсказка TTrackBar в Delphi отображает значение в виде целого числа. В некоторых случаях, например, при использовании TTrackBar в качестве индикатора громкости, было бы удобнее отображать значение в процентах. Существует сообщение TBM_GETTOOLTIPS в документации Windows, которое позволяет получить дескриптор подсказки, но не совсем ясно, как его использовать для обновления текста подсказки.

Решение: Для обновления текста подсказки в TTrackBar можно использовать уведомление TTN_NEEDTEXT и структуру NMTTDISPINFO. При получении этого уведомления можно изменить текст подсказки на нужный, например, добавив проценты к значению ползунка.

Пример кода:

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, CommCtrl;

type
  TTrackBar = class(Vcl.ComCtrls.TTrackBar)
    procedure WndProc(var Message: TMessage); override;
  end;

  TForm1 = class(TForm)
    TrackBar1: TTrackBar;
  private
  public
  end;

implementation

{$R *.dfm}

procedure TTrackBar.WndProc(var Message: TMessage);
begin
  inherited;
  case Message.Msg of
    WM_NOTIFY:
      if PNMHdr(Message.LParam).code = TTN_NEEDTEXT then
      begin
        var S := Round(100 * Position / Max).ToString + '%';
        FillChar(
          PNMTTDispInfo(Message.LParam).szText,
          Length(PNMTTDispInfo(Message.LParam).szText) * SizeOf(Char),
          0);
        if S.Length <= Length(PNMTTDispInfo(Message.LParam).szText) then
          CopyMemory(
            @PNMTTDispInfo(Message.LParam).szText,
            Pointer(S),
            S.Length * SizeOf(Char)
          );
      end;
  end;
end;

end.

В данном примере кода переопределяется обработчик сообщений WndProc для TTrackBar, который реагирует на уведомление TTN_NEEDTEXT. При получении этого уведомления, код округляет значение позиции ползунка до ближайшего целого числа, переводит его в проценты и устанавливает в качестве текста подсказки.

Заключение: Использование уведомления TTN_NEEDTEXT и структуры NMTTDISPINFO позволяет гибко форматировать текст подсказки для TTrackBar в Delphi, что может значительно улучшить пользовательский интерфейс, делая его более интуитивно понятным и информативным.

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

Как изменять текст подсказки в компоненте TTrackBar в Delphi для отображения значения в процентах.


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

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




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


:: Главная :: Windows ::


реклама


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

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