@LF nach Anzahl zeichen mit GUICtrlSetTip

  • hallo,

    ich möchte einen tooltip aus einer datenbank auslesen und anzeigen.
    das problem ist lediglich, wenn der tooltip länger ist, sollte nach einer bestimmten anzahl zeichen ein @LF eingefügt werden. wenn also z.b. der tooltip 150 zeichen lang ist soll jeweils nach 50 zeichen eine neue zeile beginnen.

    kann mir da jemand bei der umsetzung helfen?

  • Habs hier mal gemacht ;)

    Spoiler anzeigen
    [autoit]


    $String = "123456789123456789123456789"
    MsgBox( 0, $String, _Get( $String, 4 ) )

    [/autoit] [autoit][/autoit] [autoit]

    Func _Get( $aString, $aSep)
    ; $aString = Der String der zu teilen ist
    ; $aSep = Die Anzahl der Zeichen nach denen getrennt werden soll
    Local $sString = ""
    If StringLen( $aString ) < $aSep Then
    Return $aString
    EndIf
    Do
    $sString &= StringLeft( $aString, $aSep ) & @LF
    $aString = StringTrimLeft( $aString, $aSep )
    Until StringLen( $aString ) < $aSep
    $sString &= $aString
    Return $sString
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von Daniel W. (4. Oktober 2006 um 16:46)

  • hallo daniel w,

    vielen dank für deine schnelle antwort. funktioniert auch so. lediglich ein schöheitsfehler ist noch drin. die worte werden mittendrin abgeschnitten.

    gibt es eine möglichkeit erst zu trennen, wenn ein leerzeichen erkannt wird?

  • dann müsste ich als delimiter ein leerzeichen nehmen. ist aber etwas schwierig, da ich ja nicht weis wieviele leezeichen in jeder zeile sind.

    im moment wird nach z.b. 50 zeichen getrennt, egal ob es mitten im wort ist oder nicht. somit bekomme ich im tooltip abgeschnittene wörter.

    gibt es noch eine andere lösung?

    • Offizieller Beitrag

    Hallo!

    Probier mal das!

    Spoiler anzeigen
    [autoit]

    ;~ Beispieltext von http://de.wikipedia.org/wiki/AutoIt
    $String = "Die Skripte ermöglichen z. B. das Ausführen von Programmen, das Simulieren von Tastaturanschlägen bzw. Mausklicks. Es können einfache Textfunktionen der Zwischenablage oder auch Windowsfunktionen (wie z. B. minimieren, verstecken, Warten auf/Aktivieren von Fenstern) aufgerufen werden. Seit Version 3 können zudem graphische Benutzeroberflächen mit zahlreichen Controls entworfen werden. Soll es um Registrymanipulationen oder komplexere Schleifen gehen, ist AutoIt 3 inzwischen mit seiner verbesserten Syntax deutlich einfacher zu handhaben als frühere Versionen. Es ist möglich, AutoIt mit anderen Scriptsprachen wie WSH oder Kixtart zu kombinieren (AutoItX)."

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0,"",$String) ; Original-Text
    MsgBox(0,"",_StringInsertLF($String,50)) ; Softbreak nach 50 Zeichen
    MsgBox(0,"",_StringInsertLF($String,50,1)) ; Hardbreak nach 50 Zeichen

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Description: Fügt @LF in Strings ein
    ; Parameter(s): $strString = String der bearbeitet werden soll
    ; $nCount = Anzahl der Zeichen bevor @LF eingefügt werden soll
    ; (optional) $cBreaking = 0 (default) -> Softbreak (an Wortgrenze)
    ; 1 -> Hardbreak
    ; ist kein Leerzeichen im String enthalten wird hart
    ; umgebrochen
    ; Requirement(s): keine
    ; Return Value(s): String mit @LF
    ; Author(s): bernd670
    ;
    ;===============================================================================
    Func _StringInsertLF($strString,$nCount,$cBreaking = 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $strRetString = "", $nPos

    Do
    If Stringlen($strString) > $nCount Then
    $nPos = StringInStr(StringLeft($strString,$nCount + 1)," ",0,-1)
    If ($nPos and $cBreaking = 0) Then
    $strRetString &= StringLeft($strString,$nPos - 1) & @LF
    $strString = StringMid($strString,$nPos + 1)
    Else
    $strRetString &= StringLeft($strString,$nCount) & @LF
    $strString = StringMid($strString,$nCount + 1)
    EndIf
    EndIf
    Until StringLen($strString) < $nCount

    $strRetString &= $strString

    Return $strRetString
    EndFunc

    [/autoit]

    Edit GtaSpider: hab Mal Spoiler geschlossen..

    Danke @Spider :kiss:

    • Offizieller Beitrag

    Freut mich, war ja nur ne Kleinigkeit! :schild4:

    @Mega, ja wenn ich do durch while ersetze, obwohl geht auch so (ohne if), aber schadet ja nicht!