vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: textbox-breite (großes Chaos) 
Autor: Mr. Fox
Datum: 28.09.03 08:46

Hi!

Dein Lösungsansatz ist meines Erachtens vollkommen falsch, da du scheinbar davon
ausgehst, dass der Benutzer immer nur ein Zeichen nach dem anderen eingibt
--> Copy & Paste und schon hat deine Funktion ein riesen Problem.
Deshalb hier mein Vorschlag:
Immer alle Zeilen überprüfen (geht nur bei Textboxen mit relativ wenig Zeilen)
Code:
Option Explicit
 
Dim txtbreite As Long
 
Private Sub Form_Load()
    txtbreite = 3000
End Sub
 
Private Sub Text1_Change()
 
    Dim zeilen() As String
    Dim tmpN As Long
    Dim tmpX As Long
    Dim CharNum As Long
    Dim curTextWidth As Long
    Dim Counter As Long
    Dim SelStart As Long
 
    SelStart = Text1.SelStart
    zeilen = Split(Text1, vbCrLf)
    For tmpN = 0 To UBound(zeilen)
        If tmpN >= 3 Then Exit For ' max 3 - zeilen
        curTextWidth = Me.TextWidth(zeilen(tmpN))
        If curTextWidth > txtbreite Then
            Counter = 1
            Do
                If Me.TextWidth(Left(zeilen(tmpN), Len(zeilen(tmpN)) - _
                  Counter)) <= txtbreite Then
                    CharNum = 0
                    If tmpN <> 0 Then
                        For tmpX = 0 To tmpN - 1
                           CharNum = CharNum + Len(zeilen(tmpX)) + 2
                        Next tmpX
                    End If
                    CharNum = CharNum + Len(zeilen(tmpN)) - Counter
                    Text1.Text = Left(Text1.Text, CharNum) & vbCrLf & Right( _
                      Text1.Text, Len(Text1.Text) - CharNum)
                    If SelStart > CharNum Then
                        SelStart = SelStart + 2
                    End If
                    Exit Do
                End If
                Counter = Counter + 1
            Loop
        End If
    Next tmpN
    Text1.SelStart = SelStart
 
End Sub
Der Code lässt sich mit Sicherheit noch optimieren (da es nur ein 10 Minuten Produkt ist, habe ich die Sache auch
nicht sehr gut getestet --> sollte aber funktionieren).

ciao
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
textbox-breite (großes Chaos)706seb-software27.09.03 14:17
Re: textbox-breite (großes Chaos)369Mr. Fox28.09.03 08:46

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 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