Rubrik: Oberfläche · Fenster | VB-Versionen: VB5, VB6 | 06.07.05 |
MDI-ChildForms - AutoResize Automatisches anpassen der MDI-Childs ohne zusätzlichen Code | ||
Autor: Holger | Bewertung: | Views: 15.894 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Ich hatte vor einer Weile nach einer sicheren Methode gesucht, die MDI-Childs auf die neue Größe des MDI-Parents automatisch anpassen zu lassen, aber leider nichts passendes gefunden. Bei einer einzelnen Form ist das ja kein Problem. Wie sieht es aber aus, wenn ich z.B links ein Ansichts/Auswahlbereich habe und rechts das Form ständig austausche?? Im Normalfall würde ich die beiden Childs mit Hilfe von ScaleWidth und ScaleHeight ausrichten. Aber es geht auch anders.
Anstelle den Ansichts/Auswahlbereich als eigenständige Form zu implementieren, verwendet man einfach ein PictureBox-Control und platziert die notwendigen Elemente dann direkt auf die PictureBox. Das PictureBox-Control selbst wird hierbei direkt im MDI-Parent-Form erstellt - und genau das ist der ganze Trick!
Wir brauchen also zunächst eine MDI-Form (frmStart) und 1-... MDI-Childs.
Im MDI-Form eine Picturebox (Picture1) einfügen und die Align-Eigenschaft der PictureBox auf "3 - links ausrichten" einstellen. Nun die Width-Eigenschaft auf die benötigte Breite festlegen (z.B. 3000). Achtung: die Height-, Top und Left-Eigenschaften sind schreibgeschützt, da die Ausreichtung durch das Setzen der Align-Eigenschaft vom System vorgenommen wird!
Auf dieser Picturebox noch ein paar Label, Textboxen,... erstellen.
Nun zu den MDI-Childs (Form1). Hier die Eigenschaft Borderstyle auf "2 - Änderbar" festlegen und ControlBox auf "False" setzen (kann auch auf True bleiben. Unterdrückt nur die Anzeige des Minimieren, Maximieren und Schliessen-Symbols des MDI-Childs). Die Eigenschaft MDIChild muss natürlich auf "True" gesetzt werden (wichtig, wenn es in das MDI-Form geladen werden soll) und zu guter Letzt noch WindowState auf "2 - Maximiert" festlegen.
Die MDI-Childs können jetzt über folgenden Code in das MDI-Form geladen werden:
Dim oChild As Form Set oChild = New Form1 oChild.Show
Die Child-Form wird hierbei autom. rechts neben unserer PictureBox, die ja als Auswahlfenster dient, platziert - und zwar so dass der gesamte rechte MDIParent-Bereich ausgefüllt ist. Wird die MDI-Form vergrößert oder verkleinert, passt sich die Child-Form autom. an.
Wer das MDI-Child auf die ganze Formgröße maximieren will, braucht nur die Picturebox im MDI-Parent-Form ausblenden (frmStart.Picture1.Visible = False). Das MDI-Child maximiert sich automatisch auf die komplette Größe des MDI-Forms.
Probiert es einfach mal aus. Das macht sich einwandfrei.