Thema: Delphi MDI Child Tabsheetleiste

Einzelnen Beitrag anzeigen

Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#4

Re: MDI Child Tabsheetleiste

  Alt 6. Apr 2006, 15:27
Natürlich Page Control.
Wenn Dein NaviPanel alLeft ist und vor dem PageControl erstellt wird, sollte eigentlich das PageControl nicht auf die ganze Breite gehen.....
[edit] hast Recht .. das PageControl zieht über die ganze Breite. Das ist unschön, weil ohne Align klappt das ganze nicht, da sich dann der Clientbereich des Hauptformulars nicht reduziert[\edit]
Wenn Du Dir einen Nachfolger vom PageControl machst, musst Du im SetParent schauen, ob der zukünftige Parent einTForm ist unf FormStyle auf MDIForm steht. Wenn ja, lässt Du Dir von diesem Form die Routine für die Windowsnachrichten geben lassen. Die merkst Du Dir dann und ersetztt sie durch eine eigene. Damit erreichst Du, dass alle Windowsnachrichten zuerst beim PageControl ankommen. Wenn dann eine Nachricht, wie maximieren kommt, die als Ziel eines der MDI Children hat, dann musst Du dein Pagecontrol vergrössern und die Nachricht weitergeben, indem Du die gemerkte originale Routine des Main Formular aufrufst.
Hört sich erstmal kompliziert an, isses aber garnicht.
Delphi-Quellcode:
    
    oParentForm:=_oParentForm;
    ParentWindProc:=oParentForm.WindowProc; //!< Save Parents WindowProc
    oParentForm.WindowProc:=ParWndProc; //!< Write ParWndProc to parent windowProc
ParWndProc ist eine Variable vom Typ TWndMethod, ParentWindProc ist die eigene Windowprozedur, in der Du dann die Nachrichten abfangen kannst.
Aber dabei aufpassen: das musst Du wieder ordentlich zurückbauen, wenn der Parent wieder flöten geht.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat