如何反转 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_NEEDTEXT
windows消息的解决方案,并更正了文本输出:
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;
当TTrackbar.Orientation
属性设置为trVertical
时,Min
值在上,Max
在下:
如何反转 Min
/Max
位置?例如,如果我想在垂直方向上使用 TrackBar 作为音频输出的音量控制,我需要底部的 Min
和顶部的 Max
。
没有内置的方法可以做到这一点。但是您可以通过代码反转最小值-最大值:
volume := (trackbar.Max - trackBar.Position) + trackBar.Min;
关于ToolTip值的呈现,@Victoria友情提供了拦截TTN_NEEDTEXT
windows消息的解决方案,并更正了文本输出:
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;