ble*_*tin 4 windows delphi vcl tooltip
Delphi 中的组件TTrackBar是标准 Windows 轨迹栏控件的包装器。当该PositionToolTip属性不是 None 时,拖动轨迹栏控件的滑块时会显示工具提示。
默认情况下,该工具提示显示控件的 Min 和 Max 之间的纯整数。有没有办法手动更新该位置工具提示文本,以便在音量控制的情况下可以将数值格式化为“80%”?
当查看Windows 轨迹栏控制文档时,似乎有一个TBM_GETTOOLTIPS消息,它允许检索工具提示的句柄。但不确定如何使用该句柄更新工具提示文本。
我认为最好的方法是使用TTN_NEEDTEXT通知并填充NMTTDISPINFO结构:
unit Unit1;\n\ninterface\n\nuses\n Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,\n Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, CommCtrl;\n\ntype\n TTrackBar = class(Vcl.ComCtrls.TTrackBar)\n procedure WndProc(var Message: TMessage); override;\n end;\n\n TForm1 = class(TForm)\n TrackBar1: TTrackBar;\n private\n public\n end;\n\nimplementation\n\n{$R *.dfm}\n\nprocedure TTrackBar.WndProc(var Message: TMessage);\nbegin\n inherited;\n case Message.Msg of\n WM_NOTIFY:\n if PNMHdr(Message.LParam).code = TTN_NEEDTEXT then\n begin\n var S := Round(100 * Position / Max).ToString + \'%\';\n FillChar(\n PNMTTDispInfo(Message.LParam).szText,\n Length(PNMTTDispInfo(Message.LParam).szText) * SizeOf(Char),\n 0);\n if S.Length <= Length(PNMTTDispInfo(Message.LParam).szText) then\n CopyMemory(\n @PNMTTDispInfo(Message.LParam).szText,\n Pointer(S),\n S.Length * SizeOf(Char)\n );\n end;\n end;\nend;\n\nend.\nRun Code Online (Sandbox Code Playgroud)\n\n(大多数情况下,英语中的百分号前不使用空格。但是,在许多其他语言中,应该有一个空格。例如,在瑞典语中,百分号前始终有一个不间断空格.所以50%用英语,但50\xc2\xa0%用瑞典语。)
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |