Steuerelement deaktivieren

09/06/2009 - 11:29 von Michael König | Report spam
Hallo NG,

in einer A2k-Anwendung habe ich ein Haupt- und ein Unterformular (HF und
UF). Beide Formulare sind über ein eindeutiges Id-Feld im HF verknüpft,
das UF enthàlt tabellarisch die Datensàtze einer Tabelle. Das
Hauptformular enthàlt u.a. einen Button zum Löschen eines DS aus der
Tabelle. Nun möchte ich den Löschen-Button nur auswàhlbar haben, wenn
ein anderes Feld im UF den Wert 0 hat. Hierzu habe ich im Ereignis "Beim
Anzeigen" des UF folgenden Code eingegeben:

Private Sub Form_Current()
On Error GoTo Err_Form_Current

If IsSubForm(Me) Then ' ist Me als Subform geöffnet
Me.Parent!txtConcId = Me!Id ' HF und UF verknüpfen
Me!Kennzeichen.SetFocus ' Kennzeichen ist ein Feld im UF
Debug.Print Me.ActiveControl.Name ' hier wird "Kennzeichen" ausgegeben
Me.Parent!cmdLoeschen.Enabled = IsNothing(Me!Betrag) ' hier
passiert der Fehler
End If

Exit_Form_Current:
On Error GoTo 0
Exit Sub

Err_Form_Current:
MsgBox "Fehler " & Err.Number & " in Prozedur " & _
ScrubInput("Form_Current") & ":" & vbCrLf & _
"==> " & Err.Description, vbCritical + vbOKOnly, _
"Modul Form_frmUStartkladde (Typ: VBA Dokument)"
Resume Exit_Form_Current

End Sub

Dabei ist die Funktion IsNothing nur dazu da, zu prüfen, ob ein Feld
z.B. den Wert 0 hat. Beim ersten Aufruf des HF ist die Anzeige korrekt,
aber nach dem ersten Löschvorgang erhalte ich die Fehlermeldung 2164
("Sie können ein Steuerelement nicht deaktivieren, solange es den Fokus
hat."), ich habe aber doch den Fokus auf ein anderes Element gelegt. Was
mache/verstehe ich da falsch?

Gruß
Michael
 

Lesen sie die antworten

#1 Thomas Möller
09/06/2009 - 11:44 | Warnen spam
Hallo Michael,

"Michael König" wrote:
in einer A2k-Anwendung habe ich ein Haupt- und ein Unterformular (HF und
UF). Beide Formulare sind über ein eindeutiges Id-Feld im HF verknüpft,
das UF enthàlt tabellarisch die Datensàtze einer Tabelle. Das
Hauptformular enthàlt u.a. einen Button zum Löschen eines DS aus der
Tabelle. Nun möchte ich den Löschen-Button nur auswàhlbar haben, wenn
ein anderes Feld im UF den Wert 0 hat. Hierzu habe ich im Ereignis "Beim
Anzeigen" des UF folgenden Code eingegeben:

Private Sub Form_Current()
On Error GoTo Err_Form_Current

If IsSubForm(Me) Then ' ist Me als Subform geöffnet
Me.Parent!txtConcId = Me!Id ' HF und UF verknüpfen
Me!Kennzeichen.SetFocus ' Kennzeichen ist ein Feld im UF
Debug.Print Me.ActiveControl.Name ' hier wird "Kennzeichen" ausgegeben
Me.Parent!cmdLoeschen.Enabled = IsNothing(Me!Betrag) ' hier
passiert der Fehler
End If

Exit_Form_Current:
On Error GoTo 0
Exit Sub

Err_Form_Current:
MsgBox "Fehler " & Err.Number & " in Prozedur " & _
ScrubInput("Form_Current") & ":" & vbCrLf & _
"==> " & Err.Description, vbCritical + vbOKOnly, _
"Modul Form_frmUStartkladde (Typ: VBA Dokument)"
Resume Exit_Form_Current

End Sub

Dabei ist die Funktion IsNothing nur dazu da, zu prüfen, ob ein Feld
z.B. den Wert 0 hat. Beim ersten Aufruf des HF ist die Anzeige korrekt,
aber nach dem ersten Löschvorgang erhalte ich die Fehlermeldung 2164
("Sie können ein Steuerelement nicht deaktivieren, solange es den Fokus
hat."), ich habe aber doch den Fokus auf ein anderes Element gelegt. Was
mache/verstehe ich da falsch?



Du musst zuerst den Fokus auf das Ufo-Steuerelement setzen bevor Du den
Fokus auf das Steuerelement im Ufo setzen kannst. Siehe auch:
www.donkarl.com?FAQ4.2
(Link in einer Zeile)


HTH
Thomas

Home: www.Team-Moeller.de

Ähnliche fragen