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
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.
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
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
Hallo,
auch bei Access2003 funktioniert der Vorschlag von Klaus garantiert!
Gruß Oma
Hallo,
@oma
auch wenn das Form als PopUp deklariert ist?
Ich hab' leider keine Möglichkeit das zu probieren
Hallo
@Peter: Nein, bei PopUp funktioniert es so nicht!
Gruß Oma
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
Harald, Danke
Das ist genau der richtige Weg, den ich gesucht habe
das funktioniert einwandfrei
Gruß
Peter