Forum: Die Delphi-IDE
by jaenicke,
21. Aug 2022
Laut Doku durfte man es früher gar nicht im Hauptthread aufrufen, da das eine Endlosschleife verursachen konnte. Erst seit ich glaube auch 10.2 geht das mit der genannten (und dokumentierten) Auswirkung.
Der Zweck ist eben nicht die Ausführung in der Warteschlange, sondern das Ausführen im Hauptthread. So ist es ja auch dokumentiert.
Forum: Die Delphi-IDE
by jaenicke,
21. Aug 2022
Das steht gut erklärt in der Doku, was auch daran liegt, dass es erst mit Delphi 10.2 eingeführt wurde:
https://docwiki.embarcadero.com/Libraries/de/System.Classes.TThread.ForceQueue
Der Code wird außerhalb des aktuellen Kontexts ausgeführt, wenn die Anwendung idle ist. Das ist der gleiche Effekt wie in meinem Beispiel. Es wird einfach später ausgeführt, nicht in dem Moment des...
Forum: Die Delphi-IDE
by jaenicke,
19. Aug 2022
Daran hatte ich auch gedacht, aber das gibt es ja noch nicht so lange.
Der Effekt ist ja der gleiche.
Forum: Die Delphi-IDE
by jaenicke,
19. Aug 2022
Ich meinte im Prozess des Anzeigens, denn OnActivate wird ansonsten ja auch noch viel öfter beim Fokuswechsel aufgerufen.
Das Problem tritt bei mir auch auf, wenn ich das zweite Fenster direkt im OnActivate anzeige. Das ist aber ja auch logisch, dass man während des Wechsels des Fokus nicht sinnvoll weitere Fokuswechsel in den Griff bekommt...
Wenn ich das Fenster stattdessen wie...
Forum: Die Delphi-IDE
by jaenicke,
19. Aug 2022
Es ist keine gute Idee so viel im OnActivate zu machen, schon gar nicht Änderungen am Fokus. Denn das OnActivate passiert ja gerade erst beim Anzeigen des Fensters. Du könntest dir z.B. selbst mit PostMessage eine Nachricht an dein Fenster schicken, die dann erst hinterher abgearbeitet wird, und dort diese Aktionen ausführen.
Aber auch ich kann das Problem nicht nachvollziehen. Ohne...