2016-08-25 10 views
0

Delphi TTrackBar имеет два события для отслеживания изменений:Delphi TTrackBar не на полном случае

  1. OnChange

  2. OnTracking

Но оба они делают то же самое , Например:

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

На любом небольшом изменении он показывает 10 сообщение.

Как определить последние изменения на мобильных телефонах? Изменение должно произойти после всего отслеживания?

+2

вы пробовали отключить 'Tracking'? Они не делают то же самое больше ... –

ответ

4

Эти два события выполняют одно и то же, когда включен Tracking (по умолчанию). Отключение Tracking приведет к тому, что OnChange будет запущен только после того, как пользователь будет готов.

Вот краткий демо, чтобы показать, что я имею в виду:

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. 

и затем файл 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