CDialog Editfeld: Wie zeitverzögertes Einlesen programmieren?



  • Hallo zusammen,

    die Benutzereingabe eines Editfeldes wird durch eine Meldungshändlerfunktion abgefangen und darin mit GetText() eingelesen.

    Weil der Aufruf von GetText nachfolgend eine Datenbankabfrage auslöst, soll GetText() zeitverögert aufgerufen werden, damit der Eingabefluss des Benutzers nicht gestört wird. D.h. erst nach einer 1/2 Sekunde Pause in der Benutzereingabe soll GetText() aufgerufen werden.

    Wie kann so eine Verzögerung am sinnvollsten programmiert werden? Stehe da momentan auf dem Schlauch. Weiß jemand Rat?

    Grüße,
    Bernd


  • Mod

    Löse nach dem EN_CHANGE einfach immer wieder eien Timer aus. SetTimer setzt einen bestehenden Timer ja zurück.

    Wenn der Timer dann eintrifft, hat der Benutzer so lange eben nicht eingegeben.



  • Martin Richter schrieb:

    Löse nach dem EN_CHANGE einfach immer wieder eien Timer aus. SetTimer setzt einen bestehenden Timer ja zurück.

    Wenn der Timer dann eintrifft, hat der Benutzer so lange eben nicht eingegeben.

    Ah verstehe, der Timer trifft also nur ein, wenn das durch Setimer gesetzte Zeitintervall abgelaufen ist, richtg?

    Wird der Eingabefluß des Benutzers dadurch in irgendeiner Weise verzögert? Es ist wichtig, daß das nicht geschieht. Die Eingabe selbst soll nicht verzögert, sondern nur beobachtet werden, wann sie kurz pausiert.


  • Mod

    mireiner schrieb:

    Ah verstehe, der Timer trifft also nur ein, wenn das durch Setimer gesetzte Zeitintervall abgelaufen ist, richtg?

    Wird der Eingabefluß des Benutzers dadurch in irgendeiner Weise verzögert? Es ist wichtig, daß das nicht geschieht. Die Eingabe selbst soll nicht verzögert, sondern nur beobachtet werden, wann sie kurz pausiert.

    Richtig. Wenn SetTimer neu aufgerufen wird, dann wird der Zeitgeber zurückgesetzt. Wenn Du nuc auf EN_CHANGE mit einem SetTimer reagiert, merkt das garantiert niemand.



  • Dann ist das die Lösung. Vielen Dank für die Hilfe!

    Grüße,
    Bernd


Anmelden zum Antworten