AGB  ·  Datenschutz  ·  Impressum  







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

OnFocusLost-Event?

Ein Thema von Carsten1234 · begonnen am 11. Feb 2009 · letzter Beitrag vom 13. Feb 2009
 
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#7

Re: OnFocusLost-Event?

  Alt 12. Feb 2009, 02:20
Es gibt da auch noch andere (sehr flexible) Möglichkeiten.
Zuerst definieren wir ein Interface:
Delphi-Quellcode:
IProgressFeedback = interface
   procedure WriteMessage(const msg:string);
   procedure SetProgressMinMax(min,max:integer);
   procedure SetProgress(value:Integer);
end;
Deine Kommunikationklasse bekommt nun dieses Interface im Konstruktor mitgeteilt:
Delphi-Quellcode:
TMyKomm = class(...)
private
  FFeedback : IProgressFeedback;
...
public
  constructor Create(feedback:IProgressFeedback);

  procedure DoWork;
end

constructor TMyKomm.Create(feedback:IProgressFeedback);
begin
  inherited;
  FFeedback := feedback; // speichern für spätere verwendung
end;

procedure TMyKomm.DoWork;
begin
   FFeedback.WriteMessage('starte Kommunikation mit Gerät...';
   FFeedback.SetProgressMinMax(0, ...);
   for i := 0 to ... do
   begin
     FFeedback.SetProgress(i); // mitteilen, wo wir gerade stehen
     ...
   end;
   FFeedback.WriteMessage('download der Daten erfolgreich.';
end;
Jetzt muss das vereinbarte Interface nur noch von irgendeiner Klasse implementiert werden.
Das kann ein eigenes Formular sein oder auch das Formular, von dem der ganze Vorgang angestossen wurde.
Delphi-Quellcode:
TForm1 = class(TForm, IProgressFeedback)
....
protected
   procedure WriteMessage(const msg:string);
   procedure SetProgressMinMax(min,max:integer);
   procedure SetProgress(value:Integer);
...
end;

procedure TForm1.SetProgress(value:Integer);
begin
  self.BringToFront; // Trick: Formular wird automatisch immer wieder nach vorne gebracht
  Progress1.Value := value; // Progressbar setzen
  Progress1.Refresh; // sicherstellen, dass neu gezeichnet wird
end;
Sollte dich diese Technik interessieren, dann sag' Bescheid; ich kann dann auch noch zeigen, wie man die laufende Operation sauber abbrechen kann, falls der Benutzer dies wünscht.
  Mit Zitat antworten Zitat
 


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 10:32 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