Delphi TTrackBar has two event for tracking changes:
OnChange
OnTracking
But both of them do the same thing. For example:
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
ShowMessage(TrackBar1.Value.ToString);
end;
On any small change it shows 10
message.
How can I detect last change on mobile phones? Change must happens after all tracking?
Those two events only do the same thing when Tracking
is enabled (by default). Disabling the Tracking
will make it so that OnChange
is only fired after user is finished.
Here's a brief demo to show what I mean:
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.
And then the FMX file:
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