1

Delphi TTrackBar には、変更を追跡するための 2 つのイベントがあります。

  1. 変更時

  2. オントラッキング

しかし、どちらもやっていることは同じです。例えば:

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

小さな変更があると、10メッセージが表示されます。

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

4

1 に答える 1

5

これら 2 つのイベントは、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
于 2016-08-25T18:19:27.023 に答える