如何在Delphi 2010中的TTrackBar上设置自定义刻度?

Eri*_*ier 3 delphi vcl trackbar delphi-2010

我试图将刻度线样式设置为tsManual,分别将最小和最大位置设置为1和100,并在9,19,79和89处添加刻度,除了控件自动显示的第一个和最后一个之外,没有显示任何刻度.我尝试了其他值,但没有显示任何值.我的代码是:

TrackBar1.TickStyle := tsManual;
TrackBar1.Min := 1;
TrackBar1.Max := 100;
TrackBar1.SetTick( 9 );
TrackBar1.SetTick( 19 );
TrackBar1.SetTick( 79 );
TrackBar1.SetTick( 89 );
Run Code Online (Sandbox Code Playgroud)

有什么建议?我确定我错过了一个重要的细节,文档非常稀疏.这是在Delphi 2010中使用更新4的新空VCL Forms项目.

先感谢您.

Rem*_*eau 7

如果Handle属性当前未分配,则TTrackBar.SetTick()不发送TBM_SETTIC消息:

procedure TTrackBar.SetTick(Value: Integer);
begin
  if HandleAllocated then // <-- here
    SendMessage(Handle, TBM_SETTIC, 0, Value);
end;
Run Code Online (Sandbox Code Playgroud)

在第一次读取Handle属性之前,不会分配窗口句柄,而不是在最初创建组件时.因此,在调用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 );
Run Code Online (Sandbox Code Playgroud)