Question

I essayé de définir le style de la tique à tsManual, la minute et la position max à 1 et 100, respectivement, et ajouter les tiques à 9, 19, 79 et 89 et aucun tiques sont représentées en tout sauf le detault premier et dernier qui le contrôle montre automatiquement. J'ai essayé d'autres valeurs et ne sont jamais affichés. Mon code est:

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

Toutes les suggestions? Je suis sûr que je manque un détail important, et la documentation est assez rare. Ceci est un nouveau vide VCL projet Forms dans Delphi 2010 avec la mise à jour 4.

Je vous remercie à l'avance.

Était-ce utile?

La solution

TTrackBar.SetTick () ne transmet pas le message TBM_SETTIC si la propriété Handle est actuellement désaffecter:

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

La poignée de fenêtre ne soit pas affecté tant que la propriété poignée est lu pour la première fois, et non pas lorsque le composant est initialement créé. En tant que tel, appelez HandleNeeded () avant d'appeler SetTick ():

TrackBar1.TickStyle := tsManual; 
TrackBar1.Min := 1; 
TrackBar1.Max := 100; 
TrackBar1.HandleNeeded; // <-- here 
TrackBar1.SetTick( 9 ); 
TrackBar1.SetTick( 19 ); 
TrackBar1.SetTick( 79 ); 
TrackBar1.SetTick( 89 );

Autres conseils

Je ne sais pas pourquoi la procédure TrackBar1.SetTick ne fonctionne pas, mais si vous sendMessage de la même manière la procédure fonctionnera-t-il. Vous devrez ajouter l'unité CommCtrl à votre clause uses pour résoudre TBM_SETTIC comme indiqué ...

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;

Hope this helps!

En plus de la handle être prêt et TickStyle = tsManual, la propriété frequency doit être réglé à un multiple ou, plus facilement, à 1.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top