Text im Button unterschiedlich formatieren

  • Hallo zusammen,

    die letzten 2 Stunden hab ich versucht hier was zum Thema zu finden. Leider ohne Erfolg. Meine eigen Versuche haben mich nur bedingt weitergebarcht.

    Ich möchte also in einem Button den mehrzeiligen Text verschieden formatieren.
    Ungefähr so:

    +-------------------------------------------------------------------------------------------------------------------------------+
    | Überschrift im Button

    | Da drunter soll dann ein Text kommen, der dem Anwender erkärt, was passiert,
    | wenn man auf diesen Button klickt. Dieser Text soll ca. zwei bis drei Zeilen
    | hoch sein.
    +------------------------------------------------------------------------------------------------------+

    Den Text linksbündig darzustellen klapp zwar. Sieht aber doof aus, weil er dann direkt an der linken Seite dranklebt.
    Könnte ich mit Leerzeichen ausgleichen.
    Was ich aber nicht hinbekomme ist die Formatierung der Überschrift.

    Hat einer 'ne Idee ???

    Vorab schon mal Danke.....

    Wenn Du's eilig hast - geh langsam...

    Einmal editiert, zuletzt von De Rand Ere (21. Februar 2014 um 00:31)

  • Vielleicht ist das da eine Lösung für dich:

    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $Form1 = GUICreate("Form1", 615, 438, 192, 124)
    $TTTCompStart = GUICtrlCreateButton("Überschrift", 30, 190, 180, 90, 14, -1)
    $text = @CRLF & "Beliebiger Button Text" & @CRLF & "noch mehr text"
    DllCall("user32.dll", "UINT", "SendMessage", "handle", GUICtrlGetHandle($TTTCompStart), "UINT", $BCM_SETNOTE, "ptr*", 0, "wstr",$text)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von misterspeed (14. Februar 2014 um 19:10)

  • Oder probier es doch einfach so:

    Spoiler anzeigen
    [autoit]

    $ButtonText = "Überschrift" & @CRLF & "Der Button mach folgendes" & @CRLF & "Und noch mehr"
    $Button = GUICtrlCreateButton ($ButtonText, 10, 10, 150, 150, BitOR ($BS_MULTILINE, $BS_CENTER))

    [/autoit]

    Notfalls ginge auch diese Lösung:

    Spoiler anzeigen
    [autoit]

    $ButtonText = "Der Button mach folgendes" & @CRLF & "Und noch mehr"
    $Button = GUICtrlCreateButton ($ButtonText, 10, 10, 150, 150)
    GUICtrlSetTip($Button, $ButtonText, "Überschrift")

    [/autoit]

    Ich habe es zwar nicht getestet aber es müsste so funktionieren.

  • Und jetzt auch in Farbe ! ;)

    [autoit]


    #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>
    ;~ +> $WS_CLIPSIBLINGS —> WindowsConstants.au3
    ;~ +> $BS_BOTTOM —> ButtonConstants.au3
    ;~ +> $BS_MULTILINE —> ButtonConstants.au3

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

    Global $msg, $tate = 1, $sMsg[2], $Color[2] = [0xFF0000, 0x00FF00]
    $sMsg[0] = '\nViel Spaß wünscht\nRitzelrocker04 !'
    $sMsg[1] = '\nDas ist ein\nmehrzeiliger Text\nin einem\nfarbigen Button'

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

    GUICreate('Colored_image_Button-Tut', 300, 150)
    GUICtrlCreateIcon("shell32.dll", -14, 40, 40, 32, 32, 0)
    Global $btnColor = GUICtrlCreateButton(StringFormat($sMsg[1]), 10, 10, 230, 100, BitOR($WS_CLIPSIBLINGS, $BS_BOTTOM, $BS_MULTILINE))
    GUICtrlSetBkColor(-1, 0x00FF00)
    GUISetState()

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

    While True
    $msg = GUIGetMsg()
    Switch $msg
    Case -3 ;$GUI_EVENT_CLOSE
    MsgBox(64, 'tata... ;-)', StringFormat($sMsg[0]), 3)
    ExitLoop
    Case $btnColor
    $tate = BitXOR($tate, 0, 1)
    For $k = 0 To 1 ;i statisch kein Ubound
    GUICtrlSetData($btnColor, StringFormat($sMsg[$tate]))
    GUICtrlSetBkColor($btnColor, $Color[$tate])
    Next
    EndSwitch
    WEnd
    ; Ende

    [/autoit]
  • misterspeed:

    Ja , das ist fast genau das, was ich gesucht habe. Danke !!!
    Eins ist mir noch unklar:

    In der Zeile: $TTTCompStart = GUICtrlCreateButton("Überschrift", 30, 190, 180, 90, 14, -1) setzt Du als Style den Wert "14". Im Normalfall wird der Style anders beschrieben, z.B. "$BS_MULTILINE ".

    Wo finde ich die Werte, die Du hier verwendest. Die Umrechnung des "Internen Wertes" hat nicht gefunzt ... oder ich habe's falsch umgerechnet.

    Wenn Du's eilig hast - geh langsam...

  • misterspeed:

    Ja , das ist fast genau das, was ich gesucht habe. Danke !!!
    Eins ist mir noch unklar:

    In der Zeile: $TTTCompStart = GUICtrlCreateButton("Überschrift", 30, 190, 180, 90, 14, -1) setzt Du als Style den Wert "14". Im Normalfall wird der Style anders beschrieben, z.B. "$BS_MULTILINE ".

    Wo finde ich die Werte, die Du hier verwendest. Die Umrechnung des "Internen Wertes" hat nicht gefunzt ... oder ich habe's falsch umgerechnet.


    Das wäre der Style $BS_COMMANDLINK
    In der ButtonConstants.au3 findest du alle Button-Styles.

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • du kannst aber auch die Info, was der Button macht, über GUICtrlSetTip als Mausinfo anzeigen lassen!

    Beispiel:

    [autoit]


    $Button1 = GUICtrlCreateButton("Programm starten", 420, 612, 70, 22)
    GUICtrlSetTip($Button1, "startet das Programm xyz")

    [/autoit]

    Gruß gmmg ;)