2016-08-25 1 views
0

Delphi TTrackBar a deux événements pour le suivi des modifications:Delphi TTrackBar ne pas sur l'événement complet

  1. OnChange

  2. OnTracking

Mais les deux font la même chose . Par exemple:

procedure TForm1.TrackBar1Change(Sender: TObject); 
begin 
    ShowMessage(TrackBar1.Value.ToString); 
end; 

Sur tout petit changement, il affiche le message 10. Comment puis-je détecter les derniers changements sur les téléphones portables? Le changement doit se produire après tout le suivi?

+2

Avez-vous essayé de désactiver 'Tracking'? Ils ne font plus la même chose ... –

Répondre

4

Ces deux événements ne font que la même chose lorsque Tracking est activé (par défaut). Désactiver le Tracking fera en sorte que OnChange soit seulement allumé après que l'utilisateur a fini.

Voici une brève démonstration pour montrer ce que je veux dire:

unit Unit1; 

interface 

uses 
    System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, 
    FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, 
    FMX.Controls.Presentation; 

type 
    TForm1 = class(TForm) 
    TrackBar1: TTrackBar; 
    lblChange: TLabel; 
    lblTrack: TLabel; 
    procedure TrackBar1Change(Sender: TObject); 
    procedure TrackBar1Tracking(Sender: TObject); 
    procedure FormCreate(Sender: TObject); 
    private 
    FChangeCount: Integer; 
    FTrackCount: Integer; 
    public 
    procedure DoUpdate; 
    end; 

var 
    Form1: TForm1; 

implementation 

{$R *.fmx} 

procedure TForm1.DoUpdate; 
begin 
    lblChange.Text:= 'Changes: '+IntToStr(FChangeCount); 
    lblTrack.Text:= 'Tracking: '+IntToStr(FTrackCount); 
end; 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    FChangeCount:= 0; 
    FTrackCount:= 0; 
    DoUpdate; 
end; 

procedure TForm1.TrackBar1Change(Sender: TObject); 
begin 
    Inc(FChangeCount); 
    DoUpdate; 
end; 

procedure TForm1.TrackBar1Tracking(Sender: TObject); 
begin 
    Inc(FTrackCount); 
    DoUpdate; 
end; 

end. 

Et puis le fichier FMX:

object Form1: TForm1 
    Left = 0 
    Top = 0 
    Caption = 'Form1' 
    ClientHeight = 480 
    ClientWidth = 640 
    FormFactor.Width = 320 
    FormFactor.Height = 480 
    FormFactor.Devices = [Desktop] 
    OnCreate = FormCreate 
    DesignerMasterStyle = 0 
    object TrackBar1: TTrackBar 
    CanParentFocus = True 
    Orientation = Horizontal 
    Position.X = 112.000000000000000000 
    Position.Y = 96.000000000000000000 
    Size.Width = 217.000000000000000000 
    Size.Height = 19.000000000000000000 
    Size.PlatformDefault = False 
    TabOrder = 0 
    Tracking = False 
    OnChange = TrackBar1Change 
    OnTracking = TrackBar1Tracking 
    end 
    object lblChange: TLabel 
    Position.X = 112.000000000000000000 
    Position.Y = 152.000000000000000000 
    Text = 'lblChange' 
    end 
    object lblTrack: TLabel 
    Position.X = 112.000000000000000000 
    Position.Y = 200.000000000000000000 
    Text = 'lblTrack' 
    end 
end