Hallo,
mich beschäfftigt gerade das Objekt "TAniIndicator". Dieser Kreisel soll starten, wenn ein Thread gestartet, und stoppen, wenn ein Event vom Thread aufgerufen wird.
Delphi-Quellcode:
procedure TF_Main.OnThreadFinished(Sender: TObject),
begin
SetState(false);
{...}
end;
procedure TF_Main.OnThreadError(Sender: TObject; Error:
Exception);
begin
{Fehlerbehandlung}
end;
procedure TF_Main.SetState(State: Boolean);
begin
o_status.Visible:= State;
o_status.Enabled:= State;
end;
procedure TF_Main.Timer1Timer(Sender: TObject);
begin
if FMyThread.Finished
then
begin
SetState(true);
FMyThread:= TMyThread.Create(OnThreadFinished, OnThreadError);
end;
end;
Was ich nun überhaupt nicht verstehe: Der Kreisel hört nicht auf zu kreiseln! Erst wenn ich nach dem
SetState(false) ein Event auslöse (z.B. ButtonClick), dann wird das Objekt angehalten und versteckt. Sowas wie
Application.ProcessMessage oder
o_status.Repaint bringt nichts. Per Button ein/ausschalten funktioniert.
Komischerweise funktioniert auch folgendes:
Delphi-Quellcode:
procedure TF_Main.Timer1Timer(Sender: TObject);
begin
SetState(not o_status.Enabled);
end;
Wer kann mir helfen? Ich versteh die Logik einfach nicht...
Viele Grüße
Croco