Hallo, Zacherl,
danke für die
Unit!
Ich hab mir als Test mal Folgendes zusammengeklatscht:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
cCount = 1000;
var
dlg: TdxProgressDialog;
i: Integer;
begin
dlg := TdxProgressDialog.Create(
nil);
try
dlg.Title := '
Zählen';
dlg.TextLine1 := '
Zähle bis ' + IntToStr(cCount);
dlg.Execute(
Handle);
for i := 1
to cCount
do
begin
dlg.TextLine2 := '
Bin bei ' + IntToStr(i);
dlg.SetProgress(i, cCount);
Application.ProcessMessages;
Sleep(1);
if dlg.HasUserCanceled
then
Exit;
end;
finally
dlg.Free;
end;
end;
Dabei sind mir (unter Windows 8) zwei Probleme aufgefallen:
- Auf Buttonklick stürzt das Programm ab. Ich hab das durch if Assigned(AOwner) and AOwner.InheritsFrom(TWinControl) then
in Zeile 149 deiner Unit behoben.
- Wenn der Zähler durchgelaufen ist, "versteckt" sich Form1 hinter dem Fenster, das als nächstes in der Z-Order kommt - also z.B. hinter Delphi, wenn man's aus der IDE heraus startet.
Edit: Wenn ich mich nicht täusche, ist ein
LPCVOID
einfach ein
Pointer
. Also würde ich die ganzen
var pvResevered: Pointer
mal durch
pvReserved: Pointer
ersetzen. Und in den entsprechenden Aufrufen das
Pointer(nil^)
durch
nil
. (Das lässt bei mir auch gleich den Würgereflex besser werden.
)