Office: (Office 2010) .SetFocus funktioniert nicht

Helfe beim Thema .SetFocus funktioniert nicht in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Aus irgendeinem - mir nicht erfindlichen - Grund funktioniert plötzlich das Setzen des Fokus auf ein ungebundenes Textfeld in einem Formularfuß nicht... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von hcscherzer, 24. Mai 2017.

  1. .SetFocus funktioniert nicht


    Aus irgendeinem - mir nicht erfindlichen - Grund funktioniert plötzlich das Setzen des Fokus auf ein ungebundenes Textfeld in einem Formularfuß nicht mehr.

    Ich setze diesen Befehl im Lost_Focus Ereignis eines anderen Textfelds aus und zwar nachdem ich eine Menge Dinge tun lasse, die alle vorher getan werden müssen.

    Das hat immer funktioniert.
    Bis gestern.

    Da habe ich ganz an den Anfang der Prozedur ein paar Zeilen hinzugefügt.

    Im Debug-Modus funktioniert es einwandfrei.
    Aber zur Laufzeit eben nicht (mehr).
    Keine Ahnung, wohin der Fokus verschwindet ...
    Neben besagtem Textfeld, das den Fokus erhalten soll, sind nur ein paar Buttons aktiv aber die bekommen ihn augenscheinlich nicht.

    Ich habe auch schon versucht ein DoEvents vor den Me.txt_x.SetFocus zu setzen ... keine Änderung.

    Wenn ich in den Detailbereich, irgendwo in den Formularfuß oder auf das Textfeld selbst klicke, erhält es übrigens sofort den Fokus ...

    Und - falls jemand fragt: nein, ich kann keine "abgespeckte" Version meiner DB hochladen. Sorry.

    :)
     
    hcscherzer, 24. Mai 2017
    #1
  2. Moin Hans-Christian,
    was passiert, wenn du in der Prozedur vorher den Focus in den Formularfuß verschiebst?
    maike
     
    maikek, 26. Mai 2017
    #2
  3. \@Maike: Moin.
    Klappt nicht - der Formularfuß kennt die Methode .SetFocus nicht.

    Ich kann auch keinen der Buttons per .SetFocus aktivieren.
    Irgendwie ist der Fokus komplett verschwunden und kehrt erst nach einem Klick zurück.
    Klick in den Formularkopf: der erste Button dort bekommt ihn.
    Im Detailbereich ist nichts aktiv - da bekommt ihn das Textfeld im Fuß - wie beim Klick in den Fuß.
     
    hcscherzer, 26. Mai 2017
    #3
  4. .SetFocus funktioniert nicht

    Hallo,
    prinzipiell sollte das funktionieren (auch ohne vorheriges setzen des Focus auf den Fuß).
    Teste es in einem neuen Formular. Du hast dir also irgendwie was verstellt/vercodet.
     
    Steffen0815, 26. Mai 2017
    #4
  5. \@Steffen: prinzipiell sollte immer alles funktionieren, wenn man keine Fehler macht.

    Das Phänomen lässt sich exakt reproduzieren:
    Ein gewisser Funktionsaufruf, der (zusätzlich zu anderen) zu Beginn der .AfterUpdate Ereignisprozedur des Textfelds eingefügt wird, das zuletzt den Fokus hat, verursacht das Verhalten.

    Lasse ich den Aufruf weg, wird der Cursor brav gesetzt.
    Füge ich den Aufruf ein, verschwindet der Cursor bis zum nächsten Click.

    Die fragliche Funktion sucht nach gewissen Dateien in einem vorgegebenen Pfad. Wenn welche vorhanden sind, werden sie von einer kleinen Prozedur geöffnet, konvertiert, gespeichert und dann per .TransferText eingelesen.

    An diversen anderen Stellen meiner DB wird diese Function auch aufgerufen (auch aus einem anderen Formular) und nirgends sonst verursacht sie dieses Schlamassel.

    Sicherlich braucht das alles ein paar Millisekunden aber da sollte doch das DoEvents abhelfen ...
     
    hcscherzer, 26. Mai 2017
    #5
  6. Hallo,
    DoEvents beschleunigt nicht sondern verteilt nur die Last, was u.U. sogar zum verlangsamen führt. Man sollte grundsätzlich vorsichtig mit DoEvents sein, da es ein paar hässliche Nebeneffekte auslösen kann.

    Lass dir mal mit Screen.ActiveControl das Element ausgeben, was den Fokus hat (Timer!?).
    Auch denkbar (aber eher unwahrscheinlich) lass den Befehl setfocus solang in Schleife laufen, bis es wirklich den Fokus hat.

    Vielleicht verursacht deine (uns) unbekannte Funktion einen Focusverlust von Access bzw. vom Formular selbst.


    Ja und ansonsten kennen wir die auslösende Funktion nicht - wie soll man da weiterhelfen!?
     
    Steffen0815, 26. Mai 2017
    #6
  7. Hihi: screen.activecontrol.name ist das Steuerelement, was den Focus erhalten haben sollte. Aber Cursor blinkt nicht ...
     
    hcscherzer, 26. Mai 2017
    #7
  8. .SetFocus funktioniert nicht

    Hallo Hans Christian,
    ich kann dir gedanklich nicht folgen, bzw. verstehe nicht was du meinst.

    Wenn im Formular kein Cursor blinkt, dann hat es selbst unter Umständen keinen Fokus oder dein Hintergrundprozess lässt keine Zeit zum aktualisieren.

    Beispiel: Code:
    Dh. Me.Text11 hat jeder Zeit den Fokus, kann aber nur blicken, wenn Zeit dafür da ist.

    Noch ein Beispiel: Code:
    Hier blinkt jetzt überhaupt nix mehr, weil Access den Fokus verloren hat.

    Bei mir bleibt Access ganz normal im Vordergrund aber es ist kein Cursor mehr zu sehen !!!
    Hier hilft im einfachsten Fall ein Code:
    Btw: Dieses Verhalten ist Abhängig von der Accessversion, also nicht unbedingt nachvollziehbar
     
    Steffen0815, 26. Mai 2017
    #8
  9. Du hattest in #6 empfohlen, mir ausgeben zu lassen, welches Element den Fokus hat. Das hab ich gemacht und das Resultat war (ist): das Textfeld, dem ich per .SetFocus den Fokus gebe, hat ihn auch. Aber der Cursor blinkt nicht.
    Und egal, wie lange ich warte, er fängt auch nicht an, zu blinken.

    Die Funktion, die ich aufrufe, macht etwas im Hintergrund, das mit der Oberfläche rein gar nichts zu tun hat.

    Ich hab doch erklärt, was sie macht. Wenn Du meinst, ein Blick auf den Code könnte weiterhelfen, also bitte:
    Code:
     
    hcscherzer, 26. Mai 2017
    #9
  10. Hallo,
    nun wäre normalerweise der nächste Schritt zu schauen, welcher der Befehle in der Funktion das Problem verursacht.
    Ich setzte 50ct auf "DoCmd.TransferText acImportDelim" *Smilie

    Du bist dir sicher, dass Access nicht (selbst) den Fokus verloren hat!?

    Ich bin mir ziemlich sicher, dass genau dies das Problem ist *wink.gif*.

    Wie oben geschrieben hilft hier (im einfachsten Fall): Code:
     
    Steffen0815, 26. Mai 2017
    #10
  11. Wenn Du Dir so sicher bist, Steffen, dann erklär mir das bitte mal:
    wieso verliert Access den Fokus, wenn ich .TransferText aufrufe ???

    Das ist eine Methode, die ich seit Jahren verwende und niemals Probleme damit hatte.

    Übrigens: die Sache mit AppActivate() funktioniert nicht.
    Ich habe hier zwar 2016 aber mein Kunde verwendet 2010 und laut OnlineHilfe ist diese Funktion erst ab 2013 wirksam.
    Aber egal: weder Access noch das Formular noch das Textfeld erhält danach den Focus.
     
    hcscherzer, 26. Mai 2017
    #11
  12. Hallo,
    Kann ich dir nicht sagen, ich habe Access nicht entwickelt.
    Ich kann Access nur testen und feststellen, dass es (bei mir) so ist.

    Also unter AC2010 gibt es die definitiv und nmE. auch schon vorher.

    Was bedeutet das konkret? Fehlermeldung.

    Aber du solltest als allererstes klären, ob es am Focusverlust liegt. Versuche doch einfach mal über Alt-Tab zu Access zu wechseln.
     
    Steffen0815, 26. Mai 2017
    #12
  13. .SetFocus funktioniert nicht

    Tatsächlich.
    Wenn ich den .TransferText Aufruf auskommentiere, dann wird der Fokus gesetzt.
    Unfassbar.


    Nö.
    Das würde ja schon weiterhelfen.
    Es passiert ganz einfach: Nichts.

    Ich hatte als Argument den Namen der DB (ohne .accdb) angegeben.
    Jetzt habe ich den in den Optionen auch noch als Anwendungstitel angegeben.
    Und siehe da: es klappt.

    Puh. Schwere Geburt.
    Ich danke Dir für Deine Mithilfe und schulde Dir 50 ct.
     
    hcscherzer, 26. Mai 2017
    #13
  14. Hallo,
    also ich teste mit folgendem Code: Code:
    Bei einem Popup tritt der Fehler übrigens anscheinend nicht auf.

    Sollte das (bei dir) nicht funktionieren, bleibt noch die "große Keule" mit der API findwindow/activatewindow
     
    Steffen0815, 26. Mai 2017
    #14
Thema:

.SetFocus funktioniert nicht

Die Seite wird geladen...
  1. .SetFocus funktioniert nicht - Similar Threads - SetFocus funktioniert

  2. Formel funktioniert nur bis 19.30 Uhr

    in Microsoft Excel Hilfe
    Formel funktioniert nur bis 19.30 Uhr: Hallo zusammen, Ich würde gerne die Anzahl der ein- und ausfahrenden Fahrzeuge einer Parkgarage über mehrere Tage im Viertelstundentakt auswerten. Ich verwende dafür die Funktion ZÄHLENWENNS. Das...
  3. copyfromrecordset funktioniert nicht mehr

    in Microsoft Excel Hilfe
    copyfromrecordset funktioniert nicht mehr: Hallo zusammen, ich versuche heute schon eine ganze Weile den Fehler für das nachfolgend genannte Problem zu finden. Bis gestern hat mit dem nachfolgenden VBA-Code alles tatellos funktioniert und...
  4. Textbox1.Setfocus funktioniert nicht

    in Microsoft Excel Hilfe
    Textbox1.Setfocus funktioniert nicht: Hallo Leute, ich programmiere hier gerade seit 2 Tagen ein Excel-AddIn für einen Kunden (Excel 2003, SP3). In einem UserForm habe ich eine Datumsauswahl per Textbox txtDatumVon bzw. alternativ...
  5. SetFocus fokussiert nicht

    in Microsoft Access Hilfe
    SetFocus fokussiert nicht: Hallo, ich rufe nach der Eingabe eines Wertes in einem Formular über das AfterUpdate Event folgende Prozedur auf: Code: Sub OoR(frm As Form, field As Control) 'Prüfen ob Wert Out of Range Dim max...
  6. SetFocus geht nicht

    in Microsoft Access Hilfe
    SetFocus geht nicht: Hallo @ll, noch im alten Jahr stehe ich wieder mal auf dem Schlauch :-( Ich habe ein Formular und möchte mir einen Bericht anzeigen, dies klappt ja einwandfrei, aber wenn der Bericht geschlossen...
  7. SetFocus wieder auf das gleiche Feld

    in Microsoft Access Hilfe
    SetFocus wieder auf das gleiche Feld: So, alles probieren und die Forensuche hat nix geholfen. Bevor ich nun an diesem an sich banalen Problem verzweifle, frage ich lieber mal hier: Ändert der Anwender in einem Formular den Wert...
  8. Formular, SetFocus wird nicht gesetzt (2 Varianten)

    in Microsoft Access Hilfe
    Formular, SetFocus wird nicht gesetzt (2 Varianten): Hallo, Ausgangslage: Formular mit 2 Textfeldern Problem: nachdem in Textfeld1 der String eingefügt ist, lässt sich der Fokus nicht auf das Textfeld2 verschieben. Sozusagen ein...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden