Textformatierung in einer ComboBox

  • Moinsen,

    ich habe folgende Frage, die wahrscheinlich ganz einfach zu beantworten geht.

    Ich habe eine ComboBox, in die berechnete Werte (Strings) eingefügt bzw. angehangen werden. Je nach Wert soll eine ebenfalls berechnete Beschreibung dahinter stehen. Meine Frage ist, kann ich diese beiden Strings per GUICtrlSetData anhängen und den "Text" per TAB formatieren. Der Test
    GUICtrlSetData($Combo, $Client & @TAB & $Beschreibung)
    probiert. Das bewirkt aber nur, dass ein Pipe zwischen den beiden Variablen steht. :S

    Hat jemand nen kleinen Tip für mich? Danke.

    Granny

  • Hey,

    was meinst du mit per TAB formatieren?
    willst du einen Tab einfügen?

    wieso er so nen komisches Zeichen reinbringt weis ich jetzt nicht aber
    mach doch einfach

    [autoit]


    GUICtrlSetData($Combo, $Client & " " & $Beschreibung)

    [/autoit]

    Gruß

    Prajoss

    "Never touch a running System!"

  • probier das mal mit:

    Spoiler anzeigen
    [autoit]

    GUICtrlSetData($Combo, StringFormat("%-6s %-6s",$Client ,$Beschreibung))

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Das ist leider auch nicht so das wahre. Mit Leerzeichen kann man nicht erreichen, dass die Werte der Variable $Beschreibung direkt untereinander stehen, egal wie lang der String der Variable $Client ist.
    Gibt es nicht ne Möglichkeit den Eintrag der Combobox in zwei Felder aufzuteilen? Zum Beispiel durch ein Array?

    Trotzdem Danke ;)

  • Bei einer proportional Schrift ist das Leerzeichen zur Formatierung etwas arg ungeeignet.
    ABER am einfachsten wäre dann eben die ComboxBox auf eine Schrift mit fester Weite zu setzen (z.B. Lucidia Console, oder so ähnlich) und dann eben die Anzahl der Leerzeichen für den Abstand berechnen, Aufgrund der Länge der ersten "Reihe".

  • Edit: Stilgar war wohl schneller aber hier die beschreibung für die Berechnung ;)

    Doch kann man ;)

    Nimm für $Client lieber ein Array.

    Du kannst ja StringLen($Client[$x]) ausführen und erhälst die Länge des Strings.

    Diese schreibst du in eine Variable und vergleichst das nächste StringLen($Client). --> $laenge
    Sollte das neue StringLen größer sein, wird dieser Wert gespeichert.

    Am Ende hast du die größte Länge der Strings.

    Jetzt nimmst du $Client[0] vergleichst mit $laenge und hast den unterschied ($laenge - $Client[0]) , z.b.

    ist $laenge = 20 und $Client[0] = 10 Dann ist $Unterschied = 10.

    Jetzt sagst du

    For $i = 1 To $Unterschied + X // X ist der zusätzliche Abstand! (dein Tab sozusagen)

    $Luecke = $Luecke & " " // 1 leerzeichenhinzufügen

    Next

    Und jetzt dein

    GUICtrlSetData($Combo, $Client & $Luecke & $Beschreibung)


    Lies es am besten 3 mal durch ;)

    "Never touch a running System!"

  • Hallo GrandPa,
    ich weiß nicht was Du hast?

    Schau Dir mal die Funktion StringFormat etwas genauer an.
    Mehr als Ratschläge geben kann ich ohne Code auch nicht ;)

    und eine gewisse Begrenzung der Textlänge kannst Du ja bestimmt festlegen...

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    #region - GUI Create
    GUICreate('')
    GUISetState()
    $Client = "TestClient"
    $Beschreibung = "Dies ist eine Beschreibung"
    $combo = GUICtrlCreateCombo("",10,10,300,200)
    #endregion
    GUICtrlSetData($Combo, StringFormat("%-50s %-20s",$Client ,$Beschreibung))
    #region - GUI SelectLoop
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    #endregion

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Mein Edit war zu langsam ... :D

    Hier nochmal damits nicht untergeht:
    ODER du nutzt einfach _GUICtrlListBox_Create mit dem Style $LBS_MULTICOLUMN, dafür ist die GuiListBox.au3 nötig.

    Man muß ja nicht alles neu erfinden ...