Titel eines Formulars ausblenden

Veröffentlicht am 04.05.2005

Manchmal soll ein Formular angezeigt werden, das keinen Titel besitzt. Mit den Formulareigenschaften „Rahmenart“, „Systemmenüfeld“ und „MinMaxSchaltflächen“ können Sie ja ein Formular so gestalten, dass es keinen Titelbalken hat. Mit dieser Methode verschwindet jedoch der Fensterrahmen, so dass sich das Formular von anderen geöffneten Fenstern nur schwer abgrenzt. Mit einigen API-Funktionen können Sie den Titel des Fensters ausblenden und dabei den Rahmen beibehalten.

Folgende Prozedur setzt die nötigen Funktionen ein, um den Titel des Fensters ausblenden und dabei den Rahmen beizubehalten: 

Option Compare Database 
Option Explicit 
Public Const LOGPIXELSX = 88 ' Logical pixels/inch in X 
Public Const LOGPIXELSY = 90 ' Logical pixels/inch in Y 
Public Const GWL_STYLE = (-16) 
Public Const WS_CAPTION = &HC00000 
Public Const WS_BORDER = &H800000 
Public Const SWP_NOMOVE = &H2 
Public Const SWP_NOSIZE = &H1 
Public Const SWP_NOZORDER = &H4 
Public Const SWP_SHOWWINDOW = &H40 
Public Const SWP_NOACTIVATE = &H10 
Public Const SWP_FRAMECHANGED = &H20 
Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long 
Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, _
                ByVal nIndex As Long) As Long 
Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, _ 
                ByVal hdc As Long) As Long 
Declare Function GetWindowLong Lib "user32" Alias _
                "GetWindowLongA" (ByVal hwnd As Long, _ 
                ByVal nIndex As Long) As Long 
Declare Function SetWindowLong Lib "user32" Alias _ 
                "SetWindowLongA" (ByVal hwnd As Long, _ 
                ByVal nIndex As Long, ByVal dwNewLong As Long) As Long 
Declare Function GetDesktopWindow Lib "user32" () As Long 
Declare Function SetWindowPos Lib "user32" _
                (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _ 
                ByVal x As Long, ByVal y As Long, ByVal cx As Long, _ 
                ByVal cy As Long, ByVal wFlags As Long) As Long 
Public Sub TitelEntfernen(F As Form) 
Dim OldStyle As Long, NewStyle As Long 
Dim Breite As Long, Höhe As Long 
Dim TwipsPerPixelX As Long, TwipsPerPixelY As Long 
Dim hdc As Long 
    ' Handle des Desktop-GerätKontextes ermitteln 
    hdc = GetDC(GetDesktopWindow()) 
    ' Auflösung in Twips umrechnen und Handle wieder freigeben 
    TwipsPerPixelX = 1440 / GetDeviceCaps(hdc, LOGPIXELSX) 
    TwipsPerPixelY = 1440 / GetDeviceCaps(hdc, LOGPIXELSY) 
    ReleaseDC GetDesktopWindow(), hdc 
    ' aktuellen Fensterstil ermitteln 
    OldStyle = GetWindowLong&(F.hwnd, GWL_STYLE) 
    ' neuen Fensterstil definieren und setzen 
    NewStyle = (OldStyle And Not WS_CAPTION) Or WS_BORDER 
    SetWindowLong F.hwnd, GWL_STYLE%, NewStyle& 
    ' Fenstergröße anpassen 
    Breite = F.Width \ TwipsPerPixelX 
    Höhe = F.Section(acDetail).Height \ TwipsPerPixelY 
    ' Fenster mit neuen Eigenschaften anzeigen 
    SetWindowPos F.hwnd, 0, 0, 0, Breite, Höhe, _ 
                    SWP_NOMOVE Or SWP_NOZORDER _ 
                    Or SWP_FRAMECHANGED 
End Sub

Zunächst ermittelt diese Prozedur die Maße des Bildschirms, die für die spätere Anpassung der neuen Fenstergröße wichtig sind. Mit GetWindowLong und SetWindowLong werden die Attribute des Fensters abgefragt bzw. ohne den Titel neu gesetzt, wobei der Fensterrahmen erhalten bleibt. Zuletzt wird die Fenstergröße neu angepaßt und angezeigt.

Unsere Dienstleistungen

Als starker Partner an Ihrer Seite unterstützen wir Sie in folgenden Breichen:

Access-Programmierung

Benötigen Sie Unterstützung bei der Programmierung von Access-Anwendungen? Wir bieten die gesamte Bandbreite von der Access-Programmierung auf Stundenbasis bis zur Durchführung eines Software-Projektes als Auftragsarbeit an. Kontaktieren Sie uns für ein kostenloses Erstgespräch.

JETZT KONTAKTIEREN

Software-Beratung

Haben Sie ein Software-Projekt und Sie wissen nicht, ob Access die richtige Plattform ist? Wir haben über 20 Jahre Erfahrung beim Erstellen von Windows-, Web und mobilen Anwendungen. Kontaktieren Sie uns für eine kostenlose Erstberatung.

JETZT KONTAKTIEREN