PDA

Vollständige Version anzeigen : Ereignis einer anderen Form aufrufen


lalo
18.10.2007, 13:46
Hallo,

ich habe eine Form mit enem Button "Neu". Beim Klicken wird eine Form geöffnet, ist dies schon offen kommt eine Abfrage (msgbox) ob die dortigen Änderungen gespeichert werden sollen. Soweit klappt alles.

Nun meie Frage:

Kann ich aus Form1 das Ereigns "cmdOK_Click" der Form2 aufrufen oder gibt es dazu einen workaround. (Habe es schon mit Sendkeys probiert aber habe mit dieser Krückenlösung keinen Erfolg gehabt - auch keine Erfahrung.

Hier mein Code:

...
If IsLoaded("RCA_MAIN") Then
Answer = MsgBox("Vorgangsanzeig ist geöffnet." & vbCrLf & "Wollen Sie die Daten speichern (JA)" & vbcrlf "oder verwerfen (NEIN) ?", vbQuestion + vbYesNoCancel)
Select Case Answer
Case vbYes
Forms!RCA_MAIN.cmdOk.SetFocus
SendKeys "~" '<<<<< dies klappt nicht !
DoCmd.Close acForm, "RCA_MAIN"
Case vbNo
DoCmd.Close acForm, "RCA_MAIN"
Case Else
Exit Sub
End Select
End If
RCA_ID = 0
DoCmd.OpenForm "RCA_Main", acNormal, , , , , RCA_ID
End Sub

Gruß Bernd

bofspb
18.10.2007, 13:50
Normalerweise sind doch die Click_ereignisse als "Private" deklariert. Ein zugriff ist also nicht möglich... Ich weiß nicht, inwiefern das möglich (und sinnvoll) ist, aber wenn Du das Ereignis als "Public" deklarierst müsstest Du doch per Call Forms("Form2").cmdOk_click() darauf zugreifen können?!?

lalo
18.10.2007, 13:59
Danke,

habe die event-proc public gemacht - und es läuft !
Vielen Dank
Bernd

Josef P.
18.10.2007, 18:56
Eine Anmerkung zum Programmierstil:
Ich finde es irgendwie verwirren, dass ich von außen ein onClick aufrufe, obwohl ich doch gar nicht "klicke", sondern nur den Ereignishandler ausführen will.

Daher würde ich eine eigene Methode vorschlagen, die sogar mit dem Namen auf die darin durchgeführte Routine hinweist. Diese Methode wird dann auch vom eventhandler gestartet.

Private Sub cmdOk_Click()
CloseRcaMain
End Sub

Public sub CloseRcaMain()
...
If IsLoaded("RCA_MAIN") Then
...
end if

RCA_ID = 0
DoCmd.OpenForm "RCA_Main", acNormal, , , , , RCA_ID

end sub

und von außen greifst du dann auch auf CloseRcaMain zu
Forms("Form2").CloseRcaMain