如何反转 Delphi 的 TTrackbar.Orientation 值?

How to reverse Delphi's TTrackbar.Orientation values?

TTrackbar.Orientation 属性设置为trVertical时,Min值在上,Max在下:

如何反转 Min/Max 位置?例如,如果我想在垂直方向上使用 TrackBar 作为音频输出的音量控制,我需要底部的 Min 和顶部的 Max

没有内置的方法可以做到这一点。但是您可以通过代码反转最小值-最大值:

volume := (trackbar.Max - trackBar.Position) + trackBar.Min;

关于ToolTip值的呈现,@Victoria友情提供了拦截TTN_NEEDTEXTwindows消息的解决方案,并更正了文本输出:

uses
  Winapi.CommCtrl;

type
  TTrackBar = class(Vcl.ComCtrls.TTrackBar)
  private
    procedure WMNotify(var Msg: TWMNotify); message WM_NOTIFY;
  end;

implementation

procedure TTrackBar.WMNotify(var Msg: TWMNotify);
begin
  if Msg.NMHdr.code = TTN_NEEDTEXTW then
  begin
    PToolTipTextW(Msg.NMHdr)^.hInst := 0;
    PToolTipTextW(Msg.NMHdr)^.lpszText := 
      PChar('Position: ' + IntToStr((Max - Position) + Min));
  end
  else
    inherited;
end;