如何反转Delphi的TTrackbar.Orientation值?

时间:2018-06-14 19:49:45

标签: delphi vcl win32gui trackbar

TTrackbar.Orientation属性设置为trVertical时,Min值位于顶部,Max位于底部:

trackbar showing position values on top and bottom

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

1 个答案:

答案 0 :(得分:2)

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

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

关于ToolTip值的表示,@ Victoria提供了一个拦截TTN_NEEDTEXT窗口消息并更正文本输出的解决方案:

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;