Discussion:
Kombinationsfeld in VBA öffnen
(zu alt für eine Antwort)
Fritz Anton
2004-11-06 13:02:40 UTC
Permalink
Hi,

Ich habe in einem (Access 2003) Formular ein Kombinationsfeld ("AlphaCap")
auf Basis Wertliste mit A;B;C;D;... eingerichtet. Das Feld funktioniert im
Formular tadellos. Im Öffnen-Ereignis des Formulars versuche ich nun, dieses
Kombifeld zu aktivieren und zu öffnen:
...
Me.AlphaCap.SetFocus
Me.AlphaCap.Dropdown
...
Das Ergebnis ist, dass das Kombifeld geschlossen bleibt und ich eine zweite
Instanz des Kombifeldes geöffnet dargestellt bekomme. Sobald ich dieses
zweite Exemplar benütze (was funktioniert), schliesst es sich und
verschwindet, es bleibt das Original-Kombifeld.
Da stimmt doch was nicht. Vorher hatte ich die altertümliche SendKeys {F4}
und SendKeys {down} Methode verwendet, da klappte es einwandfrei.

Fritz
Norman Götz
2004-11-06 18:31:55 UTC
Permalink
On Sat, 6 Nov 2004 14:02:40 +0100, Fritz Anton wrote:

Hi Fritz
Post by Fritz Anton
Das Ergebnis ist, dass das Kombifeld geschlossen bleibt und ich eine zweite
Instanz des Kombifeldes geöffnet dargestellt bekomme. Sobald ich dieses
zweite Exemplar benütze (was funktioniert), schliesst es sich und
verschwindet, es bleibt das Original-Kombifeld.
Das Öffnen-Eregnis tritt auf bevor das Formular geladen ist (Füllen
von Kombos etc), stell die Routine auf Bei Aktivierung, dann klappt's.

hth
Norman Götz
Fritz Anton
2004-11-06 19:41:47 UTC
Permalink
Hi Norman,

Danke für den Tipp - leider ist das Ergebnis identisch.
Mein erster Beitrag war irreführend, es handelt sich nicht um eine zweite
Instanz, sondern um die aufgeklappte Liste des Kombifeldes am falschen
Platz. Sie klappt nicht unmittelbar unter dem Steuerelement Kombifeld auf,
sondern an einer anderen Stelle des Formulars (schräg versetzt und etliche
Zentimeter darunter). Nach einmaligem Gebrauch schliesst sich dieses Fenster
wieder und erst beim neuerlichen Anklicken des Original-Kombifeldes klappt
die Liste normal unter dem Kombifeld auf. Der VBA-Befehl "Dropdown" öffnet
also das Listenfenster an einer unkontrollierbaren (?) Stelle. Ich habe
folgendes versucht:
Formular/Beim Öffnen - Me.AlphaCap.SetFocus (funktioniert)
Kombifeld/Bei Fokuserhalt - Me.AlphaCap.Dropdown (funktioniert nicht - siehe
oben)

Fritz
Post by Norman Götz
Das Öffnen-Eregnis tritt auf bevor das Formular geladen ist (Füllen
von Kombos etc), stell die Routine auf Bei Aktivierung, dann klappt's.
Carsten Wilke
2004-11-06 20:15:08 UTC
Permalink
Hallo!
Post by Fritz Anton
Ich habe in einem (Access 2003) Formular ein Kombinationsfeld ("AlphaCap")
auf Basis Wertliste mit A;B;C;D;... eingerichtet. Das Feld funktioniert im
Formular tadellos. Im Öffnen-Ereignis des Formulars versuche ich nun, dieses
...
Me.AlphaCap.SetFocus
Me.AlphaCap.Dropdown
...
Das Ergebnis ist, dass das Kombifeld geschlossen bleibt und ich eine zweite
Instanz des Kombifeldes geöffnet dargestellt bekomme. Sobald ich dieses
zweite Exemplar benütze (was funktioniert), schliesst es sich und
verschwindet, es bleibt das Original-Kombifeld.
Das Problem kenn ich, es sieht so aus, als ob das dropdown eher statt-
findet, als das Form im Vollbil geöffnet ist. Wenn man auf nicht Vollbildform
umschaltet, geht es.
Ich habe eben zur Vermeidung dieses "Grafikfehlers" folgende Krücke:

ich nutze den Zeitgeber, setze als Intervall 200 Milisekunden. Dann "bei
Zeitgeber" eine Ereignisprozedur:

me!DeinFeld.SetFocus
me!DeinFeld.Dropdown
me.timerInterval = 0

Es wird also erst 200 milisekunden gewartet, das Form ist also im "vollen
Fenster" geöffnet, dann wird Liste aufgeklappt. Danach setze ich das Inter-
vall wieder auf 0 (also deaktiviere es), damit nicht alle 200 msec die Liste
runterklappt.

Ist nicht wirklich schön, aber als Würgaround funzt es...

HTH,
Carsten
Mark Doerbandt
2004-11-06 20:21:42 UTC
Permalink
Hallo, Carsten,
Post by Carsten Wilke
ich nutze den Zeitgeber,
Hast Du statt dessen mal DoEvents probiert?

Gruss - Mark
--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beiträge senden.
Fritz Anton
2004-11-07 09:45:20 UTC
Permalink
Danke, Carsten - das funktioniert! Wie so oft in der Vergangenheit erzeugt
solch einer kleiner "Sieg" über das störrische System tiefe Zufriedenheit.
Ich habe aber noch mehr gelernt - da ich ja eine begrenzte und feste
Wertliste (A-Z) habe, eignet sich ein Listenfeld viel besser:
1. bedienbar mit Tasten UND Scrollrad + Klick
2. immun gegen falsche Eingabe (6 oder ; etc)
3. auf die Grösse eines Buchstaben reduzierbar (Ausklappen entfällt - ha!)
und damit gut plazierbar

Danke für Eure Hilfe!

Fritz
Post by Carsten Wilke
ich nutze den Zeitgeber, setze als Intervall 200 Milisekunden. Dann "bei
me!DeinFeld.SetFocus
me!DeinFeld.Dropdown
me.timerInterval = 0
Loading...