如何在Delphi 2010中设置TTrackBar上的自定义标记?

如何在Delphi 2010中设置TTrackBar上的自定义标记?,delphi,delphi-2010,vcl,trackbar,Delphi,Delphi 2010,Vcl,Trackbar,我尝试将记号样式设置为tsManual,最小和最大位置分别设置为1和100,并在9、19、79和89处添加记号,除了控件自动显示的detault first和last之外,根本不显示记号。我尝试了其他值,但没有显示任何值。我的代码是: TrackBar1.TickStyle := tsManual; TrackBar1.Min := 1; TrackBar1.Max := 100; TrackBar1.SetTick( 9 ); TrackBar1.SetTick( 19 ); TrackBar

我尝试将记号样式设置为tsManual,最小和最大位置分别设置为1和100,并在9、19、79和89处添加记号,除了控件自动显示的detault first和last之外,根本不显示记号。我尝试了其他值,但没有显示任何值。我的代码是:

TrackBar1.TickStyle := tsManual;
TrackBar1.Min := 1;
TrackBar1.Max := 100;
TrackBar1.SetTick( 9 );
TrackBar1.SetTick( 19 );
TrackBar1.SetTick( 79 );
TrackBar1.SetTick( 89 );
有什么建议吗?我确信我遗漏了一个重要的细节,而且文档非常稀少。这是Delphi 2010中的一个新的空VCL表单项目,更新为4


提前谢谢。

我不知道为什么TrackBar1.SetTick程序不起作用,但如果您以相同的方式发送消息,该程序将起作用。您需要将unit CommCtrl添加到uses子句以解析TBM_设置,如图所示

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;
希望这有帮助

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

procedure TTrackBar.SetTick(Value: Integer);
begin
  if HandleAllocated then // <-- here
    SendMessage(Handle, TBM_SETTIC, 0, Value);
end;
过程TTrackBar.SetTick(值:整数);
开始

如果HandleAllocated then//除了
handle
准备就绪和
TickStyle
=
tsManual
之外,
频率
属性必须设置为倍数,或者更容易设置为1。

多谢雷米,这就解释了我出现问题的原因!
TrackBar1.TickStyle := tsManual; 
TrackBar1.Min := 1; 
TrackBar1.Max := 100; 
TrackBar1.HandleNeeded; // <-- here 
TrackBar1.SetTick( 9 ); 
TrackBar1.SetTick( 19 ); 
TrackBar1.SetTick( 79 ); 
TrackBar1.SetTick( 89 );