AGB  ·  Datenschutz  ·  Impressum  







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

User klicken unterbinden während Querry läuft

Ein Thema von Jumpy · begonnen am 9. Dez 2010 · letzter Beitrag vom 19. Dez 2010
Antwort Antwort
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#1

AW: User klicken unterbinden während Querry läuft

  Alt 9. Dez 2010, 12:03
Form1.Enabled := false;
und danach wieder auf true
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
GHorn

Registriert seit: 24. Mär 2009
Ort: NRW
124 Beiträge
 
#2

AW: User klicken unterbinden während Querry läuft

  Alt 9. Dez 2010, 12:39
... und dazu dann noch den Cursor auf crSQLWait oder crHourGlass setzen und anschließend wieder zurück.
Dann sieht der Anwender gleich, dass er warten soll.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: User klicken unterbinden während Querry läuft

  Alt 9. Dez 2010, 12:57
Ich würde nicht das ganze Form deakivieren, sondern nur die Schaltfläche.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: User klicken unterbinden während Querry läuft

  Alt 9. Dez 2010, 13:07
Danke erstmal. Das Problem ist halt, dass es massig andere Buttons auf dem Form gibt, und ich nicht 20 mal ButtonXY.Enabled im Code haben will. Daher mein versuch über die ActionList. Versuch jetzt mal den Vorschlag mit dem Form.Enabled.

Jumpy
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: User klicken unterbinden während Querry läuft

  Alt 9. Dez 2010, 13:13
Das dürfte aber dazu führen, dass die Form nicht mehr reagiert und der Benutzer denkt das Programm wäre abgestürzt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: User klicken unterbinden während Querry läuft

  Alt 9. Dez 2010, 13:30
Nee das hat schon gepasst, da ich hinterher ja Enabled wieder auf true setze. Aber es hat nix gebracht. Wie zuvor kann man wild auf Buttons klicken, ohne das zunächst was passiert, aber wenn die Querry dann fertig geöffnet ist und ein Ergebnis zurückgebracht hat, passiert alles, was nach drücken der Buttons geschehen sollte.

Was den Eindruck des Absturzes angeht, so ist das ja genrell ein Problem, da ja wie geschildert nix passiert, während die Querry läuft und jeder Knopfdruck scheinbar ignoriert wird, so dass ein User denken könnte, das Prog. wäre abgestürzt. Aber damit muss man bei langen Abfragen halt leben. Was halt nur stört ist, das evtl. Buttonklicks während der "Todzeit" des Progs trotzdem irgendwie registriert und dann anschließend ausgeführt werden.

Weitere Ideen gerne willkommen. Vllt. ist ja wirklich der Zeitpunkt bzw. das Ereignis wichtig, bei dem alles wieder aktiviert wird.

Jumpy
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#7

AW: User klicken unterbinden während Querry läuft

  Alt 9. Dez 2010, 13:35
Erst disablen, dann Abfrage ausführen, dann wieder enablen. Sonst laufen die Clicks und sonstigen Aktionen in der Botschaftswarteschlange auf.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#8

AW: User klicken unterbinden während Querry läuft

  Alt 9. Dez 2010, 13:52
Nee das hat schon gepasst, da ich hinterher ja Enabled wieder auf true setze. Aber es hat nix gebracht. Wie zuvor kann man wild auf Buttons klicken, ohne das zunächst was passiert, aber wenn die Querry dann fertig geöffnet ist und ein Ergebnis zurückgebracht hat, passiert alles, was nach drücken der Buttons geschehen sollte.

Was den Eindruck des Absturzes angeht, so ist das ja genrell ein Problem, da ja wie geschildert nix passiert, während die Querry läuft und jeder Knopfdruck scheinbar ignoriert wird, so dass ein User denken könnte, das Prog. wäre abgestürzt. Aber damit muss man bei langen Abfragen halt leben. Was halt nur stört ist, das evtl. Buttonklicks während der "Todzeit" des Progs trotzdem irgendwie registriert und dann anschließend ausgeführt werden.

Weitere Ideen gerne willkommen. Vllt. ist ja wirklich der Zeitpunkt bzw. das Ereignis wichtig, bei dem alles wieder aktiviert wird.

Jumpy
Mach mal ein Application.ProzessMessages; bevor du das Form wieder aktivierst. Schöner wäre es das ganze in einen Thread auszulagern.
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
mz23
(Gast)

n/a Beiträge
 
#9

AW: User klicken unterbinden während Querry läuft

  Alt 19. Dez 2010, 08:57
Hallo Jumpy,

Danke erstmal. Das Problem ist halt, dass es massig andere Buttons auf dem Form gibt, und ich nicht 20 mal ButtonXY.Enabled im Code haben will. Daher mein versuch über die ActionList. Versuch jetzt mal den Vorschlag mit dem Form.Enabled.

Jumpy
Du kannst eine for-Schleife über alle Objekte machen,
die TButtons (bzw. TCheckBoxes oder TRadioButtons oder
TEdits) sind und diese dann Enabled:=False setzen.

So hast Du nur eine Schleife, die du auch nicht bearbeiten
mußt, wenn Buttons wegfallen bzw. hinzukommen sollten)

Das crHourGlas und crDefault setzen ist ein guter Tipp
von einem anderen Antworter hier. Allerdings genügt ein
nur setzen nicht ohne ein UpDate bzw. Refresh und danach ein
kurzes Sleep() einzufügen.

Alles klar,
MfG Manfred Zenns

PS: Ich gebe hier nur "meine" Erfahrungen mit Delphi wieder.

Oops:
Ist mir noch was eingefallen.
Bevor du die Action startest, setze ein Form-großes TPanel
(über alle Objekte) mit Text, was nun läuft.

Erhalten dann die Objekte in deinem Form Änderungen,
und sind diese abgeschlossen (!?!) entferne das Panel
über Visible wieder.

Alle Klicks in der Zwischenzeit hat dann das Panel
abgefangen.

Aber ich gebe dir recht, es muß eine elegantere Lösung
geben.

Geändert von mz23 (19. Dez 2010 um 09:07 Uhr)
  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
 
#10

AW: User klicken unterbinden während Querry läuft

  Alt 19. Dez 2010, 09:57
So müsste es eigentlich funktionieren:
Delphi-Quellcode:
ActionList1.Enabled := False;
Application.ProcessMessages; // evtl. Unnötig
try
  // jetzt das ganze Geraffel ausführen
finally
  Application.ProcessMessages;
  ActionList1.Enabled := True;
end;
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)
  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 05:26 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