AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Auf Ende der Eingabe im TEdit warten und Inhalt verzögert verarbeiten
Thema durchsuchen
Ansicht
Themen-Optionen

Auf Ende der Eingabe im TEdit warten und Inhalt verzögert verarbeiten

Ein Thema von Bünni · begonnen am 6. Apr 2019 · letzter Beitrag vom 8. Apr 2019
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Auf Ende der Eingabe im TEdit warten und Inhalt verzögert verarbeiten

  Alt 7. Apr 2019, 05:59
Hallo,
wir haben das über einen Timer gelöst.
Jedes OnKeypress setzt den Timer zurück.
Ein Timer-Intervall von 600 msec sorgt dann dafür,
dass nach 600 msec Nichteingabe eines Zeichens das OnTimer aufgerufen
und dort drin dann die Suche gestartet wird.

Man könnte das ganze auch "verzögerte Suche" nennen.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.078 Beiträge
 
Delphi 12 Athens
 
#2

AW: Auf Ende der Eingabe im TEdit warten und Inhalt verzögert verarbeiten

  Alt 7. Apr 2019, 06:55
Ich möchte bei solchen Livefiltern als Benutzer allerdings nicht länger warten als nötig. Zudem fühlt es sich einfach moderner an, wenn man die Ergebnisaktualisierung direkt beim Tippen sieht.

Deshalb verzögere ich selbst solche Filterungen nur, wenn die Ergebnismenge noch zu hoch ist oder die Suche mehr als wenige Millisekunden dauert.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.235 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Auf Ende der Eingabe im TEdit warten und Inhalt verzögert verarbeiten

  Alt 7. Apr 2019, 09:36
Ein Timer-Intervall von 600 msec sorgt dann dafür,
dass nach 600 msec Nichteingabe eines Zeichens das OnTimer aufgerufen
und dort drin dann die Suche gestartet wird.

Man könnte das ganze auch "verzögerte Suche" nennen.
Machen wir ähnlich. Glaube aber wir haben einen kleineren Wert für das Timer-Intervall.

Deshalb verzögere ich selbst solche Filterungen nur, wenn die Ergebnismenge noch zu hoch ist oder die Suche mehr als wenige Millisekunden dauert.
Man könnte auch das Ergebnis immer auf x Ergebnisse beschränken und am Ende einen Eintrag "Weitere Ergebnisse Vorhanden" anzeigen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.735 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Auf Ende der Eingabe im TEdit warten und Inhalt verzögert verarbeiten

  Alt 7. Apr 2019, 11:07
Wir benutzen auch einen Timer, der bei jedem Tastendruck zurückgesetzt wird. Wenn ich mich recht erinnere, steht er auf 500 ms (1/2 Sekunde). Bisher hat sich noch keiner darüber beschwert (zumindest nicht bei mir).

In unserem Fall geht es darum, zu überprüfen, ob die Eingabe der Name einer existierenden Datei bzw. eines existierenden Verzeichnisses ist. Da das teilweise zu Zugriffen auf das LAN führt und einen langen Timeout nach sich ziehen kann, wenn der Rechner, auf den zugegriffen wird, nicht eingeschaltet ist, sorgt diese Verzögerung dafür, dass man weniger warten muss als wenn bei jedem Tastendruck geprüft würde.

Beispiel:

\\server1\share\bla\blub.txt

existiert nicht, aber

\\server2\share\bla\blub.txt

schon. Der User hat sich schlicht vertippt bzw. einen falschen Pfad per Zwischenablage eingefügt. Wenn er jetzt "schnell genug" (1 Tastendruck pro 500 ms ist nicht besonders schwierig) den Fehler korrigiert, erspart es ihm die mehrere Sekunden Timeout, die die Prüfung auslösen könnte.
Thomas Mueller
  Mit Zitat antworten Zitat
Bünni

Registriert seit: 4. Mär 2019
67 Beiträge
 
#5

AW: Auf Ende der Eingabe im TEdit warten und Inhalt verzögert verarbeiten

  Alt 7. Apr 2019, 11:19
Zitat:
Jedes OnKeypress setzt den Timer zurück.
Danke für eure Antworten. Meint ihr mit Timer einen einfachen TTimer? Was genau meint ihr mit zurücksetzen?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.235 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Auf Ende der Eingabe im TEdit warten und Inhalt verzögert verarbeiten

  Alt 7. Apr 2019, 11:20
Zitat:
Jedes OnKeypress setzt den Timer zurück.
Danke für eure Antworten. Meint ihr mit Timer einen einfachen TTimer? Was genau meint ihr mit zurücksetzen?
Ja. Normaler TTimer.
Und bei OnkEyPress ein

MyTimer.Active := False;
MyTimer.Active := True;

Damit staten dann die xxx ms neu.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Bünni

Registriert seit: 4. Mär 2019
67 Beiträge
 
#7

AW: Auf Ende der Eingabe im TEdit warten und Inhalt verzögert verarbeiten

  Alt 7. Apr 2019, 12:14
Die Technik wurde erfolgreich eingebaut.
Die erste Testperson war meine Lebensgefährtin und sie bevorzugt die Suche mit sofortigem Ergebnis.
Grund sei, sie kenne eine solche verzögerte Suche nicht und sie sei langsam. Der Timer wird im OnChange zurückgesetzt und die Verzögerung beträgt 500ms.
OnChange, weil er dann auch zurückgesetzt wird, wenn ich das Edit.Text Property per Code setze und nicht durch manuelle Eingabe.


Welche Methode ist heutzutage die von Benutzern eher akzeptierte Methode?
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.735 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Auf Ende der Eingabe im TEdit warten und Inhalt verzögert verarbeiten

  Alt 7. Apr 2019, 12:46
Der Timer wird im OnChange zurückgesetzt und die Verzögerung beträgt 500ms.
OnChange, weil er dann auch zurückgesetzt wird, wenn ich das Edit.Text Property per Code setze und nicht durch manuelle Eingabe.
Du solltest ihn auch bei OnKeyDown zurücksetzen, sonst werden Tastendrücke, die nur den Cursor bewegen, nicht berücksichtigt.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.078 Beiträge
 
Delphi 12 Athens
 
#9

AW: Auf Ende der Eingabe im TEdit warten und Inhalt verzögert verarbeiten

  Alt 7. Apr 2019, 13:45
Welche Methode ist heutzutage die von Benutzern eher akzeptierte Methode?
Ich glaube nicht, dass ein Benutzer warten will. Diese verzögerten Suchmasken wurden ja nicht gemacht, weil es so sein soll, sondern weil es technisch eben nicht anders ging.

Heute sind die PCs schneller, so dass es meistens keine Notwendigkeit mehr dafür gibt.

Im Falle unseres Background-Compilers z.B. geben wir Änderungen live an den Compilerthread weiter, wobei dann die dadurch ungültigen Teile wieder verworfen werden. Insgesamt sind so die Eingabehilfen aber sehr schnell da.

Bei blockierenden Anfragen an Dateisysteme oder Webservices verwenden wir stattdessen tatsächlich jeweils einen neuen Thread, damit die GUI bei Fehleingaben nicht blockiert wird.
Sebastian Jänicke
AppCentral
  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 16:36 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