Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: PeterW am Januar 14, 2011, 07:58:51

Titel: Ereignis Focuserhalt
Beitrag von: PeterW am Januar 14, 2011, 07:58:51
Ich öffne Formular 1 und dann über ein Button ein Formular 2
Der Fokus liegt jetzt beim Formular 2. Wenn ich nun das Formular 2 schließe, welchen Ereignis tritt dann beim Formular 1 ein?
Der von mir erwartete Focuserhalt tritt nicht ein.
Gruß
Peter

Titel: Re: Ereignis Focuserhalt
Beitrag von: MzKlMu am Januar 14, 2011, 08:06:35
Hallo,
versuche es so:
Private Sub Form_Activate()
    MsgBox "Bei Aktivierung"
End Sub


Das kann man ganz leicht ausprobieren, in dem man einfach bei den Ereignissen die in Frage kommen eine MsgBox aufruft.
Titel: Re: Ereignis Focuserhalt
Beitrag von: PeterW am Januar 14, 2011, 16:13:20
Diesen Test habe ich gemacht, das Ereignis Activate wird nicht ausgelöst.

Ich habe beide Formulare auf dem Desktop. Durch klicken in das jeweilige Formular meinte ich den Focus zu setzen aber dieses Ereignis wird ebenfalls nicht ausgewertet.

Gruß
Peter
Titel: Re: Ereignis Focuserhalt
Beitrag von: database am Januar 14, 2011, 16:38:18
Hallo,

Zitatwelchen Ereignis tritt dann beim Formular 1 ein?
in der Regel keines, da es ja keine Veranlassung gibt.

Du KÖNNTEST aber beispielsweise im Formular1 eine Prozedur erstellen,


Sub machwas()
   MsgBox "ich mach was"
End Sub


die beim Entladen des Formular2 aufgerufen wird


Private Sub Form_Unload(Cancel As Integer)
   Form_Formular1.machwas
End Sub


Bei dieser Form des Aufrufes wird die Prozedur auch ausgeführt, wenn das Formular1 geshlossen ist!
Um das zu umgehen müsste der Aufruf so erfolgen:


Private Sub Form_Unload(Cancel As Integer)
    Call Forms("Formular1").machwas
End Sub


Erfolgt nun der Aufruf und das Formular1 ist geschlossen, wird ein Fehler erzeugt, der sich aber bequem abfangen lässt z.B so:


Private Sub Form_Unload(Cancel As Integer)

    If SysCmd(acSysCmdGetObjectState, acForm, "Formular1") <> 0 Then
        Call Forms("Formular1").machwas
    Else
        MsgBox "Formular1 ist geschlossen"
    End If

End Sub


Die SysCmd - Variante ließe sich natürlich auch beim anderen Aufruf einsetzen um die Ausführung bei geschlossenem Formular1 zu verhindern.

Der Vorschlag von MzKlMu funktioniert auch, allerdings nur wenn dein Formular KEIN Popupform ist!
Zumindest ist das bei ACC2007 und ACC2010 so

HTH
Titel: Re: Ereignis Focuserhalt
Beitrag von: oma am Januar 14, 2011, 16:50:47
Hallo,

auch bei Access2003 funktioniert der Vorschlag von Klaus garantiert!

Gruß Oma
Titel: Re: Ereignis Focuserhalt
Beitrag von: database am Januar 14, 2011, 16:54:15
Hallo,

@oma

auch wenn das Form als PopUp deklariert ist?
Ich hab' leider keine Möglichkeit das zu probieren
Titel: Re: Ereignis Focuserhalt
Beitrag von: oma am Januar 14, 2011, 16:59:20
Hallo

@Peter: Nein, bei PopUp funktioniert es so nicht!

Gruß Oma
Titel: Re: Ereignis Focuserhalt
Beitrag von: bahasu am Januar 14, 2011, 19:09:50
N'abend

ich füge mal eine Spekulation an: Wenn Dein Ziel sein sollte, dass nach dem Schließen des aufgerufenen Formulars etwas geprüft, gemacht ... werden sollte, ist folgendes machbar:

Voraussetzung:
1. Aufgerufenenes Formular als gebundenes popup in den Eigenschaften definiert.
2. den Aufruf aus dem Click-Ereignis Deines Buttons:
   DoCmd.OpenForm "popup", , , , , acDialog  
   MsgBox "STOP"   ' ist ein oben beschriebener Indikator, wo das Programm ist

Dann wird nach dem Schließen des aufgerufenen Formulars die msgbox-Zeile angezeigt. Wenn - wie oben spekuliert - Dein Ziel sein sollte, dann irgendetwas Spezielles zu machen, könnte das dann statt der msgbox-Zeile stehen.

Harald
Titel: Re: Ereignis Focuserhalt
Beitrag von: PeterW am Januar 15, 2011, 07:07:45
Harald, Danke
Das ist genau der richtige Weg, den ich gesucht habe
das funktioniert einwandfrei

Gruß
Peter