質問

Iは、それぞれtsManual、1と100の最小値と最大値の位置に目盛スタイルを設定しようと追加9、19、79および89にマダニおよびNOダニはdetault最初と最後の制御を除いて全く示されていません自動的に表示されます。私は他の値を試してみましたが、いずれも、これまで表示されません。私のコードは次のとおりです。

TrackBar1.TickStyle := tsManual;
TrackBar1.Min := 1;
TrackBar1.Max := 100;
TrackBar1.SetTick( 9 );
TrackBar1.SetTick( 19 );
TrackBar1.SetTick( 79 );
TrackBar1.SetTick( 89 );

任意の提案ですか?私は、重要な詳細を欠けていると確信している、とドキュメンテーションはかなり希薄です。これは、アップデート4とデルファイ2010年の新しい空のVCLフォームプロジェクトである。

事前にありがとうございます。

役に立ちましたか?

解決

:Handleプロパティが現在割り当てられていない場合は、

TTrackBar.SetTick()はTBM_SETTICメッセージを送信しません

procedure TTrackBar.SetTick(Value: Integer);
begin
  if HandleAllocated then // <-- here
    SendMessage(Handle, TBM_SETTIC, 0, Value);
end;
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 );

他のヒント

手続きTrackBar1.SetTickが仕事をしない理由私は知りませんが、あなたが同じようにのSendMessage場合の手順は、それが動作しますし。あなたが示すように、解決TBM_SETTICにあなたのuses節にユニットCOMMCTRLを追加する必要があります...

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