Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi MDI-Child restlos minimieren (https://www.delphipraxis.net/80743-mdi-child-restlos-minimieren.html)

HappyJoe 14. Nov 2006 15:57


MDI-Child restlos minimieren
 
Hallo Leute,

hab mal ne komplexe Frage:

Ich soll mit einem Freund ein kleines Verkaufsprog schreiben mit Stammdaten (Kunden, Artikel) und einer Rechnungsmaske, evtl. später auch einige statistische Auswertungen. Ich hatte mir gedacht, MDI zu verwenden, damit man auch beim Rechnungsschreiben einen fehlenden Artikel erfassen kann. Allerdings gefällt mir da nicht, dass für minimierte MDI-Children noch die Kopfzeile angezeigt wird. Lieber würde ich diese unterdrücken und die Children selbst z.B. in einem Menü verwalten. Daher

Frage 1: Wie kann ich auf die Anzeige der Kopfzeile beim Minimieren der MDI-Children verzichten bzw. sie unterdrücken?

Zweiter Punkt: Mein Freund und ich sind räumlich getrennt. Ich werde daher nicht immer aktuelle Sourcecodes von ihm haben. Deshalb habe ich gedacht, dass jeder seine ProgBereiche (MDI-Child) in eine DLL speichert. Im MainForm müssten ich dann nur mit Create das MDI-ChildForm erzeugen.

Frage 2: Wäre das so mit DLLs machbar oder habt ihr noch eine andere Idee?

shmia 14. Nov 2006 17:44

Re: MDI-Child restlos minimieren
 
Zitat:

Zitat von HappyJoe
Frage 1: Wie kann ich auf die Anzeige der Kopfzeile beim Minimieren der MDI-Children verzichten bzw. sie unterdrücken?

property Visible der MDI-Children auf False setzen.

Zitat:

Zitat von HappyJoe
Zweiter Punkt: Mein Freund und ich sind räumlich getrennt. Ich werde daher nicht immer aktuelle Sourcecodes von ihm haben. Deshalb habe ich gedacht, dass jeder seine ProgBereiche (MDI-Child) in eine DLL speichert. Im MainForm müssten ich dann nur mit Create das MDI-ChildForm erzeugen.
Frage 2: Wäre das so mit DLLs machbar oder habt ihr noch eine andere Idee?

Das Verwenden von gewöhnlichen DLLs macht garantiert Probleme, weil dann sämtliche Objektorientierung in der Schnittstelle verloren geht.
Mit Packages kann dies vermieden werden.
Aber auch Packages machen u.U. Schwierigkeiten. Vorallem dann, wenn sich in einer Unit im Packages im Abschnitt Interface etwas ändert muss die Anwendung neu kompiliert werden.
Mit einer Versionsverwaltung ( http://de.wikipedia.org/wiki/Versionsverwaltung ) könnt ihr beide gemeinsam an dem Projekt arbeiten.

raiguen 14. Nov 2006 20:43

Re: MDI-Child restlos minimieren
 
Zitat:

Zitat von HappyJoe
Frage 1: Wie kann ich auf die Anzeige der Kopfzeile beim Minimieren der MDI-Children verzichten bzw. sie unterdrücken?

Nach meiner Kenntnis geht das nicht; es ist zwar 'ärgerlich' und sieht nicht unbedingt gut aus, wenn sich die minimierten MDI-Fenster am unteren Bildschirmrand tummeln, aber m.W. ist das so vom OS 'vorgesehen'...
Zitat:

Zitat von shmia
property Visible der MDI-Children auf False setzen.

DAS geht nicht -> 'Ein Kindfenster kann nicht verborgen werden...'bekommt der USer dann auf den Bildschirm geklatscht. Das gleiche gilt auch für die Property .Hide :!:

HappyJoe 15. Nov 2006 09:49

Wirklich keine Möglichkeit?
 
Tja, also visible geht nicht, DLLs und packages sind auch nicht vorteilhaft. Sieht wie ein unlösbares Problem aus :wall: . Nur wie machen das die professionellen Entwickler bei großen Progs? Die haben doch auch nicht 1000 Fenster offen.

Wäre es evtl. möglich WM_NCHITTEST abzufangen, auf Minimieren zu prüfen und mittels SetWindowPos das Fenster verschwinden zu lassen? :coder2:

Sidorion 15. Nov 2006 10:27

Re: MDI-Child restlos minimieren
 
Das geht, indem das MDI-Child zerstört wird (Close) Allerdings musst Du in der CloseQuery die Action manuell auf caFree stellen, da bei MDI-Children grundsätzlich caMinimize reingeschrieben wird.
Beim Menüaufruf des entsprechenden Childs musst Du dann immer ein neues erstellen. Dabei aber darauf achten, daß nur eine Instanz generiert wird (im Handler vom Menüpunkt schauen, ob das entsprechende Child schon in der MDI-Children Liste enthalten ist und wenn ja nur ein Show machen).

Zum Thema Quellen: Schau Dir mal die GExperts an, die haben ein, wenn auch rudimentäres, Versionsverwaltungsprogramm dabei.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz