AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verzögerte Vorschau

Ein Thema von martinf16 · begonnen am 3. Apr 2010 · letzter Beitrag vom 4. Apr 2010
Antwort Antwort
martinf16

Registriert seit: 26. Aug 2007
99 Beiträge
 
Turbo Delphi für Win32
 
#1

Verzögerte Vorschau

  Alt 3. Apr 2010, 23:31
Hallo,

ich möchte so etwas wie eine verzögerte Vorschau realisieren. Das heißt, der Benutzer gibt etwas ein, es wird gewartet ob noch etwas eingegeben wird und wenn einige Millisekunden nichts eingegeben wurde, wird die Vorschau erstellt.

Es geht beispielsweise um eine Eingabe in ein Editfeld. Bislang hatte ich OnChange genutzt und jedes Mal eine Vorschau erstellt. Da dies teilweise aufwendig ist und lange dauert möchte ich erst warten bis der Nutzer seine Eingabe fertig hat und dann die Vorschau erstellen. Gibts da irgendeine Möglichkeit?!

Etwas ähnliches gibt es ja auch im Delphi Editor, wo das Auto-Vervollständigen erst nach einer kurzen Pause angezeigt wird. Weiß jemand wie das realisiert wurde??

Vielen Dank!
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

Re: Verzögerte Vorschau

  Alt 3. Apr 2010, 23:58
Du kannst beim OnChange einen Timer einschalten (bzw. eher resetten), der dir dann die Berechnung anstößt.
Delphi-Quellcode:
procedure TForm1.Edit1OnChange(Sender: TObject);
begin
  // Reset des Timers
  Timer1.Enabled := False;
  Timer1.Enabled := True;
end;

procedure TForm1.Timer1OnTimer(Sender: TObject);
begin
  try

   { hier kommt deine Berechnung hin. }
 
  finally
    Timer1.Enabled := False;
  end;
end;
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
martinf16

Registriert seit: 26. Aug 2007
99 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Verzögerte Vorschau

  Alt 4. Apr 2010, 00:11
Oh das sieht gut aus.. Wusste nicht dass der Timer resetet.. Dann ginge es ja so.. Aber gibts da nicht auch einen anderen Befehl so etwas wie sleep ohne den Timer?
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#4

Re: Verzögerte Vorschau

  Alt 4. Apr 2010, 00:13
Das Problem ist, dass Sleep deine komplette Anwendung zum Stillstand bringt und der Nutzer nichts mehr machen kann. Du könntest einen Thread nutzen, der dann die Berechnung auch noch im Hintergrund macht, aber das ist wesentlich komplexer als das über den Timer zu lösen, aber hat auch einige Vorteil

// edit

Hab mich leider geirrt -- zumindest was den Code von D2010 angeht. Du musst den Timer erst Disablen und dann wieder Enablen um ihn zu resetten.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
martinf16

Registriert seit: 26. Aug 2007
99 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Verzögerte Vorschau

  Alt 4. Apr 2010, 00:26
Also könnte man den Timer dann im OnChange disablen und wieder neu loslaufen lassen oder wie meinst du das?

Ja, deswegen hatte ich ja gefragt, weil es mit Sleep nicht geht. Aber ich frage mich auch wie das zum Beispiel in der Delphi IDE gemacht wurde.. Die werden da ja sicher keinen Timer nutzen..
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#6

Re: Verzögerte Vorschau

  Alt 4. Apr 2010, 00:47
Wieso sollen die Entwickler keinen Timer genutzt haben? Ich denke eher, dass ein Thread im Hintergrund läuft, da dies ein wenig mehr Flexibilität bietet, wobei man sich dessen aber sicher sein muss.

Hab meinen Code oben korrigiert!
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
martinf16

Registriert seit: 26. Aug 2007
99 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Verzögerte Vorschau

  Alt 4. Apr 2010, 03:29
Naja, der Timer wirkt auf mich immer ein bisschen unprofessionell - aber ich lasse mich gerne vom Gegenteil überzeugen.

Am Rande: Worin liegt denn die bessere Flexibilität des Threads?
  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 03:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz