AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrfachklick auf Schaltfläche Problem

Ein Thema von weisswe · begonnen am 11. Jul 2015 · letzter Beitrag vom 11. Jul 2015
Antwort Antwort
weisswe
(Gast)

n/a Beiträge
 
#1

Mehrfachklick auf Schaltfläche Problem

  Alt 11. Jul 2015, 07:58
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!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#2

AW: Mehrfachklick auf Schaltfläche Problem

  Alt 11. Jul 2015, 08:19
Lies doch mal hier nach: Controls sofort aktualisieren ohne ProcessMessages
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Mehrfachklick auf Schaltfläche Problem

  Alt 11. Jul 2015, 08:50
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (11. Jul 2015 um 11:23 Uhr)
  Mit Zitat antworten Zitat
weisswe
(Gast)

n/a Beiträge
 
#4

AW: Mehrfachklick auf Schaltfläche Problem

  Alt 11. Jul 2015, 11:20
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..
Wieder was gelernt - und - würde das as TRY UI - USER EXCEPTION bezeichnen..
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 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