2016-08-25 14 views
0

デルファイTTrackBarは、変更を追跡するための2つのイベントがあり、完全なイベントではありません。 。例:デルファイTTrackBarは

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

小さな変更では、10というメッセージが表示されます。

携帯電話の最終変更を検出するにはどうすればよいですか?すべての追跡後に変更が必要ですか?

+2

あなたは 'Tracking'を無効にすることを試みたことがありますか?彼らはもう同じことをしません... –

答えて

4

これら2つのイベントは、Trackingが有効になっている場合(デフォルト)は同じことを行います。 OnChangeは、ユーザーが終了した後にのみ起動されるように、Trackingを無効にします。

は、ここで私が何を意味するか表示する簡単なデモです:

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