Einzelnen Beitrag anzeigen

CHackbart

Registriert seit: 22. Okt 2012
260 Beiträge
 
#1

TEvent unter iOS

  Alt 21. Nov 2017, 19:36
Hi,

ich wollte keine Leichenfledderei betreiben und den Thread von Mavarik herauskamen, aber mir ist da ein Fehler unter 10.2 aufgefallen:

Code:
unit UMain;

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, System.SyncObjs;

type
  TForm3 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
    FEvent: TEvent;
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation

{$R *.fmx}

procedure TForm3.Button1Click(Sender: TObject);
begin
 // if FEvent.WaitFor(0) <> TWaitresult.wrSignaled then
    FEvent.SetEvent;
end;

procedure TForm3.Button2Click(Sender: TObject);
begin
  //if FEvent.WaitFor(0) = TWaitresult.wrSignaled then
    FEvent.ResetEvent;
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
  FEvent := TEvent.Create(nil, true, false, '');
end;

procedure TForm3.FormDestroy(Sender: TObject);
begin
  FEvent.Free;
end;

procedure TForm3.Timer1Timer(Sender: TObject);
begin
  case FEvent.WaitFor(0) of
    wrSignaled:
      Label1.Text := 'Signaled';
    wrTimeout:
      Label1.Text := 'Timeout';
    wrAbandoned:
      Label1.Text := 'Abandoned';
    wrError:
      Label1.Text := 'Error';
    wrIOCompletion:
      Label1.Text := 'IOCompletion';
  end;
end;
Wenn ich TEvent verwende klappt das unter Android wie unter Windows korrekt. In iOS verhält sich das ganze aber komisch. Klicke ich in obigen Beispiel 5x auf Button1, muss ich hinterher 5x auf Button2 klicken, damit Event wieder zurückgesetzt wird.
Kann das jemand eventuell verifizieren?

Christian
  Mit Zitat antworten Zitat