Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Textfeld nachträglich mit Label assoziieren?

316 views
Skip to first unread message

Christian Nennewitz

unread,
Mar 1, 2010, 6:06:54 AM3/1/10
to
Hallo Newsgroup.

In einem Formular kann man Bezeichnungsfelder so erstellen, daß diese
zum Beispiel zu einem Textfeld gehören. Wenn man in der
Entwurfsansicht dann auf das Bezeichnungsfeld klickt, wird das
Textfeld autom. mitselektiert und anders herum. Das kann man z.B.
erreichen, indem man ein Bezeichnungsfeld in die Zwischenablage
ausschneidet und dann wieder einfügt während ein Textfeld markiert
ist.

Wie man das per Hand macht ist mir vollkommen klar. Aber wie macht man
es per Code?

Ich habe bereits herausgefunden, daß das Label bei erfolgter Zuordnung
in der Controls-Auflistung des zugehörigen Textfeldes drin steht. Mir
gelingt dies aber nicht nachträglich per Code. Die Controls Auflistung
scheint keine Add- oder AddItem-Methode oder Remove oder etwas
ähnliches zu kennen.

Hintergrund der ganzen Geschichte ist, daß ich bei einer großen Anzahl
Formularen, alle nicht-assoziierten Labels finden und nachträglich an
ein Textfeld binden möchte. Das will ich machen, weil die nicht-
assoziierten Bezeichnunsgsfelder nicht selten ein erhebliches Flackern
in der Formularlandschaft auslösen wenn man mit dem Mauszeiger darüber
fährt. Zumindest bei Access 2003.

Ich hoffe, ich konnte mich einigermaßen verständlich ausdrücken.
Kann mir da jemand weiterhelfen? Ich bin, wie immer, über jeden
Hinweis dankbar.

Viele Grüße,
Christian Nennewitz

Peter Doering

unread,
Mar 1, 2010, 11:17:22 AM3/1/10
to
Hallo,

Christian Nennewitz wrote:

> In einem Formular kann man Bezeichnungsfelder so erstellen, da� diese
> zum Beispiel zu einem Textfeld geh�ren. Wenn man in der


> Entwurfsansicht dann auf das Bezeichnungsfeld klickt, wird das
> Textfeld autom. mitselektiert und anders herum. Das kann man z.B.
> erreichen, indem man ein Bezeichnungsfeld in die Zwischenablage

> ausschneidet und dann wieder einf�gt w�hrend ein Textfeld markiert
> ist.

www.donkarl.com?FAQ4.26

> Wie man das per Hand macht ist mir vollkommen klar. Aber wie macht man
> es per Code?

Das assoziierte Bezeichnungsfeld findest du unter
Me!MeinTextFeld.Controls(0), das Textfeld unter
Me!MeinBezeichnungsfeld.Parent.

> Ich habe bereits herausgefunden, da� das Label bei erfolgter Zuordnung
> in der Controls-Auflistung des zugeh�rigen Textfeldes drin steht.

Ah, ok.

> Mir gelingt dies aber nicht nachtr�glich per Code. Die Controls


> Auflistung scheint keine Add- oder AddItem-Methode oder Remove oder

> etwas �hnliches zu kennen.
>
> Hintergrund der ganzen Geschichte ist, da� ich bei einer gro�en Anzahl
> Formularen, alle nicht-assoziierten Labels finden und nachtr�glich an
> ein Textfeld binden m�chte. Das will ich machen, weil die nicht-


> assoziierten Bezeichnunsgsfelder nicht selten ein erhebliches Flackern

> in der Formularlandschaft ausl�sen wenn man mit dem Mauszeiger dar�ber
> f�hrt. Zumindest bei Access 2003.

Das ist richtig. Allerdings waere es doch sinnvoller, die empfohlene
Methode anzuwenden, und die nicht assoziierten Bezeichnungsfelder in
Textfelder umzuwandeln, oder? Dabei kannst du die Caption nach Value
schreiben, Enabled und Locked richtig setzen, evtl. aus der Tab-Reihenfolge
entfernen usw.

Gruss - Peter

--
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Christian Nennewitz

unread,
Mar 1, 2010, 11:47:27 AM3/1/10
to
Hallo Peter.

Erstmal vielen Dank f�r Deine Antwort.

> Das ist richtig. Allerdings waere es doch sinnvoller, die empfohlene
> Methode anzuwenden, und die nicht assoziierten Bezeichnungsfelder in
> Textfelder umzuwandeln, oder? Dabei kannst du die Caption nach Value
> schreiben, Enabled und Locked richtig setzen, evtl. aus der
> Tab-Reihenfolge
> entfernen usw.

Was meinst Du mit empfohlener Methode? So wie das in Donkarl 4.26
beschrieben ist, geht es ja nur manuell. Ich habe aber sehr viele Formulare
und w�rde das gerne per VBA autom. erledigen lassen.

Mir ist auch nicht ganz klar, wie ich per Code ein Label in ein Textfeld
umwandeln kann. Ich habe dar�ber schon nachgedacht.
W�rde man das wohl mit

>>DoCmd.RunCommand acCmdChangeToTextBox<<

machen? Oder wie geht das?

Aber selbst wenn das ginge, scheint es mir noch nicht der richtige
Weg zu sein. Es gibt n�mlich an vielen Stellen Code, der per Caption-
Eigenschaft Text in die Labels schreibt. Und ein Textfeld hat ja
leider keine .Caption Eigenschaft, so da� es dann Probleme mit dem
Code geben d�rfte. Au�erdem ist bei einigen Bezeichnungsfeldern Code
in den Ereignissen hinterlegt. Diese Ereignisse m��ten dann ja auch
wieder bei den Textfeldern vorhanden sein.

Gibt es denn wirklich keine M�glichkeit, das Assoziieren nachtr�glich
per Code vorzunehmen? Es mu� doch irgendwie m�glich sein, die
Controls-Auflistung der Textfelder zu manipulieren. Oder ist diese
Auflistung nur Read-Only?

Na, ja. Wahrscheinlich werde ich nicht darum herum kommen, alle
Formulare per Hand nachzubearbeiten. Falls doch noch jemanden etwas
einf�llt, wie man es programmieren kann, w�re ich aber sehr dankbar.
:-)

Viele Gr��e,
Christian Nennewitz


Peter Doering

unread,
Mar 1, 2010, 6:31:07 PM3/1/10
to
Hallo Christian,

Christian Nennewitz wrote:
>
>> Das ist richtig. Allerdings waere es doch sinnvoller, die empfohlene
>> Methode anzuwenden, und die nicht assoziierten Bezeichnungsfelder in
>> Textfelder umzuwandeln, oder? Dabei kannst du die Caption nach Value
>> schreiben, Enabled und Locked richtig setzen, evtl. aus der
>> Tab-Reihenfolge
>> entfernen usw.
>
> Was meinst Du mit empfohlener Methode? So wie das in Donkarl 4.26
> beschrieben ist, geht es ja nur manuell.

Ich meinte, die empfohlene Loesung gegen flackernde ungebundene Labels.

> Ich habe aber sehr viele Formulare
> und w�rde das gerne per VBA autom. erledigen lassen.
> Mir ist auch nicht ganz klar, wie ich per Code ein Label in ein Textfeld
> umwandeln kann. Ich habe dar�ber schon nachgedacht.
> W�rde man das wohl mit
>
>>>DoCmd.RunCommand acCmdChangeToTextBox<<
>
> machen? Oder wie geht das?

Genau, nachdem das Formular per acDesign geoeffnet und das Label
ausgewaehlt worden ist.

> Aber selbst wenn das ginge, scheint es mir noch nicht der richtige
> Weg zu sein. Es gibt n�mlich an vielen Stellen Code, der per Caption-
> Eigenschaft Text in die Labels schreibt.

Der wird natuerlich nicht mehr funktionieren. Da muss dann .Value rein.

> Au�erdem ist bei einigen Bezeichnungsfeldern Code
> in den Ereignissen hinterlegt. Diese Ereignisse m��ten dann ja auch
> wieder bei den Textfeldern vorhanden sein.

Der aendert sich nur, wenn wenn sich der Steuerelementname aendert. Aber an
der Stelle haettest du auch Probleme, wenn du versuchst, die
Parent-Eigenschaft zu aendern. Das Bezeichnungsfeld verliert alle eigenen
Ereignisse und loest die des Parent-Elements aus.

> Gibt es denn wirklich keine M�glichkeit, das Assoziieren nachtr�glich
> per Code vorzunehmen? Es mu� doch irgendwie m�glich sein, die
> Controls-Auflistung der Textfelder zu manipulieren. Oder ist diese
> Auflistung nur Read-Only?

Soweit ich weiss, geht das nur per CreateControl. Da kannst du die
Parent-Eigenschaft setzen. Musst das Label halt vorher per DeleteControl
rauswerfen.

Christian Nennewitz

unread,
Mar 2, 2010, 4:33:49 AM3/2/10
to
Hallo Peter.

Vielen Dank f�r Deine erneute Antwort.

>>>>DoCmd.RunCommand acCmdChangeToTextBox<<
>>
>> machen? Oder wie geht das?
>
> Genau, nachdem das Formular per acDesign geoeffnet und das Label
> ausgewaehlt worden ist.

Entschuldige, wenn ich so bl�d frage. Ich glaube ich stehe gerade ein
wenig auf dem Schlauch. Aber wie w�hlt man ein Label in der
Entwurfsansicht aus? Eine Setfocus-Methode gibt es bei Labels
ja, so weit ich wei�, nicht. Jedenfalls wenn ich es mit:

>>form_f_zuordnung.controls("LA_Vorname").setfocus<<

versuche, dann sagt Access etwas von "Objekt unterst�tzt diese
Eigenschaft oder Methode nicht".

Kann man Steuerelemente in der Entwurfsansicht �berhaupt aus-
w�hlen? Selbst wenn ich es mit einem Textfeld versuche meint
Access ganz streng: "Microsoft Access gestattet Ihnen nicht, diese
Methode in der aktuellen Ansicht einzusetzen."

Hm? Kannst Du mich da mal aufkl�ren?

> ... Soweit ich weiss, geht das nur per CreateControl. Da kannst du die


> Parent-Eigenschaft setzen. Musst das Label halt vorher per DeleteControl
> rauswerfen.

Ja. Das habe ich mir schon fast gedacht, da� man diese Assoziierung nicht
nachtr�glich per Code durchf�hren kann. Immerhin wei� ich jetzt, das es,
so wie ich es urspr�nglich geplant hatte, nicht geht. Zu wissen, da� etwas
nicht geht, kann ja auch eine wertvolle Erkenntnis sein

Viele Gr��e,
Christian Nennewitz.


Peter Doering

unread,
Mar 2, 2010, 8:33:54 AM3/2/10
to
Hallo Christian,

Christian Nennewitz wrote:
>
>>>>>DoCmd.RunCommand acCmdChangeToTextBox<<
>>>
>>> machen? Oder wie geht das?
>>
>> Genau, nachdem das Formular per acDesign geoeffnet und das Label
>> ausgewaehlt worden ist.
>
> Entschuldige, wenn ich so bl�d frage. Ich glaube ich stehe gerade ein
> wenig auf dem Schlauch. Aber wie w�hlt man ein Label in der
> Entwurfsansicht aus? Eine Setfocus-Methode gibt es bei Labels
> ja, so weit ich wei�, nicht.

Erwischt ;-)

Geht im Entwurfsmodus natuerlich nicht. Ich hab mal probiert, beim
Durchlaufen der Collection was zu machen, aber es ist mir auch nicht
gelungen, das Label auszuwaehlen, was fuer die Makrofunktion notwendig
waere. Und eine Loesung per Sendkeys moechte ich mir verkneifen.

Bleibt also nur, das Label zu loeschen und neu einzufuegen. Ein
Codebeispiel findest du in der OH unter CreateControl. Nur, woher weisst
du, welches Control du als Parent einsetzen musst?

Christian Nennewitz

unread,
Mar 2, 2010, 9:37:11 AM3/2/10
to
Hallo Peter.

> Bleibt also nur, das Label zu loeschen und neu einzufuegen. Ein
> Codebeispiel findest du in der OH unter CreateControl. Nur, woher weisst
> du, welches Control du als Parent einsetzen musst?

Dann muesste man sich also alle relevanten Eigenschaften des Labels merken,
es mit DeleteControl l�schen, und dann mit den gleichen Eigenschaften und
Er-
eignissen und an den gleichen Koordinaten neu erstellen. Mit Angabe von
Parent
f�r das assoziierte Textfeld.

Hmm. Klingt gar nicht so schlecht. Ich mu� da mal drueber nachdenken.

Im Moment habe ich mich dazu durchgerungen, alle Formulare von Hand abzu-
arbeiten. Bin gerade mit Formular 10 (von 102) fertig geworden. Seufz! Ich
wei�
nicht was schneller geht: Das oben angerissene VBA-Programm zu schreiben
oder
die Formulare von Hand zu bearbeiten.

Peter Doering

unread,
Mar 2, 2010, 10:07:49 AM3/2/10
to
Hallo Christian,

Wenn man bedenkt, dass das Flackern nur bei ungebundenen Labels auf
Tab-Controls auftritt, kannst du alle Formulare ausschliessen, auf denen es
keine Tab-Controls gibt. Insofern => manuell ist schneller.

Christian Nennewitz

unread,
Mar 2, 2010, 11:32:00 AM3/2/10
to

Hallo Peter.

> Wenn man bedenkt, dass das Flackern nur bei ungebundenen Labels auf
> Tab-Controls auftritt, kannst du alle Formulare ausschliessen, auf denen
> es
> keine Tab-Controls gibt.

Ja das ist ein sehr n�tzlicher Hinweis. Wenn ich ber�cksichtige,
dass das Flacker-Problem nur auf Registerkartensteuerelementen
auftritt, kann ich mir sicher eine Menge Arbeit sparen. Das war mir
gar nicht richtig bewu�t. Vielen herzlichen Dank f�r diesen Hinweis.

> Insofern => manuell ist schneller.

Ja, ich glaube Du hast Recht. Dann mache ich mich mal an die
Arbeit. Zumal ich sowieso nicht w��te, mit welcher Methode ich
das Control ermitteln k�nnte, das jeweils als Parent eingesetzt
werden m�sste.

Nochmals vielen Dank und viele Gr�sse,
Christian Nennewitz


Karl Donaubauer

unread,
Mar 2, 2010, 11:50:05 AM3/2/10
to
Christian Nennewitz wrote:
> ...

> Das will ich machen, weil die nicht-
> assoziierten Bezeichnunsgsfelder nicht selten ein erhebliches Flackern
> in der Formularlandschaft ausl�sen wenn man mit dem Mauszeiger

> dar�ber f�hrt. Zumindest bei Access 2003.
> ...

Nur zur Sicherheit nachgefragt:

Der Bug mit der Flackerei durch ungebundene Bezeichnungsfelder
auf Registern wird lt. MS vom SP3 f�r O03 behoben.

Hast du das drauf?
Falls nicht, s. die Links zum SP3 + ebenfalls zu installierendem Hotfix
f�r das SP3 in www.donkarl.com?FAQ9.1.

--
Servus
Karl
****************
Access-FAQ: http://www.donkarl.com /// http://www.donkarl.com?NEK
.NET-Entwickler-Konferenz f�r Accessler 20./21.3.2010


Christian Nennewitz

unread,
Mar 2, 2010, 12:25:33 PM3/2/10
to
Hallo Karl.

> Der Bug mit der Flackerei durch ungebundene Bezeichnungsfelder
> auf Registern wird lt. MS vom SP3 f�r O03 behoben.

Vielen Dank f�r diesen Hinweis. Das w�re ja �u�erst bezaubernd
wenn alle Probleme mit dem von Dir angesprochenen SP3 behoben
w�ren. Ich bin mir im Moment gar nicht sicher, welcher Stand von
Acc03 auf dem Testrechner drauf ist.

Wenn ich morgen fr�h wieder im B�ro bin, werde ich das sofort
testen und dann Bericht erstatten.

Peter Doering

unread,
Mar 2, 2010, 3:56:55 PM3/2/10
to
Hallo Christian,

Christian Nennewitz wrote:
>
>> Der Bug mit der Flackerei durch ungebundene Bezeichnungsfelder
>> auf Registern wird lt. MS vom SP3 f�r O03 behoben.
>
> Vielen Dank f�r diesen Hinweis. Das w�re ja �u�erst bezaubernd
> wenn alle Probleme mit dem von Dir angesprochenen SP3 behoben
> w�ren. Ich bin mir im Moment gar nicht sicher, welcher Stand von
> Acc03 auf dem Testrechner drauf ist.

Vorsicht: SP3 kam mit allerlei unerwuenschten Nebenwirkungen daher, die
durch den von Karl angesprochenen Hotfix behoben sein sollen. Da der Hotfix
nicht durch WU verteilt wird, musst du ihn selbst installieren.

Christian Nennewitz

unread,
Mar 3, 2010, 2:53:11 AM3/3/10
to
Guten Morgen Karl.

Vielen Dank f�r Deinen Tip. Das mit dem Service
Pack 3 war genau die richtige Loesung fuer das
Problem. Es ist einfach super spitzenmaessig, wie
Du immer die richtigen Loesungen f�r fast alle
Access Probleme parat hast.
Vielen, vielen Dank. Das spart mir wirklich eine
Menge Arbeit.

Vielen Dank auch an Peter fuer die Unterstuetzung
und den Hinweis mit dem Hotfix.

Uebrigens: Das SP3 Update und der Hotfix
funktionieren beide auch mit der Runtime Version.
Meine groesste Befuerchtung, dass das Update zwar
mit der Voll- aber nicht mit der Runtime-Version
funktioniert, hat sich damit nicht bestaetigt. Das ist
auch sehr schoen.

Nochmals herzlichen Dank f�r die grossartige,
wunderbare und sensationell beeindruckende Hilfe.
:-)

Viele Gruesse aus Langenfeld,
Christian Nennewitz


0 new messages