どのように設定したカスタムのデルファイ2010年にTTrackBarにダニ?
-
23-09-2019 - |
質問
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に、より簡単に、複数に設定するかしなければならない。
所属していません StackOverflow