Entwickler-Ecke

Sonstiges (Delphi) - Mehrfaches Buttondrücken verhindern


Cashels - So 22.09.02 14:21
Titel: Mehrfaches Buttondrücken verhindern
Hallo,

hab mal wieder einen typischen DAU Fall. Der gute Mensch sitzt vor meinem Programm, drückt auf ein Button um eine Funktion auszuführen. Die Rechenroutine in dieser Funktion nimmt allerdings etwas Zeit in Anspruch. Und weil der gute Mann geübt ist in Ungeduld, drückt er natürlich während dieser Zeit noch mindestens 3 mal auf den Button und wundert sich warum da nix passiert. Klar, dass dann zum Schluss, die gesamten Berechnungen mehrmals ausgeführt werden.

Jetzt meine Frage: wie kann ich das verhindern, ohne jeweils nach dem Drücken den Button zu disablen und nach Abschluss wieder freizugeben.

Danke für jeden Tip.

Gruss,
Tom


Chatfix - So 22.09.02 14:38

nimm doch einfach eine variable


Quelltext
1:
2:
3:
4:
5:
6:
if VAR=true then
  begin
    VAR:=false;
    {DEIN CODE}
    VAR:=true;
  end;



habs nicht probiert müsste aberr gehen, du kannst die Variable ja auch anders nennen. (VAR :boolean;)

ich hoffe ich konnte dir etwas helfen


Delete - So 22.09.02 14:44

Noch einfacher: Setz den Button nach dem Klick auf enabled. Und wenn die Rechnung fertig ist aktivierst du ihn wieder.


Chatfix - So 22.09.02 14:47

Zitat:
ohne jeweils nach dem Drücken den Button zu disablen und nach Abschluss wieder freizugeben


@ luckie deswegen hab ich das mit der variable gemacht, sonst hätt ich das mit dem disablen auch geschrieben.


Delete - So 22.09.02 14:51

Was spricht dagegen? Wenn er so wie so nicht draufklicken soll, warum ihm dann die Möglichkeit geben, bzw. im die Illusion zu geben es wäre möglich?


Chatfix - So 22.09.02 14:53

mir musst du das nicht sagen, er will es ja so... wer versteht schon einen programmierer *fg*

I love DAU


Cashels - So 22.09.02 16:51

@Chatfix,
Danke für dein Tip. Aber leider funktionniert dies nicht da dein Code immer nur sequentiell ausgeführt wird. Somit checkst du Var auf true, arbeitest dein Code durch, und setzts anschliessend deine Variabel wieder auf true. Das 2. Clicken auf den Arbeiten wird erst NACH dem Abarbeiten des 1. Clicks durchgeführt. Deine Variabel ist also stets auf true!

Ich habs jetzt mit der enabled/disabled Methode gelöst, was auch prima funktionniert. Ich muss Luckie Recht geben: wenn ich das Drücken verbiete, dann kann das auch ruhig so erscheinen.

Besten Dank an alle,
Gruss,
Tom