Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Stele4 am April 29, 2026, 08:28:55

Titel: Fokus, aber nicht Fokus
Beitrag von: Stele4 am April 29, 2026, 08:28:55
Hallo!
In einem Formular werden Text- und ComboBoxes fuer die Eingabe einer Filterbedingung verwendet.
Tritt das Ereignis 'Change' ein, wird das Formular neu gefiltert.
Das Formular wird also bei der Eingabe permanent mitgefiltert.

Problem: Wird ein Wert eingegeben, der nicht im Feld vorhanden ist, wird das Formular korrekt gefiltert (keine Datensaetze angezeigt), aber es kommt auch zu einem Fehler: "Eigenschaft kann nicht gesetzt werden, solange das Steuerlement nicht den Fokus hat (Fehler 2185)."

Laut Meldung triit der Fehler beim Versuch auf, den Cursor im Suchfeld zu setzen.
Den sollte es aber haben. Es wurde eben beschrieben, der Code setzt den Fokus extra noch einmal und im Debugging ist der Name des korrekten Elements zu lesen.

620         If Not oActCntl Is Nothing Then
630             oActCntl.SetFocus
640             oActCntl.SelStart = iActTxtSelPos
650             oActCntl.SelLength = 0
660         End If

Ich wuerde mich vorerst mit 'On Error Resume Next' behelfen.
Aber das ist nicht fein und ich wuesste gern den Grund fuer das Verhalten.

Gruss Stele
Titel: Re: Fokus, aber nicht Fokus
Beitrag von: Knobbi38 am April 29, 2026, 09:33:20
Hallo Stele,

der von dir gezeigte Code läßt leider nicht erkennen, wo der Fehler liegen könnte. Im Übrigen ist das Debuggen von Code mit Fokushandling oft nicht möglich, weil dieses durch das Debuggen beeinflusst wird.

Knobbi38
Titel: Re: Fokus, aber nicht Fokus
Beitrag von: Stele4 am April 29, 2026, 10:28:43
Hallo Knobbi!
Zeile 640.
SelStart soll geschrieben werden, loest aber einen Fehler aus, weil das Element nicht den Fokus hat.
Dieser Fehler taucht nur auf, wenn der Filter eine 'leere Tabelle' zurueck gibt.
Ansonsten wird der Code problemlos durchlaufen.
Was das Eine mit dem Anderen zu tun hat, erschliesst sich mir nicht.

Gruss Stele
Titel: Re: Fokus, aber nicht Fokus
Beitrag von: Knobbi38 am April 29, 2026, 10:58:37
Wie bereits gesagt, kann man nur Vermutungen anstellen. Wenn du aber den Fehler schon selber so eingrenzen kannst, würde ich den Zustand, welcher zum Fehler führt, mit einer IF Bedingung prüfen und ggf. abfangen.

Es gäbe auch die Lösung, die letzte Änderung, welche zu einer leeren Ergebnismenge geführt hat, einfach zurückzunehmen und dem Anwender das mit einem Beep zu quittieren.