Hi,AFAIR, yes. They prefer TDI to MDI nowadays.
in a german Lazarus forum, they say MDI is deprecated, because Windows has to be changed to reflect this behaviour.
Is that really true? If yes, what alternative can I use when I want several forms open next to each other?
Dietmar
Microsoft has deprecated MDI for new applications long, long ago (maybe even in Windows 98 times)Correct. Actually Windows 95! https://docs.microsoft.com/en-us/cpp/mfc/sdi-and-mdi
I'd put it that way, MDI as meaning Win 3.1There is - by computer science convention - just one MDI. The first one. Don't mix things up. It is also not confined to ms windows 3.1.
So which MDI are you talking about ?
For my project, it is essential to build an app which shows several open forms on one screen and to have them communicate with each of the others.
Example: Firefox with all his tabbed browsers, is that a TDI?
My App should work like this:
https://www.dropbox.com/s/ffuupzrplaapyqq/crazy.png?dl=0
(having several windows in one application visible).
You need a docking solution. E.g. AnchorDocking.
I view docking windows in much the same way I view multiple windowsTrue. A docking interface has much in common and many similarities with MDI with many drawbacks removed (but not all).
The last option is to not use a GUI. I wish this option was more popular. Some tasks and workflows are poorly suited to GUIs simply because of how much information they produce and/or the limited ways you can allow a user to interact with the information the process needs. This is why most programming languages are still text based.In the case of OP this is not an option as becomes clear from his screenshot.
You see mentioning MDI people start the shitstorm ...I'd put it that way, MDI as meaning Win 3.1There is - by computer science convention - just one MDI. The first one. Don't mix things up. It is also not confined to ms windows 3.1.
So which MDI are you talking about ?
https://en.wikipedia.org/wiki/Multiple_document_interface (https://en.wikipedia.org/wiki/Multiple_document_interface)
You see mentioning MDI people start the shitstorm ...If you do it in the wrong context and with the wrong beliefs? Yes, there is that risk. I don't think it is that bad and confined to just a few individuals, though. Maybe even one.. 8-) O:-)
THank you for all you contributions. Ich will try the anchordrocking as well as the "Multiple forms". In the last case, does such a form has properties which are absolutely essential?The only property I know of is WM_SYSMENU, I believe this style gives it a normally sized top bar (on Windows) but prevents the minimize and maximize buttons from showing. You might also want to use WM_POPUP which does much the same but gives the window a thinner top bar (on Windows).
Best regards,
DIetmar
In the case of OP this is not an option as becomes clear from his screenshot.Can you (or the OP, if he reads this) link it? I didn't see it, but my point was basically "just because you have a GUI now doesn't mean you need one to present textual information."
Go with a docked interface...
Sounds interesting... can you provide a little information about how this "gliding" is done or what you meant with it.Proof of concept:
After studying more of Lazarus Wikipedia, it sounds fo me that frames are placed onto an form - but "gliding"? ;)
If interested I can post the code here needed to correct the iconic view of the forms when parent is resized..Please post your approach, any help is welcome ...
In the below code of the WmSize message I did this to adjust the iconic form to stay aligned at thePLZ next time put the code in CODE-Tags so it wouls look like :
bottom of the TPanel. A Panel Is being used in this case to host the FORMS I create.
That Delphi code happened to work by accident, btw. It relies on implementation detail that happens to work in most but not all cases.here is the delphi 2007 gethandle method.
Handle creation can be postponed until use otherwise. This was/is to prevent allocating Windows resources before actual use.
At least in Delphi you should call TWincontrol.HandleNeeded to ensure that there already is a valid handle.
function TWinControl.GetHandle: HWnd;
begin
HandleNeeded;
Result := FHandle;
end;
HandleNeeded will fail if called to early. That's the problem.That Delphi code happened to work by accident, btw. It relies on implementation detail that happens to work in most but not all cases.here is the delphi 2007 gethandle method.
Handle creation can be postponed until use otherwise. This was/is to prevent allocating Windows resources before actual use.
At least in Delphi you should call TWincontrol.HandleNeeded to ensure that there already is a valid handle.Quotefunction TWinControl.GetHandle: HWnd;
begin
HandleNeeded;
Result := FHandle;
end;