Radio Button automatisch an den Text anpassen

  • Hallo Leute,

    schon wieder hänge ich an einem kleinen Problem, bestimmt ist es wieder ganz simpel aber ich komme gerade einfach nicht auf die Lösung. Also hier mein Problem.

    Ich habe einen Radiobutton mit Text versteht sich :D das Ding ist jetzt, durch eine Usereingabe kann der Text des Radiobuttons beliebig geändert werden. Und da ich den RadioButton Farbig hinterlegt habe, wäre es cool, wenn der RadioButton sich automatisch nach jeder Usereingabe automatisch an den Text anpasst, denn wenn ich den RadioButton einfach riesen groß erstelle, sieht es einfach sch.... aus, wenn da ein farbiger Strich über die ganze GUI geht.

    Spoiler anzeigen
    [autoit]


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

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Beispiel", 284, 126, 192, 124)
    $Radio1 = GUICtrlCreateRadio("Radio1", 16, 80, 249, 17)
    GUICtrlSetBkColor($Radio1, $COLOR_RED)
    $Input1 = GUICtrlCreateInput("", 32, 24, 121, 21)
    $Button1 = GUICtrlCreateButton("OK", 160, 24, 75, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $Text = GUICtrlRead($Input1)
    GUICtrlSetData($Radio1, $Text)

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

    EndSwitch
    WEnd

    [/autoit]

    Bitte schnellstmöglich um Hilfe.
    Danke schonmal im Vorraus.

    MfG,
    Facemix

    MfG, Facemix

    meine Spezialität: Windowstools für eine leichtere Arbeit am PC

    Nicht veröffentlicht


    nicht veröffentlichte Programme von mir

    - FTP Filereader
    - Youtube Kanal Player
    -GDI+ Countdown (bis zu einem Wunderbaren ereignis :) )

    MyPastebin

    Einmal editiert, zuletzt von Facemix (30. Oktober 2014 um 17:39)

  • habs im 1. Post reingemacht ein beispiel was ich nur noch haben will ist, dass sich der Radio Button der Textlänge anpasst

    MfG, Facemix

    meine Spezialität: Windowstools für eine leichtere Arbeit am PC

    Nicht veröffentlicht


    nicht veröffentlichte Programme von mir

    - FTP Filereader
    - Youtube Kanal Player
    -GDI+ Countdown (bis zu einem Wunderbaren ereignis :) )

    MyPastebin

  • Probiers mal damit ;)

    Spoiler anzeigen
    [autoit]

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

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Beispiel", 284, 126, 192, 124)
    $Radio1 = GUICtrlCreateRadio("Radio1", 16, 80, 249, 17)
    GUICtrlSetBkColor($Radio1, $COLOR_RED)
    $Input1 = GUICtrlCreateInput("", 32, 24, 121, 21)
    $Button1 = GUICtrlCreateButton("OK", 160, 24, 75, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $hTextStart = ""

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

    While 1
    If GUICtrlRead($Input1) <> $hTextStart Then
    $hTextStart = GUICtrlRead($Input1)
    GUICtrlSetData($Radio1, $hTextStart)
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Hier mein Vorschlag:

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ColorConstants.au3>
    #include <GDIPlus.au3>

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

    _GDIPlus_Startup()
    #Region ### START Koda GUI section ### Form=
    $sFontname = "Times New Roman"
    $fFSize = 9.5
    $Form1 = GUICreate("Beispiel", 284, 126, 192, 124)
    $Radio1 = GUICtrlCreateRadio("Radio1", 16, 80, 70)
    GUICtrlSetFont(-1, $fFSize, 400, 0, $sFontname)
    GUICtrlSetBkColor($Radio1, $COLOR_RED)
    $Input1 = GUICtrlCreateInput("", 32, 24, 121, 21)
    $Button1 = GUICtrlCreateButton("OK", 160, 24, 75, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _GDIPlus_Shutdown()
    Exit
    Case $Button1
    $Text = GUICtrlRead($Input1)
    $aDim = _GDIPlus_MeasureString($Text, $sFontname, $fFSize)
    ControlMove($Form1, "", $Radio1, 16, 80, $aDim[0] + 18)
    GUICtrlSetData($Radio1, $Text)
    EndSwitch
    WEnd

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

    Func _GDIPlus_MeasureString($sString, $sFont = "Arial", $fSize = 12, $iStyle = 0, $bRound = True)
    Local $aSize[2]
    Local Const $hFamily = _GDIPlus_FontFamilyCreate($sFont)
    If Not $hFamily Then Return SetError(1, 0, $aSize)
    Local Const $hFormat = _GDIPlus_StringFormatCreate()
    Local Const $hFont = _GDIPlus_FontCreate($hFamily, $fSize, $iStyle)
    Local Const $tLayout = _GDIPlus_RectFCreate(0, 0, 0, 0)
    Local Const $hGraphic = _GDIPlus_GraphicsCreateFromHWND(0)
    Local $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $sString, $hFont, $tLayout, $hFormat)
    Switch $bRound
    Case True
    $aSize[0] = Round($aInfo[0].Width, 0)
    $aSize[1] = Round($aInfo[0].Height, 0)
    Case Else
    $aSize[0] = $aInfo[0].Width
    $aSize[1] = $aInfo[0].Height
    EndSwitch
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_GraphicsDispose($hGraphic)
    Return $aSize
    EndFunc ;==>_GDIPlus_MeasureString

    [/autoit]

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

    Einmal editiert, zuletzt von UEZ (30. Oktober 2014 um 20:15)

  • @UEZ,
    danke dir, das funktioniert ganz genau wie ich es möchte :)
    würde es auch leichter gehen? oder ist so umständlich unumgänglich?

    MfG, Facemix

    meine Spezialität: Windowstools für eine leichtere Arbeit am PC

    Nicht veröffentlicht


    nicht veröffentlichte Programme von mir

    - FTP Filereader
    - Youtube Kanal Player
    -GDI+ Countdown (bis zu einem Wunderbaren ereignis :) )

    MyPastebin

  • Ich verstehe nicht, warum das umständlich oder schwer sein soll! ?( Ist doch im Prinzip sehr einfach gehalten.

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

    • Offizieller Beitrag

    Das ist doch nicht umständlich.

  • habs mir jetzt nochmal genau angeschaut, ich konnte es ohne Probleme übernehmen und funktioniert wunderbar, umständlich ist es tatsächlich nicht, es sah blos so aus, da du eine Funktion extra für diesen zweck geschrieben hast welche ich natürlich mit übernommen habe nur eines stört mich, wenn ich deiner Funktion sage ich möchte eine andere Schriftart und nicht Arial, dann stürzt es ab. ich kann leider nicht erkennen wo da der fehler liegt

    MfG, Facemix

    meine Spezialität: Windowstools für eine leichtere Arbeit am PC

    Nicht veröffentlicht


    nicht veröffentlichte Programme von mir

    - FTP Filereader
    - Youtube Kanal Player
    -GDI+ Countdown (bis zu einem Wunderbaren ereignis :) )

    MyPastebin

  • MS_SANS_Serif oder so hehe

    MfG, Facemix

    meine Spezialität: Windowstools für eine leichtere Arbeit am PC

    Nicht veröffentlicht


    nicht veröffentlichte Programme von mir

    - FTP Filereader
    - Youtube Kanal Player
    -GDI+ Countdown (bis zu einem Wunderbaren ereignis :) )

    MyPastebin

  • Hmm, anscheinend mag GDI+ nicht den Font, denn mit diesem Font kann _GDIPlus_FontFamilyCreate() nicht erstellt werden. Ich habe den Code angepasst, so dass bei nicht unterstützten Fonts es nicht zum Absturz kommt.

    Warum dieser Font nicht unterstützt wird, weiß ich nicht. Aber, wenn du willst und das Prinzip verstanden hast, kann du auch ein alternative Messfunktion erstellen bzw. z.B. die von Melba23 nehmen.

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯