Hallo,
genauso einfach hab ich mir das ja vorgestellt...
Delphi-Quellcode:
unit uUpdateThread;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.StdCtrls;
type
TMyUpdateThread =
class(TThread)
protected
procedure Execute;
override;
end;
TForm1 =
class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
FMyUpdateThread: TMyUpdateThread;
function UpdateStart: boolean;
end;
var
Form1: TForm1;
implementation
uses Dat_Glo,
// Globales Datenmodul
Update_Server;
// Update-Form
{$R *.dfm}
procedure Execute_INTERACTIVE;
// Schnittstelle zur Update-Form in Update_Server.pas
begin
Application.CreateForm(TFrmUpdate_Server, FrmUpdate_Server);
// Update-Form
FrmUpdate_Server.Execute;
// Update durchführen
end;
procedure TMyUpdateThread.Execute;
begin
Execute_INTERACTIVE;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
UpdateStart;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FMyUpdateThread :=
nil;
end;
function TForm1.UpdateStart: boolean;
begin
Result := true;
FMyUpdateThread := TMyUpdateThread.Create(True);
try
FMyUpdateThread.FreeOnTerminate := True;
// Gibt sich selber frei
FMyUpdateThread.Resume;
// Start
except
on E:
Exception do begin
Result := false;
ShowMessage(E.
Message);
end;
end;
end;
end.
Und jetzt scheitert es an der Synchronisierung. Also wie bekomme ich mit, wie weit der Download gerade ist (der Stand des Progressbar in FrmUpdate_Server)
Außerdem ist mir nicht klar, wann der Thread "vollkommen" fertig ist, damit ich FrmUpdate_Server wieder freigeben kann.
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen