Announcement

Collapse
No announcement yet.

Doppeltes Button-OnClick-Ereignis verhindern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Doppeltes Button-OnClick-Ereignis verhindern

    Hallo zusammen,
    ich habe folgendes Problem:
    in einer Maske befindet sich ein Editfeld und ein Button. In dem Editfeld werden Werte eingetragen und durch das Betätigen des Buttons (also genauer durch deren OnClick-Ereignisbehandlungsroutine) werden verschiedene Aktionen durchgeführt. Da das Editfeld nicht durch die Tastatur, sondern durch einen Handscanner (also scannen von Barcodes) gefüllt wird und der Handscanner abschliessend ein CR abschickt (wodurch das OnClick-Ereignis des Buttons ausgelöst wird da dieser Button als Standardbutton definiert ist) tritt ein Problem auf, wenn der Scanner hin und wieder innerhalb einer kurzen Zeitspanne (im millisek. Bereich) zweimal ein CR abschickt (das passiert bei Scannern halt ab und zu). Meine Frage: Wie kann ich in dem OnClick-Ereignis einen solchen doppelten Scan (oder technisch ein kurz aufeinanderfolgendes doppeltes OnClick-Ereignis) unterbinden?
    Gruß
    Uwe

  • #2
    Den Button oder das Editfeld als erstes in der OnClick disablen und als letztes wieder enablen? Bin mir aber nicht sicher, ob das jetzt zu einfach gedacht ist...

    Grüße Joche

    Comment


    • #3
      Mal was zum probieren:

      a)im OnClick die Zeitspanne zwischen den Aufrufen nehmen und erst nach x-Sekunden wieder eine Verarbeitung zulassen

      b)mit PeekMessage im Messagebuffer nach erfolgter Verarbeitung nachschauen und ggf. weitere Nachricht löschen

      c)im OnKey Ereigniss des Editfeldes prüfen ob nur ein CR anliegt, das ggf. löschen (Key=0) und keine Verarbbeitung vornehmen

      ..
      Christian

      Comment


      • #4
        Das Edit direkt auslesen und leeren und ein Enter auf ein leeres Edit einfach ignorieren. So stört es nicht, wenn es mehrfach ausgelöst wird
        Schöne Grüße, Mario

        Comment


        • #5
          Das mit dem leeren Edit ist denke ich nicht ganz so einfach, weil noch mehr Plausibilitätsprüfungen stattfinden. So muss das Editfeld z.B. immer genau 10 Zeichen enthalten. Mithilfe welchen Ereignisses sollte ich denn das Editfeld prüfen und ggfalls leeren

          Comment


          • #6
            Hi Uwe<br>ich habe ein ähnliches Problem gehabt und habe das mit einem Timer gelöst. Einfach einen Timer im OnClick starten. Erst wenn dieser abgelaufen ist, wird die eigentliche verarbeitung des Tedit.text behandelt. Sollten innerhalb des Timerintervall mehrere Cr kommen, so wird der Timer lediglich resetet und der countdown fängt von vorn an.<br>Michae

            Comment


            • #7
              Wenn Du keine MultiThread-Anwendung hast, sollte Deine Abarbeitung von OnClick nicht unterbrochen werden. Ich sehe da kein Problem
              Schöne Grüße, Mario

              Comment


              • #8
                Mithilfe welchen Ereignisses sollte ich denn das Editfeld prüfen und ggfalls leeren?

                OnKe
                Christian

                Comment


                • #9
                  ..habe mich oben verschrieben, ein onChange Ereignis startet den Timer, der Rest steht dann im onTimer Event...<br>Michae

                  Comment

                  Working...
                  X