如何设置自定义在2010年德尔福TTrackBar蜱?
-
23-09-2019 - |
题
我试图蜱样式设置为tsManual,最小和最大位置,以分别在1和100,并在9,19,79和89加蜱和没有蜱在所有示出除了detault第一和最后一个,其中控制自动显示。我尝试过其他的价值观和没有是不断所示。我的代码是:
TrackBar1.TickStyle := tsManual;
TrackBar1.Min := 1;
TrackBar1.Max := 100;
TrackBar1.SetTick( 9 );
TrackBar1.SetTick( 19 );
TrackBar1.SetTick( 79 );
TrackBar1.SetTick( 89 );
任何建议?我敢肯定,我失去了一个重要的细节,并且该文档是很稀疏。这是在一个新的空VCL形式在2010年的Delphi投射具有更新4。
感谢您提前。
解决方案
TTrackBar.SetTick()不如果Handle属性是当前未分配的发送TBM_SETTIC消息:
procedure TTrackBar.SetTick(Value: Integer);
begin
if HandleAllocated then // <-- here
SendMessage(Handle, TBM_SETTIC, 0, Value);
end;
在窗口句柄没有得到分配,直到手柄属性为读首次,而不是当该组件最初创建。这样,主叫SetTick()之前调用HandleNeeded():
TrackBar1.TickStyle := tsManual;
TrackBar1.Min := 1;
TrackBar1.Max := 100;
TrackBar1.HandleNeeded; // <-- here
TrackBar1.SetTick( 9 );
TrackBar1.SetTick( 19 );
TrackBar1.SetTick( 79 );
TrackBar1.SetTick( 89 );
其他提示
我不知道为什么程序TrackBar1.SetTick不工作,但如果你SendMessage函数相同的方式,过程确实会工作。您需要在单元CommCtrl添加到您的使用条款,以解决TBM_SETTIC如图所示...
implementation
Uses CommCtrl;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
TrackBar1.TickStyle := tsManual;
TrackBar1.Min := 0;
TrackBar1.Max := 100;
SendMessage(TrackBar1.Handle, TBM_SETTIC, 0, 9);
SendMessage(TrackBar1.Handle, TBM_SETTIC, 0, 19);
SendMessage(TrackBar1.Handle, TBM_SETTIC, 0, 79);
SendMessage(TrackBar1.Handle, TBM_SETTIC, 0, 89);
end;
希望这有助于!
除了handle
正在准备和TickStyle
= tsManual
,所述frequency
属性必须被设置为一个或多个,更容易地,以1
不隶属于 StackOverflow