I am waiting since about 2016 for a working MDI in LCL (win32).
With a - very very old - large project in my hands, born under Delphi 5, twenty years ago.
But until today I never had the knowledge of how to implement MDI, or how to simulate it.
Just a remark: MDI applications are deprecated (by microsoft) for the past 20 years ..
I still do not understand why people make such general statements like that.
Indeed
I would never recommend starting a new Project based on MDI
today.
=>
https://docs.microsoft.com/en-us/windows/win32/winmsg/multiple-document-interfaceThe official Microsoft Website does indeed no more
recommend MDI, yes.
"
Many new and intermediate users find it difficult to learn to use MDI applications.
Therefore, you should consider other models for your user interface."
But Microsoft would terminate all the apps out there that still use MDI
if they would wipe out native MDI support in Windows.
Microsoft explains us - statement from date 05/31/
2018:
"
However, you can use MDI for applications which do not easily fit into an existing model."
https://docs.microsoft.com/en-us/windows/win32/winmsg/multiple-document-interfaceMicrosoft has never improved MDI anymore (I think ..) over the last years
because it's a "dead" user interface.
But Microsoft has never stopped supporting MDI in Windows OS.
MDI applications ... never worked well with Lazarus.
I can agree with that.
But, as even old Delphi 5 compiled
MDI applications do still work (more or less ..),
this is a Lazarus LCL win32 widgetset issue, not a Microsoft issue.
So I hope, my "MDIsimulator" helps out a little bit here, keeping some old MDI projects alive.
Or the existing win32 MDI code in Trunk is committed for a upcoming Lazarus Release Version one day ..
( Hint: in "MDIsimulator" Forms do
not set Mainform to fsMDIForm / ChildForm to fsMDIChild - this is not real MDI ! )