Deine Klasse
cDownloadStatusCallback
greift bisher fest auf die globale Variable
Form1 zu.
Das ist schlecht denn wenn du das Formular dynamisch erzeugst und in ein anderes Formular einbettest ist Form1 nicht korrekt belegt.
Oder stell dir vor du hättest 2 Downloads gleichzeitig laufen.
Also muss die globale Variable
Form1 sterben.
cDownloadStatusCallback benötigt ein Label und ein Gauge. Die könntest du schon im Konstruktor übergeben:
Delphi-Quellcode:
type
cDownloadStatusCallback = class(TObject,IUnknown,IBindStatusCallback)
private
FLabel: TLabel; // neu
FGauge: TGauge; // neu
function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
...
public
constructor Create(ALabel:TLabel; AGauge:TGauge);
constructor cDownloadStatusCallback.Create(ALabel:TLabel; AGauge:TGauge);
begin
inherrited Create;
FLabel := ALabel;
FGauge := AGauge;
Assert(Assigned(FLabel)); // Sicherheitsprüfung
Assert(Assigned(FGauge));
end;
Statt
Form1.Label1.Caption := 'Der Download wurde gestartet...';
schreibst du dann
Delphi-Quellcode:
FLabel.Caption := 'Der Download wurde gestartet...';
FLabel.Refresh;