Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Mehrfachklick auf Schaltfläche Problem (https://www.delphipraxis.net/185845-mehrfachklick-auf-schaltflaeche-problem.html)

weisswe 11. Jul 2015 07:58

Mehrfachklick auf Schaltfläche Problem
 
Hallo!

Ich habe das Problem das bei meiner FMX Anwendung (Windows).
Habe mehrere dynamisch erzeugte TCornerButton's, die Datenbankoperationen durchführen.
Nun ist es so, das ein Kunde auf diese Schaltfläche doppelt oder sogar mehrfach klickt.
Das heisst die Befehle "hinter" den Buttons werden auch mehrfach ausgeführt.
Ist auch logisch - NUR setzte ich zu Beginn immer Button.Enabled = FALSE um eben dies zu verhindern.
Es sieht also so aus as wäre die UI [FMX] zu langsam. Lösung -> ProcessMessages -> was ich auf keinen Fall verwenden will.
Natürlich könnte ich globale Vars setzten, aber ist auch keine "schöne" Lösung.

Wie macht ihr das bei euren Projekten??

PS: Ich bin auch noch nie auf die Idee gekommen auf eine Schaltfläche mehrfach zu drücken! :?

Uwe Raabe 11. Jul 2015 08:19

AW: Mehrfachklick auf Schaltfläche Problem
 
Lies doch mal hier nach: Controls sofort aktualisieren ohne ProcessMessages

Sir Rufo 11. Jul 2015 08:50

AW: Mehrfachklick auf Schaltfläche Problem
 
Der Kern des Problems liegt hier
Delphi-Quellcode:
procedure TMyForm.Button1Click( Sender: TObject );
begin
  Button1.Enabled := false;
  // Irgendwas ausführen, was ein klein wenig dauert
  Button1.Enabled := true;
end;
In der Zeit, wo diese Ausführung läuft ist der UI-Thread gesperrt, bzw. beschäftigt und alle auftretenden Aktionen (Klick auf einen Button, Eingabe von Text) werden nicht abgearbeitet. Diese laufen aber in eine Message-Queue und werden abgearbeitet sobald der UI-Thread wieder Zeit hat.

Und da zu diesem Zeitpunkt der Button wieder aktiv ist, wird auch brav der Button-Klick ausgeführt ;)

Darum sollten alle Aktionen, die länger als 50 Millisekunden dauern, in einen Thread ausgelagert werden.

weisswe 11. Jul 2015 11:20

AW: Mehrfachklick auf Schaltfläche Problem
 
Danke für eure Antworten.
Hab's verstanden.
Wundere mich nur wie mache Benutzer arbeiten.
Hab das vorher getestet - aber bin nie auf die Idee gekommen, das man auf eine Schaltfläche mehrfach klicken sollte.. :lol:
Wieder was gelernt - und - würde das as TRY UI - USER EXCEPTION bezeichnen.. :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz