AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Edit.OnChange-Event für eine bestimmte Zeit verhindern
Thema durchsuchen
Ansicht
Themen-Optionen

Edit.OnChange-Event für eine bestimmte Zeit verhindern

Ein Thema von juergen · begonnen am 28. Okt 2011 · letzter Beitrag vom 28. Okt 2011
Antwort Antwort
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.176 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Edit.OnChange-Event für eine bestimmte Zeit verhindern

  Alt 28. Okt 2011, 23:05
Erst einmal Danke für die Unterstützung!
@stahli,
Dein Ansatz hört sich interesaant an, ich wüßte nur leider nicht wie ich sowas umsetzen könnte.

@Bummi,
das habe ich schon , da man optional die Live-Suche auch abschalten kann und ich dann auf Enter reagiere.
Das ist auch richtig schnell.

@Sir Rufo, WM_CLOSE
naja mit Timer da tue ich mich etwas schwer, da ich hier schon gelesen hatte, wo Timer "verteufelt" wurden.
Den Ansatz von WM_Close vertehe ich so aber auch nicht.
Der Timer ist auf einen Intervall von 250 eingestellt und Enabled := False...
Dann wird im OnChange der Timer auf "False" gesetzt und anschließend auf true....
Im OnTimer-Event dann das Suchen ausführen.
Meinem Verständnis nach würde die Suche doch in einer Endlosschleife ausgeführt werden, oder nicht?

Vllt. habe ich mich auch nicht so deutlich ausgedrückt.
Angenommen ich tippe 8 Zeichen in 2 Sekunden in das Edit ein. Dann wird 8x meine Suche angeschmissen, weil diese im OnChange des Edits hinterlegt ist.
Ich hätte gern, dass nur dann die Suche ausgeführt wird wenn nach einer Eingabe im Edit mindestens 250ms(?) vergangen sind.

Edit: Die Live-Suche startet erst dann, wenn mindestens 3 Zeichen eingegeben wurden.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  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
 
#2

AW: Edit.OnChange-Event für eine bestimmte Zeit verhindern

  Alt 28. Okt 2011, 23:13
Delphi-Quellcode:
procedure TForm1.Edit1Change(...)
begin
  Timer1.Enabled := false;
  Timer1.Enabled := ( Length( Edit1.Text ) >= 3 );
end;
procedure TForm1.Timer1Timer(...)
begin
  Timer1.Enabled := False;
  DoSuche( Edit1.Text );
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)

Geändert von Sir Rufo (28. Okt 2011 um 23:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.365 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Edit.OnChange-Event für eine bestimmte Zeit verhindern

  Alt 28. Okt 2011, 23:24
Also "Timer ist böse" würde ich so auch nicht so gelten lassen.
Ich klaue gleich mal beim Sir.
Als ungefährerer Ansatz:

Delphi-Quellcode:
 procedure TForm1.Edit1Change(...)
 begin
   BreakFlag := True;
   Timer1.Enabled := False; // Timer wird neu gestartet, keine Suche bei schneller Eingabe
   Timer1.Enabled := True;
 end;

 procedure TForm1.Timer1Timer(...)
 begin
   Timer1.Enabled := False;
   BreakFlag := False;
   DoSuche( Edit1.Text );
 end;

 procedure DoSuche;
 begin
   for I := 0 to Items.Count - 1 do
   begin
     ...
     Application.ProcessMessages;
     if BreakFlag then
       Break;
   end;
   BreakFlag := False;
 end;
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.176 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Edit.OnChange-Event für eine bestimmte Zeit verhindern

  Alt 28. Okt 2011, 23:43
Supi, so funktioniert es!
Da hätte ich auch selbst drauf kommen müssen, dass ich im OnTimer zuerst Timer1.Enabled := False setzen muss!

Vielen Dank und eine Gute N8!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.756 Beiträge
 
Delphi 12 Athens
 
#5

AW: Edit.OnChange-Event für eine bestimmte Zeit verhindern

  Alt 28. Okt 2011, 23:51
Alternativ gäbe es auch noch die Lösung, welche über eine Optimierung der Suche, das Suchergebnis unbemerkt schnell liefert.
Ein Therapeut entspricht 1024 Gigapeut.
  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 12: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