Slider mit Prozent/Zahlenangabe

  • Hi

    wollte mal fragen wie ich eine gui mit Slider und einer Zahlen angabe mache. Das was ich bis jetzt habe funtzt net.

    Spoiler anzeigen
    [autoit]

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

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

    #Region ### START Koda GUI section ### Form=e:\dokumente und einstellungen\phfroherz\eigene dateien\koda forms\tools.kxf
    $Tools = GUICreate("Tools", 594, 454, 466, 353)
    $Tab1 = GUICtrlCreateTab(16, 16, 569, 425)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Inventar Verkaufen")
    $Slider1 = GUICtrlCreateSlider(152, 240, 310, 45)
    GUICtrlSetLimit(-1,50,0)
    $verkaufen = GUICtrlCreateButton("Verkaufen", 272, 344, 75, 25, 0)
    $slots = GUICtrlCreateLabel(GUICtrlRead($Slider1), 288, 288, 27, 17)
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

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

    EndSwitch
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von EmEx (19. Januar 2010 um 12:23)

  • hmmm??? also wenn ich das ausführe funtzt das auch aber im Label wird nicht die Zalh zwischen 0-50 angezeigt sondern immer nur null und da soll ja die zahl stehen die der slider grade hat also wenn ich den auf 1 stelle soll das ding 1 anzeigen und das tut es net.

  • Achso, dachte das Gui anzuzeigen gibt schon einen Fehler.
    Damit das immer aktualisiert wird musst du es mit in die While-Schleife schreiben ;) Das sieht aber nicht so schön aus, weil der Wert dann immer flackert, deshalb würde ich die Adlibfunktion nehmen:

    Spoiler anzeigen
    [autoit]

    AdLibRegister("Aktualisieren", 100)

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

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

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

    EndSwitch
    WEnd

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

    Func Aktualisieren()
    $Sliderstatus = GUICtrlRead($Slider1)
    GUICtrlSetData($slots, $Sliderstatus)
    EndFunc

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


    So gehts ;)
    EDIT: Adlibregister findest du so (noch) nicht in der Hilfe, sondern Adlibenable

  • Hallo Aquaplant,


    wenn schon mit AdLibRegister dann aber auch AdLibUnregister also die Schleife so:

    [autoit]

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

    [/autoit]


    Geht aber auch ohne Adlib und ohne flackern:

    [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Slider1
    GUICtrlSetData($slots, GUICtrlRead($Slider1))
    EndSwitch
    WEnd

    [/autoit]
    Zitat

    EDIT: Adlibregister findest du so (noch) nicht in der Hilfe, sondern Adlibenable

    In der aktuellen Original- (Englisch) Fassung sehr wohl,

    mfg (Auto)Bert

  • Und so ginge das ganze ohne AdlibRegister:

    Spoiler anzeigen
    [autoit]

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

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

    #Region ### START Koda GUI section ### Form=e:\dokumente und einstellungen\phfroherz\eigene dateien\koda forms\tools.kxf
    $Tools = GUICreate("Tools", 594, 454, 466, 353)
    $Tab1 = GUICtrlCreateTab(16, 16, 569, 425)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Inventar Verkaufen")
    $hSlider = GUICtrlCreateSlider(152, 240, 310, 45)
    GUICtrlSetLimit(-1,50,0)
    $verkaufen = GUICtrlCreateButton("Verkaufen", 272, 344, 75, 25, 0)
    $slots = GUICtrlCreateLabel(GUICtrlRead($hSlider), 288, 288, 27, 17)
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    GUIRegisterMsg($WM_NOTIFY,"WM_NOTIFY")
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndSlider
    $hWndSlider = $hSlider
    If Not IsHWnd($hSlider) Then $hWndSlider = GUICtrlGetHandle($hSlider)

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndSlider
    Switch $iCode
    Case -12
    GUICtrlSetData($slots,GUICtrlRead($hSlider))
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]
    • Offizieller Beitrag

    Na dann aber mit WM_HSCROLL:

    Spoiler anzeigen
    [autoit]


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

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

    #Region ### START Koda GUI section ### Form=e:\dokumente und einstellungen\phfroherz\eigene dateien\koda forms\tools.kxf
    $Tools = GUICreate("Tools", 594, 454, 466, 353)
    $Tab1 = GUICtrlCreateTab(16, 16, 569, 425)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Inventar Verkaufen")
    $hSlider = GUICtrlCreateSlider(152, 240, 310, 45)
    GUICtrlSetLimit(-1, 50, 0)
    $verkaufen = GUICtrlCreateButton("Verkaufen", 272, 344, 75, 25, 0)
    $slots = GUICtrlCreateLabel(GUICtrlRead($hSlider), 288, 288, 27, 17)
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    GUIRegisterMsg($WM_HSCROLL, "_WM_HSCROLL")
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func _WM_HSCROLL($hWnd, $Msg, $wParam, $lParam)
    Local $nID
    $nID = BitAND($wParam, 0x0000FFFF)
    If $nID = $hSlider Then GUICtrlSetData($slots, GUICtrlRead($hSlider))
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_WM_HSCROLL

    [/autoit]