Autor Beitrag
Gagga
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95

Win 11
Delphi 12 Athen Pro
BeitragVerfasst: Di 02.02.21 15:56 
Hallo!

Ich stelle eine meiner Anwendungen auf den MDI-Aufbau um. Dabei habe ich so meine Probleme.
Beispiel:
Ich kreiere zusätzlich zur Hauptform zwei Child-Fenster. Sie werden angezeigt - wunderbar. Was nicht klappt, ist der Aufruf einer Prozedur in Child-2 aus Child-1. Zumindest nicht so, wie es problemlos in der Nicht-MDI-Anwendung geklappt hat. Oder muss ich die Prozeduren mit übergreifendem Zugriff ausnahmslos in "zentrale units" packen?

Wer kann helfen?

Danke sagt Gagga


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Do 04.02.2021 um 17:14
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 02.02.21 20:02 
user profile iconGagga hat folgendes geschrieben Zum zitierten Posting springen:
Ich stelle eine meiner Anwendungen auf den MDI-Aufbau um.
Man sollte dabei nicht vergessen, dass MDI in der Windows 3.x Zeit vor über 30 Jahren eingeführt wurde, als es den Desktop, wie wir ihn heute kennen, noch nicht gab. Damals hatte das daher seinen Sinn.
Heute kann ein Programm problemlos in der Taskleiste auch mehrere Einträge erzeugen und darüber mehrere Dokumente verwalten und die Anordnungsfunktionen wie "zwei Fenster nebeneinander" kann Windows schon global.

Deshalb hat Microsoft schon vor vielen Jahren MDI abgekündigt und veröffentlicht dafür keine Bugfixes mehr. Es kann also sein, dass es irgendwann in neueren Windowsversionen nicht mehr richtig funktioniert. Und ein paar Bugs sind ja auch bekannt.

Deshalb macht es wenig Sinn heute ein Programm auf eine so stark veraltete Technologie umzustellen. Da macht es eher Sinn das ganze moderner zu gestalten...

user profile iconGagga hat folgendes geschrieben Zum zitierten Posting springen:
Was nicht klappt, ist der Aufruf einer Prozedur in Child-2 aus Child-1. Zumindest nicht so, wie es problemlos in der Nicht-MDI-Anwendung geklappt hat. Oder muss ich die Prozeduren mit übergreifendem Zugriff ausnahmslos in "zentrale units" packen?
Es macht schon Sinn das in separate Units zu packen um keine Kreuzbeziehungen usw. zu bekommen. Aber prinzipiell kann man auch gut zwischen den Fenstern direkt kommunizieren.

Ohne genauere Informationen zum konkreten Problem lässt sich dazu wenig sagen. Sprich was hast du versucht (Quelltext?) und was ist passiert (Compilerfehler, ...)?
Gagga Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95

Win 11
Delphi 12 Athen Pro
BeitragVerfasst: Di 02.02.21 21:21 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconGagga hat folgendes geschrieben Zum zitierten Posting springen:
Ich stelle eine meiner Anwendungen auf den MDI-Aufbau um.
Man sollte dabei nicht vergessen, dass MDI in der Windows 3.x Zeit vor über 30 Jahren eingeführt wurde, als es den Desktop, wie wir ihn heute kennen, noch nicht gab. Damals hatte das daher seinen Sinn.
Heute kann ein Programm problemlos in der Taskleiste auch mehrere Einträge erzeugen und darüber mehrere Dokumente verwalten und die Anordnungsfunktionen wie "zwei Fenster nebeneinander" kann Windows schon global.

Deshalb hat Microsoft schon vor vielen Jahren MDI abgekündigt und veröffentlicht dafür keine Bugfixes mehr. ...


Danke Sebastian!

Damit hat sich die Sache schon erledigt. Ich werde die Übersichtlichkeit der Fenster anders regeln.

Gruß
Gagga
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 03.02.21 01:10 
Eine Möglichkeit dafür sind Reiter wie sie in Delphi oder Notepad++ ganz ohne MDI verwendet werden. Was dabei sinnvoll ist, kommt ganz auf das Programm an.

Ich persönlich finde z.B. die Chrome-Tabs von der Usability und auch vom Aussehen her sehr schön. Damit kann man einen Reiter als eigenes Fenster herausziehen oder wieder eingliedern usw., so dass man viel freier ist als bei MDI. Für Delphi gibt es davon eine sehr gute und aktuelle Implementierung:
github.com/norgepaul/TChromeTabs
Gagga Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95

Win 11
Delphi 12 Athen Pro
BeitragVerfasst: Mi 03.02.21 01:41 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Eine Möglichkeit dafür sind Reiter wie sie in Delphi oder Notepad++ ganz ohne MDI verwendet werden. Was dabei sinnvoll ist, kommt ganz auf das Programm an.

Ich persönlich finde z.B. die Chrome-Tabs von der Usability und auch vom Aussehen her sehr schön. Damit kann man einen Reiter als eigenes Fenster herausziehen oder wieder eingliedern usw., so dass man viel freier ist als bei MDI. Für Delphi gibt es davon eine sehr gute und aktuelle Implementierung:
github.com/norgepaul/TChromeTabs


Ich werde vermutlich mit einer großdimensionierten Menüleiste operieren, die ich an einer Bildschirmkante andocke.

Nochmals herzlichen Dank!