Scrollbar bringt mich zum verzweifeln!

  • Hi Leute!

    Ich hab ein Problem unzwar mache ich ein Patchprogramm und in der Gui hab ich oben eine Box in der immer angezeigt wird was gerade gepatcht wird...
    Jetzt will ich, da in die Box nicht alles passt dort eine vertikale scrollbar erstellen.
    So hab ich das in Koda gemacht:

    [Blockierte Grafik: http://img693.imageshack.us/img693/8114/19162255.png]

    Es geht um das obere Fenster in dem die Daten aufgelistet werden, indem die datei die gepatcht wird in eine datei ins tempverzeichniss geschrieben wird und der Inhalt wird halt dahin ausgegeben. Das sieht dann so aus:

    [Blockierte Grafik: http://img138.imageshack.us/img138/2789/90690614.png]

    Wie ihr seht hab ich bei Koda eine Scrollbar festgelegt für das kleine Fenster jedoch ist es nicht verwendbar oder anklickbar.
    Die Scrollfunktion aus dem Helpfile konnte ich nicht auf mein Beispiel anwenden. Ist mir zu kompliziert...
    Hätte jemand ne Idee wie ich das machen könnte? Außerdem möchte ich das automatisch immer an die unterste position gescrollt ist damit man sieht was gepatcht weir.


    Zum schluss hier noch n paar Ausschnitte ausm code:

    Von Koda generiert:

    [autoit]


    #Region ### START Koda GUI section ### Form=
    $Patch = GUICreate("FREE WORLD II AUTOPATCH", 377, 499, 286, 162, BitOR($WS_CAPTION,$WS_POPUP,$WS_BORDER,$WS_CLIPSIBLINGS))
    $CANCEL = GUICtrlCreateButton("CANCEL", 280, 456, 75, 23, $BS_BITMAP)
    GUICtrlSetImage(-1, "cancel.bmp", 0)
    $protokoll = GUICtrlCreateLabel("Bitte Warten...", 16, 16, 340, 73, BitOR($SS_SUNKEN,$WS_VSCROLL)) ; DAS HIER IS DAS FENSTER WO SCROLLBAR SEIN SOLL!
    $Label2 = GUICtrlCreateLabel("", 16, 104, 340, 284, BitOR($SS_SUNKEN,$WS_VSCROLL))
    $Progress1 = GUICtrlCreateProgress(16, 400, 337, 17)
    GUICtrlSetBkColor(-1, 0xE3E3E3)
    $Progress2 = GUICtrlCreateProgress(16, 432, 337, 17)
    GUICtrlSetBkColor(-1, 0xE3E3E3)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit]

    So werden die Files verglichen, gepatcht und reingeschrieben:

    [autoit]


    $root1 = InetGetSize( "http://" & $Ip & "/patch1/root.epk" )
    $root2 = FileGetSize( "pack/root.epk" )

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

    If $root1 <> $root2 Then
    FileWriteLine(@tempdir & "/protokoll", "pack\root.epk Dateidownload läuft.")
    $archiv = FileRead(@tempdir & "/protokoll")
    GUICtrlDelete ( $protokoll )
    $protokoll = GUICtrlCreateLabel($archiv, 16, 16, 340, 73, BitOR($SS_SUNKEN,$WS_VSCROLL))
    InetGet( "http://" & $Ip & "/patch1/root.epk", "pack/root.epk", 1, 0)
    Else
    FileWriteLine(@tempdir & "/protokoll", "pack\root.epk Dateiprüfung läuft.")
    $archiv = GUICtrlCreateLabel("root.epk", 24, 240, 522, 17)
    $archiv = FileRead(@tempdir & "/protokoll")
    GUICtrlDelete ( $protokoll )
    $protokoll = GUICtrlCreateLabel($archiv, 16, 16, 340, 73, BitOR($SS_SUNKEN,$WS_VSCROLL))
    EndIf

    [/autoit]


    Wenn ihr noch irgendwelche Infos braucht fragt...


    So hoffe das war ausführlich genug und ich krieg ne seriöse antwort von einem von euch experten ;)
    Muss das bald fertig haben, die Zeit drängt!


    Gruß,
    Eddy

  • Kannst du mir da ein Beispiel für schreiben??

    Einmal editiert, zuletzt von MrEddy (22. Dezember 2009 um 11:37)

  • Hi das könnte dann sowas werden.

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiEdit.au3>
    #include <ScrollBarConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 447, 321, 273)
    $Edit1 = GUICtrlCreateEdit("", 136, 136, 137, 145,$ES_AUTOVSCROLL + $WS_VSCROLL)
    GUICtrlSetData(-1, "Edit1")
    $Button1 = GUICtrlCreateButton("Button1", 192, 336, 65, 25, 0)
    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]

    Case $Button1
    for $z = 0 To 100
    GUICtrlSetData($Edit1,Guictrlread($Edit1)&$z&@Crlf)
    _GUICtrlEdit_Scroll($Edit1, $SB_SCROLLCARET) <--- das ist es
    sleep(50)
    Next
    EndSwitch
    WEnd

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

    MfG
    Der_Doc

  • Geht noch viel sanfter mit _GUICtrlEdit_AppendText()

    Spoiler anzeigen
    [autoit]

    #include <GuiEdit.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    $hGUI = GUICreate("")
    $Edit = GUICtrlCreateEdit("",20,20,360,300,BitOR($ES_AUTOVSCROLL,$ES_READONLY,$WS_VSCROLL))
    $Button = GUICtrlCreateButton("Starten",20,340,360,40)
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit
    Case $Button
    For $i = 0 to 500
    _GUICtrlEdit_AppendText($Edit,"Zeile "&$i&@CRLF)
    Next
    EndSwitch
    WEnd

    [/autoit]