Vertikale Zentrierung bei Input controls

  • Irgendwie mag das gerade nicht so recht klappen, vielleicht weiß ja jemand von euch wie ich den Text in den Input controls vertikal zentriert bekomme, genauso wie links daneben in den Label controls.


    Spoiler anzeigen
    [autoit]


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

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

    $gMain = GUICreate("Mein Login", 900, 600, -1, -1, $WS_POPUPWINDOW,$WS_EX_CONTROLPARENT)
    GUISetBkColor(0x0000CC,$gMain)
    GUISetFont(10,400,0,"Calibri",$gMain)
    ; Bereich Login
    $dummyLoginS = GUICtrlCreateDummy()
    $lAreaLogin = __GUICtrlCreateLabel("" , 280, 200, 340, 135,Default,$GUI_WS_EX_PARENTDRAG, 0xFFFFFF)
    $lUser = __GUICtrlCreateLabel("Benutzer" , 300, 220, 80, 25,BitOR($SS_CENTERIMAGE,$WS_BORDER),$GUI_WS_EX_PARENTDRAG, 0xFFFFFF,0x000000,"Calibri",10,400)
    $iUser = GUICtrlCreateInput("BenutzerTest" , 390, 220, 210, 25,BitOR($WS_BORDER,$ES_AUTOHSCROLL),$GUI_WS_EX_PARENTDRAG)
    $lPW = __GUICtrlCreateLabel("Passwort" , 300, 255, 80, 25,BitOR($SS_CENTERIMAGE,$WS_BORDER),$GUI_WS_EX_PARENTDRAG, 0xFFFFFF,0x000000,"Calibri",10,400)
    $iPW = GUICtrlCreateInput("" , 390, 255, 210, 25,BitOR($WS_BORDER,$ES_AUTOHSCROLL,$ES_PASSWORD),$GUI_WS_EX_PARENTDRAG)
    $bLoginBeenden = __GUICtrlCreateLabel("Beenden" , 390, 290, 100, 25,BitOR($SS_CENTERIMAGE,$SS_CENTER,$WS_BORDER),$GUI_WS_EX_PARENTDRAG, 0xFFFFFF,0x000000,"Calibri",12,400,True,"_Hover_Func_Button", "_Hover_Func_Button")
    $bLogin = __GUICtrlCreateLabel("Login" , 500, 290, 100, 25,BitOR($SS_CENTERIMAGE,$SS_CENTER,$WS_BORDER),$GUI_WS_EX_PARENTDRAG, 0xFFFFFF,0x000000,"Calibri",12,400,True,"_Hover_Func_Button", "_Hover_Func_Button")
    $dummyLoginE = GUICtrlCreateDummy()

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

    GUICtrlSetState($lAreaLogin,$GUI_DISABLE)

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

    GUISetState(@SW_SHOW)

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

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

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

    Func __GUICtrlCreateLabel($text=Default,$left=Default,$top=Default,$width=Default,$height=Default,$style=Default,$exstyle=Default,$bkcolor=-1,$fontcolor=-1,$fontname=-1,$fontsize=Default,$fontweight=Default,$hover=False,$hoverF=-1,$hoverLeaveF=-1)
    Local $iCtrl = GUICtrlCreateLabel($text,$left,$top,$width,$height,$style,$exstyle)
    If $bkcolor <> -1 Then GUICtrlSetBkColor($iCtrl,$bkcolor)
    If $fontcolor <> -1 Then GUICtrlSetColor($iCtrl,$fontcolor)
    If $fontname <> -1 Then GUICtrlSetFont($iCtrl,$fontsize,$fontweight,0,$fontname)
    If $hover = True Then
    If $hoverF <> -1 And $hoverLeaveF <> -1 Then
    ;_GUICtrl_OnHoverRegister($iCtrl, $hoverF, $hoverLeaveF)
    Else
    If $hoverF = -1 Then
    ; _GUICtrl_OnHoverRegister($iCtrl, "", $hoverLeaveF)
    Else
    ; _GUICtrl_OnHoverRegister($iCtrl, $hoverF, $hoverLeaveF)
    EndIf
    EndIf
    EndIf
    Return $iCtrl
    EndFunc

    [/autoit]
  • Naja ich will es generell zentriert haben unabhängig von der Schriftgröße und Inputhöhe. Deine Lösung ist lediglich "hingemurkst" und schaut halbwegs zentriert aus (19 wäre eher passend, wenn man es so lösen mag...).

    2 Mal editiert, zuletzt von misterspeed (23. Dezember 2013 um 15:38)

  • Auch in den C++ Foren gibt's keine Lösung...
    Mein Vorschlag wäre, du zeichnest per GDI/GDI+ dieses Rechteck in deine GUI und setzt dann ein unsichtbares Input Control so hinauf, dass der Text mittig erscheint.

  • Naja, du kannst mit GUIGetMessage ja abfragen wann auf den Label geklickt wird.
    Danach musst du nur noch solange die Input Eingaben empfangen wie das Label bzw. Window fokusiert sind.
    Das kannst du beispielsweise mit GUIRegisterMsg machen oder einfach via _IsPressed() etc. abfragen.
    Und nun ran an den Code! :D