vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück
Rubrik: Controls · ComboBox   |   VB-Versionen: VB4, VB5, VB620.07.05
TextBox/ComboBox-Inhalt rückwärts selektieren

Manchmal ist es besser, den Inhalt einer TextBox bzw. ComboBox rückwärts zu selektieren - und zwar dann, wenn der Inhalt größer (länger) ist als das Control selbst.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  11.071 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Bezugnehmend auf den Tipp  AutoComplete in der ComboBox wurde im Forum vor kurzem folgendes Problem geschildert: "Ich habe aus der Tipps & Tricks-Sektion den Tip "AutoComplete für eine Combobox" in mein Programm eingebaut und das funktioniert alles wunderbar. Nur wenn es in der Combobox Einträge gibt, die so lang sind, dass sie nicht komplett in die Textbox der Combobox passen, wird automatisch nach dem Setzen der SELLENGTH-Eigenschaft ans Ende des Textes gescrollt und die Eingabemarke ist ausserhalb des sichtbaren Bereichs.

In diesem Fall wäre es also sinnvoller, den Inhalt der ComboBox nicht von links beginnend bis ans Ende zu selektieren, sondern umgekehrt vom Ende rückwärts bis zur aktuellen Eingabeposition. Leider unterstützt die SelLength-Eigenschaft keine negativen Wertzuweisungen, so dass wir uns etwas anderes einfallen lassen müssen. Man könnte bspw. den Cursor ans Ende des Textes setzen und dann x-Zeichen rückwärts selektieren, indem man die Shift+Pfeil-nach-links Taste x-mal sendet.

Statt:

.SelStart = sPos
.SelLength = Len(.Text) - sPos + 1

setzen wir folgenden Code ein:

.SelStart = Len(.Text)
SendKeys "+{LEFT " & CStr((Len(.Text) - sPos)) & "}"

Leider ruckelt dann die Darstellung bei jedem Tastendruck ein wenig, was man aber wie folgt abstellen kann:

Option Explicit
 
' Benötigte API-Deklaration
Private Declare Function LockWindowUpdate Lib "user32" ( _
  ByVal hwndLock As Long) As Long
With Combo1
  ...
  LockWindowUpdate .hWnd
  .SelStart = Len(.Text)
  SendKeys "+{LEFT " & CStr((Len(.Text) - sPos)) & "}"
  LockWindowUpdate 0&
End With

Dieser Tipp wurde bereits 11.071 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2019 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel