我试图蜱样式设置为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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top