Labels teilweise unterstreichen: _GuiCtrlCreateLabel_UnderlineWords

  • Hallo,

    hab hier irgendwo gelesen, dass jemand auf einfache Weise Labels erzeugen wollte, die unterstrichene Wörter enthalten. Hier ist mein Lösungsvorschlag:

    Spoiler anzeigen
    [autoit]

    GUICreate('Teilweise unterstrichene Labels', 700, 520)

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

    _GuiCtrlCreateLabel_UnderlineWords("Manche Wörter sind unterstrichen, andere aber nicht!", 10, 10, "3;6", 20)
    _GuiCtrlCreateLabel_UnderlineWords("Manche Wörter sind unterstrichen, andere aber nicht!", 10, 50, "3;6", 10)
    _GuiCtrlCreateLabel_UnderlineWords("Manche Wörter sind unterstrichen, andere aber nicht!", 10, 80, "3;6", 18)

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

    _GuiCtrlCreateLabel_UnderlineWords("Manche Wörter sind unterstrichen, andere aber nicht!", 10, 120, "3;6", 20, "Courier")
    _GuiCtrlCreateLabel_UnderlineWords("Manche Wörter sind unterstrichen, andere aber nicht!", 10, 150, "3;6", 10, "Courier")
    _GuiCtrlCreateLabel_UnderlineWords("Manche Wörter sind unterstrichen, andere aber nicht!", 10, 180, "3;6", 18, "Arial")

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

    $aLabel = _GuiCtrlCreateLabel_UnderlineWords("Text: Link", 10, 220, "1", 80, "Arial")

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

    GUICtrlSetColor($aLabel[1], 0x0000ff)
    GUICtrlSetCursor($aLabel[1], 0)

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

    GUISetState()

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

    Do
    Sleep(10)
    Until GUIGetMsg() = -3

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

    Func _GuiCtrlCreateLabel_UnderlineWords($sText, $iPosX, $iPosY, $sIndex, $iFontSize = 8.5, $sFont = 'Microsoft Sans Serif')
    GUISetFont($iFontSize, 400, 0, $sFont)
    Local $aIndex = StringSplit($sIndex, ";", 2)
    Local $aText = StringSplit(StringStripWS($sText, 7), " ", 2)
    Local $hLabel[UBound($aText)]
    $hLabel[0] = GUICtrlCreateLabel($aText[0], $iPosX, $iPosY)
    Local $hGui = DllCall("user32.dll", "hwnd", "GetParent", "hwnd", GUICtrlGetHandle(-1))
    $hGui = $hGui[0]
    Local $aPos
    For $i = 1 To UBound($aText) -1
    $aPos = ControlGetPos($hGui, "", GUICtrlGetHandle(-1))
    $hLabel[$i] = GUICtrlCreateLabel($aText[$i], $iPosX + $aPos[0] + $aPos[2] - 15 + Ceiling($iFontSize / 3), $iPosY)
    Next
    For $i = 0 To UBound($aIndex) -1
    GUICtrlSetFont($hLabel[$aIndex[$i]], Default, Default, 4)
    Next
    Return $hLabel
    EndFunc

    [/autoit]

    Der Lösungsansatz könnte auch für andere Attribute einer Schriftart verwendet werden, z.B. kursiv schreiben, oder so.
    Hoffe es kann jemand mal brauchen.

    Gruß funkey

  • Ich habs auch mal Archiviert. Kann man immer mal gebrauchen :thumbup:

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.