Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: trebuh am Februar 29, 2016, 18:46:52

Titel: Kombinationsfeld.Dropdown
Beitrag von: trebuh am Februar 29, 2016, 18:46:52
Hallo,
Brauche wieder einen Expertenrat.

Im Ereignis "GotFocus()" eines Kombifeldes (Endlosformular) habe ich den Befehl "Me!cboMeinFeld.Dropdown" gesetzt, um das Kombifeld bei Focuserhalt aufzuklappen.

Das funktioniert.
Das Problem ist jetzt nur, dass wenn das Formular geöffnet wird, und das Kombifeld im Anschluß gleich den Focus hat, es nicht aufgeklappt wird.

Habe auch schon versucht, den Befehl ins Ereignis "Beim Laden" des Formulars zu setzen. Das hilft aber nicht.
Gibt es da einen Trick?
Das besagte Kombifeld ist in Reihenfolgeposition "0". Somit müsste doch das Ereignis "Bei Fokuserhalt" ansprechen (oder Nicht?)



Titel: Re: Kombinationsfeld.Dropdown
Beitrag von: MzKlMu am Februar 29, 2016, 19:09:51
Hallo,
meiner Meinung nach ist es eher lästig, dass das Kombi sofort aufklappt, Du willst ja die Daten eventuell nur ansehen. Besser wäre es vermutlich, nur bei einem neuen Datensatz das Kombi aufzuklappen.
Du kannst "Beim Laden" erst den Fokus setzen und dann öffnen.
ZitatPrivate Sub Form_Load()
    Me.KombinationsfeldName.SetFocus
    Me.KombinationsfeldName.Dropdown
End Sub
Titel: Re: Kombinationsfeld.Dropdown
Beitrag von: trebuh am März 02, 2016, 09:40:44
Hallo Klaus,

Du hast recht, das mit dem sofort aufklappen (wenn Daten schon vorhanden) ist lästig.
Es macht Sinn, wenn ein neuer Datensatz angelegt wird.

Jedoch funktioniert bei mir das

Private Sub Form_Load()

    If IsNull(Me!cboTest_cbo_Auswahl) Then
        'MsgBox "test"
        Me.cboTest_cbo_Auswahl.SetFocus
        Me.cboTest_cbo_Auswahl.Dropdown
    End If
   
End Sub


leider nicht.

Alles klappt ja soweit, nur wird beim laden das Kombifeld nicht aufgeklappt!?
Ich frage mich, wo der Fehler liegt?
Ist in den Formulareigenschaften was falsch eingestellt?

Habe mal eine einfache Beispieldatenbank hochgeladen. (.accdb-Datei und mdb-Datei)

Titel: Re: Kombinationsfeld.Dropdown
Beitrag von: MzKlMu am März 02, 2016, 10:08:08
Hallo,
verwende das Formularereignis "Beim Anzeigen".
Private Sub Form_Current()
    If Me.NewRecord = True Then
        Me.cboTest_cbo_Auswahl.SetFocus
        Me.cboTest_cbo_Auswahl.Dropdown
    End If
End Sub

Die Prüfung auf NULL entfällt dann.
Titel: Re: Kombinationsfeld.Dropdown
Beitrag von: trebuh am März 02, 2016, 11:32:53
Hallo Klaus,

habe Deinen Code ausprobiert. Leider besteht das Problem immer noch. Habe ich irgendwo eine falsche Einstellung?
Dieses Kombofeld will einfach nicht aufklappen.

Habe mal den Code mit Msg-Boxen versehen, um zu sehen wie abgearbeitet wird.

ZitatPrivate Sub Form_Current()

    MsgBox "Formular anzeigen"
      If Me.NewRecord = True Then
        MsgBox "Fokus setzen"
        Me.cboTest_cbo_Auswahl.SetFocus
        MsgBox "Combo aufklappen"
       
        Me.cboTest_cbo_Auswahl.Dropdown
        MsgBox "ENDE"
    End If
   
End Sub

Somit sehe ich ja Schritt für Schritt. Aber am Ende steht der Cursor nur im Combifeld ohne das es aufgeklappt wird. >:(

Scheinbar übersehe ich etwas, oder stehe mal wieder auf dem Schlauch. ;D

Gruß
Hubert

Nachtrag:

Habe gerade das Formular nochmal neu geladen. Es werden mir ja die MsgBox-Texte angezeigt. Interessanterweise ist der Ablauf jetzt so:

Ich öffne das Formular -> (Formular wird noch nicht angezeigt) 1. Msgbox wird angezeigt -> 2. Msgbox wird angezeigt -> 3.Msgbox wird angezeigt ->  Kombifeld wird aufgeklappt -> 4. MsgBox wird angezeigt. -> Danach erscheint das Formular und das Kombifeld ist wieder eingeklappt und der Cursor steht im Kombifeld.

Was löst das einklappen des Kombifeldes aus?
Titel: Re: Kombinationsfeld.Dropdown
Beitrag von: Beaker s.a. am März 02, 2016, 12:24:01
Hallo trebuh,
ZitatSomit sehe ich ja Schritt für Schritt
Das macht normalerweise damit, dass man einen Haltepunkt setzt und den Code schrittweise mit F8 abarbeitet.
Wahrscheinlich wird das Form nach der letzten MsgBox neu "gezeichnet".
gruss ekkehard
Titel: Re: Kombinationsfeld.Dropdown
Beitrag von: MaggieMay am März 02, 2016, 12:33:47
Es kommt auch vor, dass von einer Prozedur in eine andere gesprungen wird, d.h. ein Ereignis zieht andere nach sich, das bekommst du dann mit dem MsgBox-Test gar nicht mit.

Es kommt aber auch vor, dass im Unterbrechungsmodus der Code anders läuft als ohne Unterbrechung, das hängt halt von den Ereignissen ab.
Titel: Re: Kombinationsfeld.Dropdown
Beitrag von: trebuh am März 02, 2016, 12:44:19
Hallo Ekkehard,

ZitatDas macht normalerweise damit, dass man einen Haltepunkt setzt und den Code schrittweise mit F8 abarbeitet.
Ja, das stimmt. bisher habe ich damit aber noch nicht gearbeitet. (Braucht ich bisher noch nie).
Mich wundert es aber, wieso der Code (ohne die Msg-Boxen)
Private Sub Form_Current()
    If Me.NewRecord = True Then
        Me.cboTest_cbo_Auswahl.SetFocus
        Me.cboTest_cbo_Auswahl.Dropdown
    End If
End Sub

das Kombifeld nicht aufklappt, bzw. scheinbar ist da irgendwo ein Auslöser, wo es wieder einklappt. Wüsste aber nicht wo.

Gruss
Hubert

Sehe gerade, das ein Beitrag dazwischen gekommen ist.

Hallo MaggieMay,
ZitatEs kommt auch vor, dass von einer Prozedur in eine andere gesprungen wird, d.h. ein Ereignis zieht andere nach sich, das bekommst du dann mit dem MsgBox-Test gar nicht mit.

Ich wüsste aber nicht, welches Erreignis das sein soll?
Habe ja sonst keines? Habe in meiner Beispieldatenbank alle Erreignisse gelöscht.
Titel: Re: Kombinationsfeld.Dropdown
Beitrag von: Xoar am März 03, 2016, 21:42:31
Hi, hast Du schon eine Lösung hinbekommen, das Problem hab ich nämlich auch noch nie bis daro lösen können.
Titel: Re: Kombinationsfeld.Dropdown
Beitrag von: trebuh am März 03, 2016, 21:55:18
Hi,

nein habe ich leider nicht. Bin aber bis jetzt auch nicht dazu gekommen.
Habe aber den Eindruck, das es evtl. an irgendwelchen Einstellungen liegt. Denn so wie ich das sehe, funktioniert der Code bei anderen ja.
Zumindest bin ich jetzt nicht mehr der einzige. Sobald ich was rausbekomme, melde ich mich.

Gruß trebuh

PS. Vielleicht hat ja noch jemand einen Tipp
Titel: Re: Kombinationsfeld.Dropdown
Beitrag von: trebuh am März 04, 2016, 21:53:47
Nach weiteren Recherchen habe ich eine Lösung gefunden.

Scheinbar wird das Kombifeld aufgeklappt, bevor das Formular vollständig geladen ist. Abhilfe schafft der Timer.

Den Code
Private Sub Form_Current()

    If Me.NewRecord = True Then
        Me.cboTest_cbo_Auswahl.SetFocus
        Me.cboTest_cbo_Auswahl.Dropdown
    End If

End Sub


Nicht ins Erreignis "Beim Anzeigen" (Form_Current())

sondern in "Bei Zeitgeber" (Form_Timer()) setzen.
Private Sub Form_Timer()

     If Me.NewRecord = True Then     
        Me.cboTest_cbo_Auswahl.SetFocus
        Me.cboTest_cbo_Auswahl.Dropdown
        Me.TimerInterval = 0
    End If

End Sub


Dann mal mit den Millisekunden beim Zeitgeberintervall experimentieren.

Bei mir reichte Sage und Schreibe eine Millisekunde aus!

Gruß Hubert

Titel: Re: Kombinationsfeld.Dropdown
Beitrag von: Xoar am März 05, 2016, 22:07:54
ah super, danke für den Tipp!!

Wird mit Me.TimerInterval = 0 der Timer wieder "ausgeschaltet"?
Weil sonst läuft der ja nach jeder "Zeitperiode" wieder auf.