Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ganz banale Events - und trotzdem mach ich wohl demnächst die Schraube (https://www.delphipraxis.net/188667-ganz-banale-events-und-trotzdem-mach-ich-wohl-demnaechst-die-schraube.html)

Delbor 26. Mär 2016 19:09

Delphi-Version: XE8

Ganz banale Events - und trotzdem mach ich wohl demnächst die Schraube
 
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

mkinzler 26. Mär 2016 19:14

AW: Ganz banale Events - und trotzdem mach ich wohl demnächst die Schraube
 
In der Methode fehlt das const beim 2. Parameter

Daniel 26. Mär 2016 19:14

AW: Ganz banale Events - und trotzdem mach ich wohl demnächst die Schraube
 
Ich kaufe ein "const" und möchte lösen. Sorge mal dafür, dass die Signaturen exakt übereinstimmen.

Delbor 26. Mär 2016 20:30

AW: Ganz banale Events - und trotzdem mach ich wohl demnächst die Schraube
 
Hi zusammen
Zitat:

Sorge mal dafür, dass die Signaturen exakt übereinstimmen.
Was genau meinst du mit Signaturen? Etwa genau das, was mir erst jetzt auffällt?
Zitat:

property OnInsertedRecord : TInsertRecordEvent read FOnInsertedRecord write FOnInsertedRecord;
Der hier angegebene Eventtyp hat hier nichts zu suchen, TInsertRecordEvent feuert, wenn ein kompletter Datensatz eingefügt wurde und erhoht die Progressbar.
Hier zuständig wäre und steht so auch (eine Zeile tiefer) in der Deklaration:
Zitat:

property OnInsertTime: TInsertedTimeEvent read FOnInsertedTime write FOnInsertedTime;
Zitat:

In der Methode fehlt das const beim 2. Parameter
Genau das wars! Vielen Dank euch beiden!!

Gruss
Delbor


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:11 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