Forma w wątku

0

Z wątkami nie miałem do tej pory do czynienia stąd prośba o pomoc.
Popełniłem małą aplikację która korzysta z bazy MySql, na czas łączenia z bazą chciałem pokazać animację.
Pacnąłem na formę kontrolkę do animacji i animacja się nie odtwarza pewnie dlatego że forma jest MDI, na zwykłej jest OK. Wymyśliłem że animacja będzie na osobnej formie tworzonej w wątku no i zonk, po odpaleniu wątku cała aplikacja się wiesza, co robię nie tak?

 
var
  watek : TMyWatek;

implementation
...

constructor TMyWatek.Create();
begin
  inherited Create(False); // wywołanie wątku
  OnTerminate := MyTerminate;
end;

procedure TMyWatek.Execute;
begin
  FreeOnTerminate := True; // zwolnij po zakończeniu wątku
  frmAnimacja := TfrmAnimacja.Create(Application);
  frmAnimacja.Show;
  while not (Application.Terminated or Terminated) do
    begin
      Synchronize(SetProprties);
      sleep(200);
    end;
end;

procedure TMyWatek.SetProprties;
begin
  if DM.DataBase.Connected then  //jeżeli nawiązano połączenie
    watek.DoTerminate;
end;

procedure TMyWatek.MyTerminate(Sender: TObject);
begin
  frmAnimacja.Free;
end;
0

I kolejny raz. Forma nie może być w wątku. W wątku wykonuje się obliczenia (w twoim przypadku łączenie z bazą), a gui informuje o zmianach, postępie etc.

0

wystarczy ProcessMessages, zamiast wątku

0

nie to, żeby dwa tygodnie był TAKI SAM WĄTEK!!!

0

OK, mój błąd, idę się spałować ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1