Also ich habe einen Thread:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| TMyThread = class(TThread) private FOpenTime : TDateTime; procedure OpenForm2; protected procedure Execute;override; public constructor Create; end;
constructor TMyThread.Create; begin inherited Create(False); end;
procedure TMyThread.Execute; begin while not Terminated do begin sleep(10); if Now > FOpenTime then Synchronize(OpenForm2); end; end;
procedure TMyThread.OpenForm2; begin with TForm2.Create(Application) do begin try ShowModal; finally Free; end; end; end; |
Ist nur ein Beispiel, kann jeder ausprobieren. Kann aber Fehler enthalten, da ich das nur schnell hingekritzelt habe.
Das Ganze bewirkt eine Erinnerungsfunktion.
Auf Form1 und auf Form2 sind jeweils MainMenus.
Wenn ich jetzt eben im MainMenu von Form1 aktiv bin und währenddessen durch den Thread meine Form2 aufgerufen wird, dann ist das MainMenu auf Form 2 inaktiv.
Allerdings hängt das nicht mit dem Thread zusammen!
Wenn ich auf Form1 einen Timer habe:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.TimerTimer(Sender : TObject); begin if Now > FOpenTime then with TForm2.Create(Application) do begin try ShowModal; finally Free; end; end; end; |
Hier passiert genau das gleiche.
Ausserdem passiert sowas ähnliches:
Wenn ich Form1 verschiebe (Titelleiste mit Maus) und währenddessen die Form2 aufgerufen wird, dann kann ich Form zwei nicht über die TielLeiste verschieben.