AGB  ·  Datenschutz  ·  Impressum  







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

Verhindern von Mehrfachaktionen in der GUI

Ein Thema von eike42 · begonnen am 6. Jul 2010 · letzter Beitrag vom 9. Jul 2010
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#11

AW: Verhindern von Mehrfachaktionen in der GUI

  Alt 6. Jul 2010, 15:22
Vielleicht eine Compilereinstellung?
Das ist eher unwahrscheinlich, da während der Abarbeitung deines Codes keinerlei Messages abgearbeitet werden. Die Form dürfte eigentlich auch nicht bedienbar sein.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
eike42

Registriert seit: 9. Mär 2010
18 Beiträge
 
RAD-Studio 2009 Ent
 
#12

AW: Verhindern von Mehrfachaktionen in der GUI

  Alt 6. Jul 2010, 16:07
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?
Eike
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#13

AW: Verhindern von Mehrfachaktionen in der GUI

  Alt 6. Jul 2010, 16:12
Delphi startet nie von sich aus verschiedene Threads. Wahrscheinlich wird irgendwo während der Verarbeitung Application.ProcessMessages aufgerufen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#14

AW: Verhindern von Mehrfachaktionen in der GUI

  Alt 6. Jul 2010, 16:14
Wie gesagt, wenn man die Messagebearbeitung irgendwo "manuell" Abarbeitet, dann werden diese auch zwischendurch abgearbeitet.

> Delay, Application.ProcessMessages und Co.

Delphi startet nie von sich aus verschiedene Threads. Wahrscheinlich wird irgendwo während der Verarbeitung Application.ProcessMessages aufgerufen.
Wie du an deinem Test ja gemerkt hast.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#15

AW: Verhindern von Mehrfachaktionen in der GUI

  Alt 6. Jul 2010, 16:15
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.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#16

AW: Verhindern von Mehrfachaktionen in der GUI

  Alt 7. Jul 2010, 05:37
Delphi startet nie von sich aus verschiedene Threads. Wahrscheinlich wird irgendwo während der Verarbeitung Application.ProcessMessages aufgerufen.
Wie du an deinem Test ja gemerkt hast.
Darf man fragen, was damit gemeint ist?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#17

AW: Verhindern von Mehrfachaktionen in der GUI

  Alt 7. Jul 2010, 08:25
Darf man fragen, was damit gemeint ist?
Tschuldschung ... sprach den TE an, welcher ja in seinem Test nun auch festgestellt hatte, daß da "eigentlich" nichts paralell läuft.
Ja, ich habe es grade an einem Beispielprojekt getestet und es ist wie du sagst. Das Form ist blockiert, solange meine onclick läuft.
$2B or not $2B
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#18

AW: Verhindern von Mehrfachaktionen in der GUI

  Alt 7. Jul 2010, 15:39
Ah, ok
Ich bezog mich übrigens auf den 2. Absatz im gleichen Beitrag:
Zitat:
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?
  Mit Zitat antworten Zitat
Mschmidt

Registriert seit: 4. Jul 2010
Ort: Berlin
62 Beiträge
 
Delphi XE2 Professional
 
#19

AW: Verhindern von Mehrfachaktionen in der GUI

  Alt 7. Jul 2010, 19:27
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
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#20

AW: Verhindern von Mehrfachaktionen in der GUI

  Alt 9. Jul 2010, 13:53
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.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 23:01 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