Fenster anzeigen, ohne es zu aktivieren

04.05.2005

Wenn Sie ein Access-Fenster eines Formulars oder Berichts mit Hilfe der „Visible-Eigenschaft“ sichtbar machen, aktiviert Access das Fenster automatisch. Das vorher geöffnete Formular verliert dadurch den Eingabefokus.

Um dies zu verhindern, setzen Sie den Eingabefokus mit dem Befehl SelectObject zurück:

Forms![frmUhrzeit].Visible = True     'Formular anzeigen und aktivieren
Domd.SelectObject acForm, "frmEingabe 'Formular wieder aktivieren

Mit dieser Methode entsteht allerdings ein störendes Geflacker, so dass der Fokus hin- und hergeschickt wird.

Diesem Umstand kann jedoch durch die Verwendung der bekannten Funktion SetWindowPos und einiger Konstanten abgeholfen werden.

Durch Angabe geeigneter Flags im letzten Parameter können Sie SetWindowPos dazu bringen, ein Fenster einzublenden, ohne es zu aktivieren. Dieses Verhalten wäre beispielsweise für Formulare interessant, die einen Status (z.B. die Uhrzeit) anzeigen. Folgendes Beispiel setzt die SetWindowPos-Funktion ein, um ein verborgendes Formular frmUhrzeit einzublenden, ohne dass das aktuelle Formular den Eingabefokus verliert:

Private Sub btnShowTime_Click()

    FensterAktivieren Forms![frmUhrzeit]

End Sub

Die Prozedur FensterAktivieren sieht wie folgt aus:

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

Declare Function SetWindowPos Lib "user32" _
    Alias "SetWindowPos" (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 Function FensterAktivieren(F As Form)

    SetWindowPos F.hwnd, 0, 0, 0, 0, 0, SWP_NOSIZE _
                            Or SWP_NOMOVE _
                            Or SWP_NOZORDER _
                            Or SWP_SHOWWINDOW Or SWP_NOACTIVATE

End Function

Die Flags SWP_NOSIZE und SWP_NOMOVE sorgen dafür, dass die Größe und Position des Fensters nicht verändert werden.

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.

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.