..."Es scheint so, als ob die Demo nur hängt, wenn in den Events irgendwas steht was mit der
VCL zu tun hat."...
Wenn man die Callbackquelle innerhalb von 7Zip nicht kennt, gehe man davon aus, das es dort in/durch einen Thread aufgerufen wird.
-> Also hier NIX mit
VCL und KEIN Application.ProcessMessages... besser im Event nur irgendetwas einfaches ala PostMessage, Syncronize, CallInMainTread oä.
Ich habe das gerade auch mal flott mit TJcl7zCompressArchive getestet. Dort genau dasselbe Problem.
Wie würde das denn im Mainthread mit Postmessage funktionieren?
Ich benutze der Einfachheit halber jetzt die
JEDI-Komponenten. Es wird aber dieselbe
DLL verwendet.
Folgendes scheint scheinbar nicht zu funktionieren (
GUI wird nicht aktualisiert)
Delphi-Quellcode:
const
WM_UPDATE_PB = WM_USER;
procedure UpdateMessage(Value: Int64);
begin
PostMessage(Form1.Handle, WM_UPDATE_PB, Value, 0);
end;
procedure TForm1.WMUpdatePB(var msg: TMessage);
begin
ProgressBar1.Position := msg.WParam;
Application.ProcessMessages;
end;
procedure TForm1.JclOnProgress(Sender: TObject; const Value, MaxValue: Int64);
begin
UpdateMessage(Value);
// ProgressBar1.Position := Value;
// Application.ProcessMessages;
end;