Kontakt
DSVGO
Normalerweise kann der Hintergrund eines MDI-Formulars nicht gestaltet werden - ohne echten Container sind keine Zeichenoperationen möglich. Im Web findet man höchstens sehr umständliche und aufwändige Lösungen, die SubClassing benutzen.
Die hier gezeigte Methode kommt mit purem VB-Code aus, und ist trotzdem sehr schnell und flexibel. Sie nutzt dazu die Picture-Eigenschaft des MDI-Formulars, welche bei jedem Resize auf den Inhalt einer unsichtbaren PictureBox gesetzt wird. Da diese PictureBox vorher an die Größe des MDI-Formulars angepaßt wird, entsteht der Eindruck einer vollständigen Hintergrundgrafik.
Öffnen Sie ein neues VB-Projekt, fügen Sie eine MDIForm hinzu und wählen Sie in den Projekt-Eigenschaften als Startobjekt gerade dieses MDI-Formular aus.
Fügen Sie eine PictureBox hinzu - sie wird automatisch im MDI-Formular ganz oben angeordnet. Setzen Sie folgende Eigenschaften:
Eigenschaft | Wert | Bemerkung |
(Name) | picBackground | |
Appearance | 0 | Flat |
AutoRedraw | True | |
BorderStyle | 0 | None |
ScaleMode | 3 | Pixel |
Visible | False |
Benutzen Sie folgenden Code im Resize-Ereignis des MDI-Formulars:
Private Sub MDIForm_Resize() Dim x As Long Dim y As Long Dim r As Long 'PictureBox vorbereiten: With picBackground 'Bild-Größe anpassen: .Move 0, 0, ScaleWidth, ScaleHeight 'Roten Farbverlauf zeichnen: For y = 0 To .ScaleHeight - 1 r = 255 - 255 * y / .ScaleHeight picBackground.Line (0, y)-(ScaleWidth, y), RGB(r, r, 255) Next y 'Einen zentrierten Kreis zeichnen: x = .ScaleWidth \ 2 - 1 y = .ScaleHeight \ 2 - 1 If y < x Then r = y Else r = x picBackground.Circle (x, y), r End With 'Hintergrund aktualisieren: Set Picture = picBackground.Image End Sub
Damit die PictureBox schon beim ersten Anzeigen dir richtige Größe hat, fügen Sie den entsprechenden Code in das Activate-Ereignis ein:
Private Sub MDIForm_Activate() MDIForm_Resize End Sub
Alternativ können Sie auch die ScrollBars-Eigenschaft des MDI-Formulars auf False setzen.
© Jost Schwider, 10.01.2002-10.01.2002 - http://vb-tec.de/mdibg.htm