Müssen Formulare immer rechteckig sein?
Hallo,
ich hab mich in letzter Zeit ein wenig mit den Möglichkeiten der GDI32.dll API Bibliothek befasst. Die GDI (Graphik Device Interface) beinhaltet Funktionen um z.B. das Aussehen eines Formulares zu verändern. Ob dreieckig, rund, abgerundet etc ist alles möglich. Auch Kombinationen von Formen sind zulässig.
OK, zugegeben, braucht eigentlich niemand. Aber man darf auch schon mal beim Design der Formulare etwas mehr an Kreativität zeigen als sonst.
Ich möchte euch jetzt zeigen wie ihr Coole runde Formulare erstellt.
Zuerst braucht ihr einen Hintergrund. Benützt dazu euer Grafikprogramm wie z.B. Photoshop etc. und erstellt eine Grafik. macht diese gleich etwas größer als das spätere Formular. Eine Verlaufsebene einfügen, darauf mit einem coolen Stil ein Kreis malen, in den Kreis ein weiterer Kreis mit weissem Hintergrund malen. Dies gibt der Rand eures Formulars.
Dann erstellt ein leeres Formular.
Plaziert darauf eure Steuerelemente wie gewohnt, denkt aber an die spätere Formular form.
Dann kommt der Code-Teil dran. Wir benötigen 3 API Funktionen, SetWindowRgn(), DeleteObject() und CreateEllipticRgn().
Hier der Deklarationsteil:
Private Declare Function SetWindowRgn _ Lib "user32" (ByVal hWnd As Long, _ ByVal hRgn As Long, _ ByVal bRedraw As Boolean) As Long Private Declare Function DeleteObject Lib "gdi32" ( _ ByVal hObject As Long) As Long Private Declare Function CreateEllipticRgn Lib "gdi32.dll" ( _ ByVal X1 As Long, _ ByVal Y1 As Long, _ ByVal X2 As Long, _ ByVal Y2 As Long) As Long Dim Region1 As Long
Dann im Ereignis „Beim Laden“ wird die Form geändert. Die Koordinaten müsst ihr entsprechend anpassen, damit es bei euch passt.
Private Sub Form_Load() X1 = 29 Y1 = 50 X2 = 533 Y2 = 552 Me.Picture = CurrentProject.Path & "\hintergrund.gif" Region1 = CreateEllipticRgn(X1, Y1, X2, Y2) SetWindowRgn Me.hWnd, Region1, True End Sub
Wenn das Formular entladen wird sollte auch die Form zurückgesetzt werden:
Private Sub Form_Unload(Cancel As Integer) DeleteObject Region1 End Sub
Hier noch ein Beispiel wie das ganze aussehen könnte:
Auf www.vbAchiv.net findet ihr zu den API-Funktinonen und zu weiteren Funktionen der GDI Erklärungen.
Ein komplexeres Beispiel als Download findet ihr auf access-o-mania
AV 2010