Fokus auf Formular legen

Moderator: ModerationP

Fokus auf Formular legen

Beitragvon indscho1 » 03. Mai 2021, 16:21

Hallo zusammen,
ich habe zur gleichen Zeit zwei Formulare im Popup-Modus geöffnet. Das erste ist sichtbar, das zweite unsichtbar (es wird am Ende der Open-Routine des ersten Formulars geladen). Durch Doppelklicken in eine Listbox möchte ich nun das zweite Formular sichtbar machen und ihm den Fokus zuweisen. Folgende Routine läuft dazu ab:
Code: Alles auswählen
Private Sub lisProjectSelection_DblClick(Cancel As Integer)

    Dim strForm As String
    Dim strWhere As String

    On Error GoTo Err_Handler
   
    pubLProjectID = Me.lisProjectSelection
   
    With Forms("frmProjectImprovements")
        .Visible = True
        .RecordSource = "SELECT * FROM view_frmProjectImprovements WHERE project_id = " & pubLProjectID
        .Requery
        .SetFocus
    End With
   
Err_Exit:
    Exit Sub
   
Err_Handler:
    MsgBox Err.Description
    Resume Err_Exit

End Sub

Als Ergebnis wird das Formular mit den gewünschten Daten sichtbar, und es ist im Vordergrund. Aber es hat den Fokus nicht, denn der verbleibt auf dem vorherigen Formular.

Was mache ich falsch?

Vielen Dank im Voraus für eure Bemühungen.

Gruß Ingo
indscho1
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 107
Registriert: 16. Nov 2016, 11:14

Re: Fokus auf Formular legen

Beitragvon Bitsqueezer » 03. Mai 2021, 17:53

Hallo Ingo,

leider holt Access das Formular durch "SetFocus" nicht nach vorn. Die einzige mir bekannte Methode ist per DoCmd.OpenForm, wenn das Formular schon geöffnet war, holt das das Formular nach vorne.

Gibt vielleicht noch irgendwelche API-Tricks, aber das müßtest Du selbst googlen.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8276
Registriert: 21. Jun 2007, 12:17

Re: Fokus auf Formular legen

Beitragvon knobbi38 » 04. Mai 2021, 11:44

Hallo Ingo,

mit
Code: Alles auswählen
Declare PtrSafe Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As LongPtr) As Long

solltest du das Fenster in den Vordergrund setzen können.

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3261
Registriert: 02. Jul 2015, 14:23

Re: Fokus auf Formular legen

Beitragvon mmarkus » 05. Mai 2021, 16:54

Interessant sind die Hinweise zu SetForegroundWindow:

An application cannot force a window to the foreground while the user is working with another window.
Instead, Windows flashes the taskbar button of the window to notify the user.


Das Problem ist also ein Windows Thema.
Mit einen Timer kann man das Problem umgehen.
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2057
Registriert: 16. Apr 2012, 16:07
Wohnort: Oberösterreich


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste