![]() |
AW: Verhindern von Mehrfachaktionen in der GUI
Zitat:
|
AW: Verhindern von Mehrfachaktionen in der GUI
Ja, ich habe es grade an einem Beispielprojekt getestet und es ist wie du sagst. Das Form ist blockiert, solange meine onclick läuft.
Komischerweise ist es in meinem "grossen" Projekt wirklich so, dass man mehrfach klicken kann. Ich mache dort ziemlich viel mit sehr vielen Objekten, vielleicht liegt es daran, dass Delphi dann verschiedene Threads startet? |
AW: Verhindern von Mehrfachaktionen in der GUI
Delphi startet nie von sich aus verschiedene Threads. Wahrscheinlich wird irgendwo während der Verarbeitung Application.ProcessMessages aufgerufen.
|
AW: Verhindern von Mehrfachaktionen in der GUI
Wie gesagt, wenn man die Messagebearbeitung irgendwo "manuell" Abarbeitet, dann werden diese auch zwischendurch abgearbeitet.
> Delay, Application.ProcessMessages und Co. Zitat:
|
AW: Verhindern von Mehrfachaktionen in der GUI
Oder du nutzt Komponenten die intern Threads starten bzw. Application.ProcessMessages ausführen. Sinnvoller ist es aber an sich schon, dass man selbst Threads startet und dem User entsprechend Feedback gibt. Klar, ist es mehr Aufwand und muss immer abgeschätzt werden.
|
AW: Verhindern von Mehrfachaktionen in der GUI
Zitat:
|
AW: Verhindern von Mehrfachaktionen in der GUI
Zitat:
Zitat:
|
AW: Verhindern von Mehrfachaktionen in der GUI
Ah, ok :)
Ich bezog mich übrigens auf den 2. Absatz im gleichen Beitrag: Zitat:
|
AW: Verhindern von Mehrfachaktionen in der GUI
Grunsätzlich ist es ratsam, den Anwender zu informieren - das z.b. die nächste halbe Stunde ein File gesichert wird.:-)
Ich behaupte es ist falsch - dabei mögliche Aktivitäten sei es Menüs oder Buttons zu deaktivieren. Das ist zwar syntaktisch korrekt - erzeugt aber u.U. einen nicht mehr zu überblickenden Overhead. Eine gangbare alternative wäre das in (a)synchrone Thread auszulagern. Alternativ über ein separaten modalen - Dialog. Da dieser dann den Focus und somit auch alle onClick() Ereignisse erhält, ist die Frage ob Button sperren oder nicht, oder Variable abfragen zweck- und sinnlos. Und da bei guter Programmierung der Code nicht am GUI hängt, ist es doch egal, von wo er aufgerufen wird, gell? :-mschmidt |
AW: Verhindern von Mehrfachaktionen in der GUI
Ich würde folgendes machen: Bevor die Aktion ausgeführt wird, wird eine Kopie der Arbeitsdaten im Speicher erzeugt. Während dieses Prozesses wird ein modaler Dialog eingeblendet, der dem Nutzer mitteilt, dass das Programm gerade am Arbeiten ist.
Mit der Kopie der Arbeitsdaten kannst du nun in einem eigenen Thread machen was du möchtest (zum Beispiel auf die Festplatte schreiben, komplexe Berechnungen Anstellen etc.) und der Benutzer kann trotzdem (abgesehen von der Kurzen Unterbrechung oben) weiterarbeiten. Diese Vorgehensweise ermöglicht es dir auch mehrere der Aktionen gleichzeitig auszuführen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz