Hi zusammen
Per eigenen ProgressDlg zeige ich den Fortgang an, wenn mehrere Datensätze in meine
DB eingefügt weredn. Bislang hatte ich etwas "ganz raffiniertes" - der Dialog zeigt mir an wieviele
- Bilder einzufügen sind
- schon eingefügt sind
- noch einzufügen sind.
Das will ich jetzt ändern. Den Verlauf zeigt mir die Progressbar an. Sonst ist/soll der Dialog nichts weiter mehr enthalten. Am Ende, wenn alle Datensätze eingefügt sind, soll ein Event gefeuert werden, das die benötigte Zeit als Cardinal an Interessenten weitergibt.
Delphi-Quellcode:
if i = FPathList.Count - 1 then
begin
CInsertTime := GetTickCount - startTime; // + 'ms';
if Assigned(FOnInsertedTime) then //<== Dieses Event soll von CM_First abgefangen werden und
FOnInsertedTime(Self,CInsertTime); //<== in der Taskleiste dieser Form im Sekundenformat ausgegeben werden.
end;
Die Deklaration des Eventyps hier im Datenmodul:
Delphi-Quellcode:
TInsertedTimeEvent = procedure(Sender:TObject; const CInsertTime: Cardinal) of Object;
...
FOnInsertedTime : TInsertedTimeEvent;
...
property OnInsertedRecord : TInsertRecordEvent read FOnInsertedRecord write FOnInsertedRecord;
Die Hauptform soll das Event abfangen und die benötigtee Zeit in die Statusbar schreiben:
Delphi-Quellcode:
procedure DoInsertTime(Sender : TObject; CInsertTime : Cardinal);
...
...
procedure TCM_First.DoInsertTime(Sender : TObject; CInsertTime : Cardinal);
begin
Self.StatusBar1.Panels[0].Text := IntToStr(CInsertTime)
end;
Und die Zuweisung im OnCreate der Hauptform:
Delphi-Quellcode:
begin
FProcedureReport := TStringList.Create;
ApplicationManager := TWinManager.Create(CM_First);
FDMySQLDml:= TFDMySQLDml.Create(Self);
...
...
...
FDMySQLDml.OnInsertTime := Self.DoInsertTime;
Bei der Zuweisung oben blockt delphi wegen ungleicher Parameter die Compilierung ab.
Was, zum Klabautermann, hab ich übersehen?
Gruss
Delbor