Einzelnen Beitrag anzeigen

Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: JvProgressbar.Marquee aus Thread ändern - Fehler

  Alt 29. Feb 2008, 10:14
Die Lösung steht schon im vom Thread-Wizard eingefügten RIESIGEN Kommentar:
Delphi-Quellcode:
{ Wichtig: Methoden und Eigenschaften von Objekten in visuellen Komponenten dürfen
  nur in einer Methode namens Synchronize aufgerufen werden, z.B.

      Synchronize(UpdateCaption);

  und UpdateCaption könnte folgendermaßen aussehen:

    procedure TMyTest.UpdateCaption;
    begin
      Form1.Caption := 'Aktualisiert in einem Thread';
    end; }
Das heißt, Du musst eine Routine im Thread anlegen, die mit Synchronize die OnProgress Methode aufruft.

Falsch (in einem Thread):
Delphi-Quellcode:
procedure TMyTest.Progress(const AProgress: Integer);
begin
  if Assigned(FOnProgress) then
    FOnProgress(AProgress);
end;
So sollte es gehen
Delphi-Quellcode:
private
   FProgress : integer; // Zur Zwischenspeicherung von AProgress
procedure TMyTest.DoOnProgress;
begin
   FOnProgress(FProgress);
end;

procedure TMyTest.Progress(const AProgress: Integer);
begin
  if Assigned(FOnProgress) then
  begin
    FProgress := AProgress;
    Synchronize(DoOnProgress);
  end;
end;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat