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

A03: Markieren mit SelStart u. SelLength funktioniert nicht

60 views
Skip to first unread message

Rüdiger Gram

unread,
Dec 26, 2007, 1:04:32 PM12/26/07
to
Hallo NG,

beim Klicken soll für ein ungebundenes Textfeld dieser Code ausgeführt
werden:

Me!MeinTextfeld.SelStart = 0
Me!MeinTextfeld.SelLength = Len("" & Me!MeinTextfeld)

Das soll den Feldinhalt markieren - sozusagen "nach den Regeln der Kunst"
(FAQ 4.24)

Aber anscheinend versteht mein Feld nichts von Kunst. Denn wenn ich darauf
klicke bleibt der Inhalt eisern unmarkiert. Was könnte ihm denn da noch
fehlen? Oder funktioniert das nicht bei ungebundenen Feldern?

Ich meine, wenn's gar nicht anders geht, dann nehme ich halt wieder SendKeys
(Ihr wisst schon - pfui, pfui).

Gruß - Rüdiger

Andreas Vogt

unread,
Dec 26, 2007, 1:49:40 PM12/26/07
to
Hallo,
wenn schon dann so:
Me!MeinTextfeld.SelStart = 0
Me!MeinTextfeld.SelLength = Len(NZ(Me!MeinTextfeld,0))

Gruß Andreas

Gunter Avenius

unread,
Dec 26, 2007, 1:52:57 PM12/26/07
to
Hallo Andreas,

Andreas Vogt schrieb folgendes:


> wenn schon dann so:
> Me!MeinTextfeld.SelStart = 0
> Me!MeinTextfeld.SelLength = Len(NZ(Me!MeinTextfeld,0))

Len("" & ... passt schon.

Gruß
Gunter
--
__________________________________________________________
Access FAQ: http://www.donkarl.com
home: http://www.avenius.com - http://www.AccessRibbon.de

Gunter Avenius

unread,
Dec 26, 2007, 2:01:23 PM12/26/07
to
Hallo Rüdiger,

Rüdiger Gram schrieb folgendes:

sollte auch bei ungebundenen Feldern funktionieren.

Probiere einmal:
Me!MeinTextfeld.SelStart = 0
Me!MeinTextfeld.SelLength = Len("" & Me!MeinTextfeld.Text)

Andreas Vogt

unread,
Dec 26, 2007, 2:57:14 PM12/26/07
to
Hallo,
JA das "" hab ich weggelassen weil unwichtig.
Wichtig ist aber der Einsatz von NZ. Wenn du das Formular öffnest und
den Focus verschiebst, hat das Feld den Wert Null, und die Länge von
Null ist??

Gruß Andreas

BTW: als Ereignis würde sich z.B. bem Focuserhalt anbieten.

Gunter Avenius

unread,
Dec 26, 2007, 3:02:21 PM12/26/07
to
Hallo Andreas Vogt,

Andreas Vogt schrieb folgendes:


> JA das "" hab ich weggelassen weil unwichtig.

Naa, nicht unwichtig, wenn nicht NZ verwendet wird.

> Wichtig ist aber der Einsatz von NZ. Wenn du das Formular öffnest und
> den Focus verschiebst, hat das Feld den Wert Null, und die Länge von
> Null ist??

Lese mal www.donkarl.com?FAQ4.24 "" oder NZ, funktionieren tut beides.

Rüdiger Gram

unread,
Dec 26, 2007, 5:36:12 PM12/26/07
to

Gunter Avenius schrieb:

> Lese mal www.donkarl.com?FAQ4.24 "" oder NZ, funktionieren tut beides.

Funktionieren tut in dem Fall aber leider keines. Was ich bisher nicht
erwähnt habe, weil es mir nicht wichtig vorkam: Das Feld ist ein Kombifeld.
Kann es sein, daß sich ein Kombifeld bezügl. des Markierens anders verhält
als ein Standard-Textfeld?

Gruß - Rüdiger

Peter Doering

unread,
Dec 26, 2007, 8:15:21 PM12/26/07
to
Hallo,

Doch, funktioniert genauso. Vielleicht konzentrieren wir uns mal auf das
Ereignis.

Du schreibst im OP "beim Klicken". Ist das woertlich zu verstehen?

Normalerweise gehoert der Code nach MeinTextfeld_Enter, also Beim Hingehen.
Die Selektion des Feldinhalts wird sicher auch bei dir korrekt ausgefuehrt
(navigiere mal per Tab, ohne Maus), aber durch den Klick /in/ das
Steuerelement eine neue Position/Markierung festgelegt wird.

Das liesse sich umgehen, wenn du als Ereignis MouseUp verwendest, mit allen
Nebenwirkungen, z.B. dass du per Maus Teile des Inhalts nicht mehr
auswaehlen kannst.

Gruss - Peter

--
Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Rüdiger Gram

unread,
Dec 27, 2007, 5:22:49 AM12/27/07
to

Peter Doering schrieb:

>
> Vielleicht konzentrieren wir uns mal auf das Ereignis.
> Du schreibst im OP "beim Klicken". Ist das wörtlich zu verstehen?

Ja.

> Normalerweise gehört der Code nach MeinTextfeld_Enter, also Beim Hingehen.
> Die Selektion des Feldinhalts wird sicher auch bei dir korrekt ausgeführt


> (navigiere mal per Tab, ohne Maus), aber durch den Klick /in/ das
> Steuerelement eine neue Position/Markierung festgelegt wird.

Der zweite Satz ist für mich ein bischen rätselhaft (vielleicht war es
gestern doch schon sehr spät)

Bei FAQ 4.24 gibt es den Link 'KB-Artikel mit Beispiel-DB'.
Dort (bei MS) steht w ö r t l i c h :

Um bei Mausklick auf ein Feld den ganzen Text zu markieren, schreiben Sie in
der Ereignisprozedur "Beim Klicken" des Steuerelementes:

Me!Feldname.SelStart = 0
Me!Feldname.SelLength = Len("" & Me!Feldname)

Der Feldinhalt markiert sich jedoch weder beim Klicken, noch bei
Fokuserhalt, noch beim Hingehen.

Gruß - Rüdiger

Karl Donaubauer

unread,
Dec 27, 2007, 6:33:19 AM12/27/07
to

Joo. Kombis verhalten sich diesbez. anders als Textfelder.
Das Cursor-Setzen funktioniert bei ihnen nur sehr eingeschränkt.
"Beim Klicken" geht gar nix, "Beim Hingehen" kommt's auf die
gebundene Spalte an usw.

Wenn dir das Markieren beim Klicken wichtig ist, kannst du dir
z.B. mit einer transparenten Schaltfläche über dem Textteil des
Kombis behelfen, die beim Klicken ein SetFocus aufs Kombi macht.
Bei Standard-Tastatureinstellungen wird dann alles markiert.

--
HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
Access-Entwickler-Konferenz: www.donkarl.com/?AEK
SQL Server-Entwickler-Konferenz: www.donkarl.com/?SEK

Peter Doering

unread,
Dec 27, 2007, 7:09:04 AM12/27/07
to
Hallo,

Rüdiger Gram wrote:
> Peter Doering schrieb:


>>
>> Normalerweise gehört der Code nach MeinTextfeld_Enter, also Beim Hingehen.
>> Die Selektion des Feldinhalts wird sicher auch bei dir korrekt ausgeführt
>> (navigiere mal per Tab, ohne Maus), aber durch den Klick /in/ das
>> Steuerelement eine neue Position/Markierung festgelegt wird.
>
> Der zweite Satz ist für mich ein bischen rätselhaft (vielleicht war es
> gestern doch schon sehr spät)

Was verstehst du nicht? Probier's einfach mal aus.

> Bei FAQ 4.24 gibt es den Link 'KB-Artikel mit Beispiel-DB'.
> Dort (bei MS) steht w ö r t l i c h :
>
> Um bei Mausklick auf ein Feld den ganzen Text zu markieren, schreiben Sie in
> der Ereignisprozedur "Beim Klicken" des Steuerelementes:

Da gibt es einen kleinen aber feinen Unterschied: ... Mausklick *auf* oder
*in* das Feld. Wenn du hineinklickst, wird die gerade gesetzte Markierung
uebersteuert.

> Me!Feldname.SelStart = 0
> Me!Feldname.SelLength = Len("" & Me!Feldname)
>
> Der Feldinhalt markiert sich jedoch weder beim Klicken, noch bei
> Fokuserhalt, noch beim Hingehen.

Beim Kombifeld gibt es noch etwas zu beachten: Sollte die angezeigte Spalte
nicht die gebundene sein, musst du die angezeigte ueber .Column(x) angeben,
also z.B. ...=Len("" & Me!Feldname.Column(1))

Karl Donaubauer

unread,
Dec 27, 2007, 8:02:08 AM12/27/07
to
Hallo, Peter!

Peter Doering wrote:
> Rüdiger Gram wrote:
>>> ...


>>> Normalerweise gehört der Code nach MeinTextfeld_Enter, also Beim
>>> Hingehen. Die Selektion des Feldinhalts wird sicher auch bei dir
>>> korrekt ausgeführt (navigiere mal per Tab, ohne Maus), aber durch den
>>> Klick /in/ das Steuerelement eine neue Position/Markierung festgelegt
>>> wird.
>>
>> Der zweite Satz ist für mich ein bischen rätselhaft (vielleicht war es
>> gestern doch schon sehr spät)
>
> Was verstehst du nicht? Probier's einfach mal aus.
>
>> Bei FAQ 4.24 gibt es den Link 'KB-Artikel mit Beispiel-DB'.
>> Dort (bei MS) steht w ö r t l i c h :
>>
>> Um bei Mausklick auf ein Feld den ganzen Text zu markieren, schreiben
>> Sie in der Ereignisprozedur "Beim Klicken" des Steuerelementes:

Der Autor bezog sich nur auf Textfelder, hätte das aber nicht
nur in die Problembeschreibung schreiben sollen, sondern auch
nochmal in den "Beim Klicken"-Teil des Artikels. Ich habe ihn
schon beschimpft deswegen.

> Da gibt es einen kleinen aber feinen Unterschied: ... Mausklick *auf* oder
> *in* das Feld. Wenn du hineinklickst, wird die gerade gesetzte Markierung
> uebersteuert.

Naa, die Ursache liegt anderswo:
Ein Kombi unterscheidet sich bez. "Beim Klicken" von einem Textfeld.
Das Ereignis tritt nämlich bei einem Kombi nur beim Klicken auf die
Auswahlliste ein, nicht beim Klicken auf den Textteil des Kombis.
Nix Ereignis - nix Code-Ausführung - nix Markierung, egal ob in oder auf,
"" oder Nz. ;-)

>> Me!Feldname.SelStart = 0
>> Me!Feldname.SelLength = Len("" & Me!Feldname)
>>
>> Der Feldinhalt markiert sich jedoch weder beim Klicken, noch bei
>> Fokuserhalt, noch beim Hingehen.
>
> Beim Kombifeld gibt es noch etwas zu beachten: Sollte die angezeigte
> Spalte nicht die gebundene sein, musst du die angezeigte ueber .Column(x)
> angeben, also z.B. ...=Len("" & Me!Feldname.Column(1))

Joo.

--
cu

Rüdiger Gram

unread,
Dec 27, 2007, 8:17:35 AM12/27/07
to

Karl Donaubauer schrieb:

>> Da gibt es einen kleinen aber feinen Unterschied: ... Mausklick *auf*
>> oder
>> *in* das Feld. Wenn du hineinklickst, wird die gerade gesetzte Markierung
>> uebersteuert.
>
> Naa, die Ursache liegt anderswo:
> Ein Kombi unterscheidet sich bez. "Beim Klicken" von einem Textfeld.
> Das Ereignis tritt nämlich bei einem Kombi nur beim Klicken auf die
> Auswahlliste ein, nicht beim Klicken auf den Textteil des Kombis.
> Nix Ereignis - nix Code-Ausführung - nix Markierung, egal ob in oder auf,
> "" oder Nz. ;-)

Ich werde die Anregungen ausprobieren und melde mich dann wieder.
Bis dahin vielen Dank für die Hilfe.

Gruß - Rüdiger


Peter Doering

unread,
Dec 27, 2007, 4:45:20 PM12/27/07
to
Hallo Karl,

Karl Donaubauer wrote:
> Peter Doering wrote:
>> Rüdiger Gram wrote:
>>
>>> Bei FAQ 4.24 gibt es den Link 'KB-Artikel mit Beispiel-DB'.
>>> Dort (bei MS) steht w ö r t l i c h :
>>>
>>> Um bei Mausklick auf ein Feld den ganzen Text zu markieren, schreiben
>>> Sie in der Ereignisprozedur "Beim Klicken" des Steuerelementes:
>
> Der Autor bezog sich nur auf Textfelder, hätte das aber nicht
> nur in die Problembeschreibung schreiben sollen, sondern auch
> nochmal in den "Beim Klicken"-Teil des Artikels. Ich habe ihn
> schon beschimpft deswegen.

;-)

>> Da gibt es einen kleinen aber feinen Unterschied: ... Mausklick *auf* oder
>> *in* das Feld. Wenn du hineinklickst, wird die gerade gesetzte Markierung
>> uebersteuert.
>
> Naa, die Ursache liegt anderswo:
> Ein Kombi unterscheidet sich bez. "Beim Klicken" von einem Textfeld.

Jo, das hatte ich beim Testen falsch interpretiert: der Klick auf das
gebundene Label markiert den Feldinhalt wegen des Fokuserhalts, nicht wegen
der Codezeilen im Click-Event.

> Das Ereignis tritt nämlich bei einem Kombi nur beim Klicken auf die
> Auswahlliste ein, nicht beim Klicken auf den Textteil des Kombis.

Und spaetestens deshalb ist es im Click-Event des Kombifelds wertlos, weil
nach dem Klick der ausgewaehlte Wert sowieso komplett markiert ist. Wollte
man nur Teile markieren, haette man hier das naechste Problem.

0 new messages