Otwieranie okien MDI przy starcie aplikacji

0

Cześć,
główne okno aplikacji ma FormStyle: fsMDIForm.
chcę przy starcie aplikacji otwierać od razu kilka okienek (fsMDIChild).

kod na otwieranie dałem początkowo w OnCreate, później próbowałem w OnShow i OnActivate ... wszędzie to samo:
Cannot create form. No MDI forms are currently active

chciałbym rozwiązać to inaczej niż przez dodanie "jednorazowego" timera z krótkim interwałem, bo to mało elegancka metoda ... [glowa]

pomożecie? ;)

0

Spróbuj wrzucić przed otwarcie pliku sleep(100) może pomoże ale nie próbowałem.

0

w dpr możesz je tworzyć

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1); //MDIForm
  Application.CreateForm(TForm2, Form2); //MDIChild
  Application.Run;
end.

BTW w OnShow mi nie rzuca wyjątkiem, a OnActivate to nie bardzo :p

0
Misiekd napisał(a)

BTW w OnShow mi nie rzuca wyjątkiem, a OnActivate to nie bardzo :p

niestety nie mogę w dpr, bo tak naprawdę okno MDIChild nie pochodzi z aplikacji samej w sobie tylko z plugina... i nie bardzo mogę ten kod przenieść poza główną formę, za dużo tam do niej odwołań ;)

mi niestety w OnShow rzuca, wiem że OnActivate się nie powinno ale miałem nadzieje że to zdarzenie jest wywoływane "najpóźniej" [oczywiście ustawiam odpowiednią "flagę" żeby nie wywołać kodu przy każdej aktywacji okna ;) ]

0

aaa przypomniało mi się jak to robiłem :p
w OnCreate wysyłasz zwykły, własny message a w obsłudze robisz to co chcesz. Działa to tak, że message dociera dopiero PO zakończeniu tworzenia formy

0
Misiekd napisał(a)

aaa przypomniało mi się jak to robiłem :p
w OnCreate wysyłasz zwykły, własny message a w obsłudze robisz to co chcesz. Działa to tak, że message dociera dopiero PO zakończeniu tworzenia formy

No cóż, będę zmuszony spróbować, dzięki :)

BTW jak już przy MDI jesteśmy, da się jakoś z okna "parenta" [fsMdiForm] przechwycić kiedy zmienia się aktywne okno? Bo niestety WM_MDIACTIVATE dociera tylko do okien child... a jak już mówiłem, te są implementowane po stronie plugina, wolałbym żeby plugin nie musiał wysyłać powiadomienia z powrotem do aplikacji...

0

no to też wysyłaj komunikat (przez SendMessage) :)

0
Misiekd napisał(a)

no to też wysyłaj komunikat (przez SendMessage) :)
MDI child jest implementowanie po stronie wtyczki, a i tak WSZYSTKIE okna MDI muszą to wywoływać więc nie chcę komplikować życia ;)

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