Edit`s

  • HI ich bin grad total verzweifelt!!!

    in volgendem script sollen alle neu erstellten editboxen beim erneuten ausführen des progs. wieder vorhanden sein!

    ich hab mir überlegt, dass man die anzahl in eine ini schreibt und die dann wieder ausliest und so viele editboxen hinzufügt. an der umsetzung haperts allerdings! ich habs schon probier aber ich bin da zu doof zu. es were nett wenn mir das jemand machen könnte (dauert doch nicht lange oder??)

    Ich hoffe mir hilft jemand, insofern mir noch zu helfen ist! :rofl:

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------
    AutoIt Version: 3.3.6.1
    Author: myName
    Script Function:
    Template AutoIt script.
    #ce ----------------------------------------------------------------------------
    ; Script Start - Add your code below here
    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <WindowsConstants.au3>
    #Include <GuiScrollBars.au3>
    #include <ScrollBarConstants.au3>
    #Include <GUIScroll.au3>

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

    Global $hEdit[1]
    $hGui = GUICreate("Gui", 300, 500)
    $hAdd = GUICtrlCreateButton("Hinzufügen", 30, 20, 100, 25)
    $hEdit[0] = GUICtrlCreateEdit("", 20, 60, 260, 100, BitOR($WS_VSCROLL, $ES_WANTRETURN))
    GUISetState()

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

    Scrollbar_Create($hGui, $SB_VERT, 10000)
    Scrollbar_Step(20, $hGui, $SB_VERT)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hAdd
    ReDim $hEdit[UBound($hEdit) + 1]
    $aPos = ControlGetPos($hGui, "", $hEdit[UBound($hEdit) - 2])
    $hEdit[UBound($hEdit) - 1] = GUICtrlCreateEdit("", 20, $aPos[1] + $aPos[3], 260, 100, BitOR($WS_VSCROLL, $ES_WANTRETURN))
    EndSwitch
    WEnd

    [/autoit]

    3 Mal editiert, zuletzt von Stormrider (22. Mai 2010 um 14:18)

  • ungetestet:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiScrollBars.au3>
    #include <ScrollBarConstants.au3>
    #include <GUIScroll.au3>

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

    Global $hEdit[1]
    Global $sFile = @ScriptDir & "\settings.ini"
    $hGui = GUICreate("Gui", 300, 500)
    $hAdd = GUICtrlCreateButton("Hinzufügen", 30, 20, 100, 25)
    $hEdit[0] = GUICtrlCreateEdit("", 20, 60, 260, 100, BitOR($WS_VSCROLL, $ES_WANTRETURN))
    GUISetState()

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

    If IniRead($sFile, "settings", "NumberEditCtrls", "") <> '' Then
    $Anzahl = IniRead($sFile, "settings", "NumberEditCtrls", "")
    ConsoleWrite($Anzahl & @CRLF)
    For $i = 1 To $Anzahl - 1 ;// Erste Control ist ja oben schon erstellt worden
    ReDim $hEdit[UBound($hEdit) + 1]
    $aPos = ControlGetPos($hGui, "", $hEdit[UBound($hEdit) - 2])
    $hEdit[UBound($hEdit) - 1] = GUICtrlCreateEdit("", 20, $aPos[1] + $aPos[3], 260, 100, BitOR($WS_VSCROLL, $ES_WANTRETURN))
    Next
    EndIf

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

    Scrollbar_Create($hGui, $SB_VERT, 10000)
    Scrollbar_Step(20, $hGui, $SB_VERT)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hAdd
    ReDim $hEdit[UBound($hEdit) + 1]
    $aPos = ControlGetPos($hGui, "", $hEdit[UBound($hEdit) - 2])
    $hEdit[UBound($hEdit) - 1] = GUICtrlCreateEdit("", 20, $aPos[1] + $aPos[3], 260, 100, BitOR($WS_VSCROLL, $ES_WANTRETURN))
    IniWrite($sFile, "settings", "NumberEditCtrls", UBound($hEdit))
    EndSwitch
    WEnd

    [/autoit]
  • Hallo StormRider,

    meine Lösung sieht so aus:

    Spoiler anzeigen
    [autoit]

    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseUpx=n
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ----------------------------------------------------------------------------
    AutoIt Version: 3.3.6.1
    Author: myName
    Script Function:
    Template AutoIt script.
    #ce ----------------------------------------------------------------------------
    ; Script Start - Add your code below here
    #include <EditConstants.au3>
    #include <ScrollBarConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiButton.au3>
    #include <StructureConstants.au3>
    #include <GUIScrollBars.au3>
    ;#include <Date.au3>

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

    Global $sIni = @ScriptDir & "\Gui.ini"
    Global $iEdits = IniRead($sIni, "Edits", "Count", 1)
    Global $hEdit[$iEdits], $iTop = -60
    $hGui = GUICreate("Gui", 300, 500, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_SYSMENU, $WS_CAPTION, $WS_POPUP, $WS_POPUPWINDOW, $WS_GROUP, $WS_VSCROLL, $WS_BORDER, $WS_CLIPSIBLINGS))
    $hAdd = GUICtrlCreateButton("Hinzufügen", 30, 20, 100, 25)
    For $i = 0 To $iEdits - 1
    _newEdit($i)
    _loadEdit($i)
    Next
    GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL")
    _GUIScrollBars_Init($hGui)
    GUISetState()

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

    ;Scrollbar_Create($hGui, $SB_VERT, 10000)
    ;Scrollbar_Step(20, $hGui, $SB_VERT)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    For $i = 0 to $iEdits -1
    _SaveEdit($i)
    Next
    Exit
    Case $hAdd
    ReDim $hEdit[UBound($hEdit) + 1]
    _newEdit($iEdits)
    $iEdits += 1
    IniWrite($sIni, "Edits", "Count", $iEdits)
    EndSwitch
    WEnd

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

    Func _newEdit($iEditNr)
    ConsoleWrite($iEditNr & @CRLF)
    $iTop += 110
    $hEdit[$iEditNr] = GUICtrlCreateEdit("", 20, $iTop, 260, 100, BitOR($WS_VSCROLL, $ES_WANTRETURN))
    EndFunc ;==>_newEdit

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

    Func _loadEdit($iEditNr)
    Local $hFile = FileOpen("Edit" & $iEditNr & ".txt",0)
    GUICtrlSetData($hEdit[$iEditNr],FileRead($hFile))
    FileClose($hFile)
    EndFunc

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

    Func _SaveEdit($iEditNr)
    Local $hFile = FileOpen("Edit" & $iEditNr & ".txt",2)
    FileWrite($hFile,GUICtrlRead($hEdit[$iEditNr]))
    FileClose($hFile)
    EndFunc

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

    Func WM_VSCROLL($hWnd, $Msg, $wParam, $lParam)
    #forceref $Msg, $wParam, $lParam
    Local $nScrollCode = BitAND($wParam, 0x0000FFFF)
    Local $index = -1, $yChar, $yPos
    Local $Min, $Max, $Page, $Pos, $TrackPos

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

    For $x = 0 To UBound($aSB_WindowInfo) - 1
    If $aSB_WindowInfo[$x][0] = $hWnd Then
    $index = $x
    $yChar = $aSB_WindowInfo[$index][2]
    ExitLoop
    EndIf
    Next
    If $index = -1 Then Return 0

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

    ; Ermittelt alle Informationen der vertikalen Scrollbar
    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_VERT)
    $Min = DllStructGetData($tSCROLLINFO, "nMin")
    $Max = DllStructGetData($tSCROLLINFO, "nMax")
    $Page = DllStructGetData($tSCROLLINFO, "nPage")
    $yPos = DllStructGetData($tSCROLLINFO, "nPos")
    $TrackPos = DllStructGetData($tSCROLLINFO, "nTrackPos")
    ; Speichert die y-Position für einen späteren Vergleich
    $Pos = $yPos

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

    ; Auswertung der vom System gemeldeten Scroll-Nachricht
    Switch $nScrollCode
    Case $SB_TOP ; Der Anwender klickte auf die "Pos1"-Taste
    DllStructSetData($tSCROLLINFO, "nPos", $Min)

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

    Case $SB_BOTTOM ; Der Anwender klickte auf die "Ende"-Taste
    DllStructSetData($tSCROLLINFO, "nPos", $Max)

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

    Case $SB_LINEUP ; Der Anwender klickte auf den oberen Pfeil
    DllStructSetData($tSCROLLINFO, "nPos", $Pos - 1)

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

    Case $SB_LINEDOWN ; Der Anwender klickte auf den unteren Pfeil
    DllStructSetData($tSCROLLINFO, "nPos", $Pos + 1)

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

    Case $SB_PAGEUP ; Der Anwender klickte oberhalb des Scrollbalkens
    DllStructSetData($tSCROLLINFO, "nPos", $Pos - $Page)

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

    Case $SB_PAGEDOWN ; Der Anwender klickte unterhalb des Scrollbalkens
    DllStructSetData($tSCROLLINFO, "nPos", $Pos + $Page)

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

    Case $SB_THUMBTRACK ; Der Anwender zog den Scrollbalken
    DllStructSetData($tSCROLLINFO, "nPos", $TrackPos)
    EndSwitch

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

    ;~ // Setzt die neue Position und ermittelt sie danach erneut.
    ;~ // Abhängig von den Windows-Einstellungen kann es sein, dass die gelesenen Werte nicht die gleichen sind, wie die vorher gesetzten.

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

    DllStructSetData($tSCROLLINFO, "fMask", $SIF_POS)
    _GUIScrollBars_SetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
    _GUIScrollBars_GetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
    ; // Falls sich die y-Position der Scrollbar geändert hat, den Fensterbereich verschieben und aktualisieren
    $Pos = DllStructGetData($tSCROLLINFO, "nPos")
    If ($Pos <> $yPos) Then
    _GUIScrollBars_ScrollWindow($hWnd, 0, $yChar * ($yPos - $Pos))
    $yPos = $Pos
    EndIf

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

    Return $GUI_RUNDEFMSG

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

    EndFunc ;==>WM_VSCROLL

    [/autoit]

    Edit: Skript korrigiert (FileOpen)

    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (14. Mai 2010 um 20:00)

  • Hallo StormRider,

    ich habe das Skript noch einmal mit abgeändert:

    Spoiler anzeigen
    [autoit]

    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseUpx=n
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ----------------------------------------------------------------------------
    AutoIt Version: 3.3.6.1
    Author: myName
    Script Function:
    Template AutoIt script.
    #ce ----------------------------------------------------------------------------
    ; Script Start - Add your code below here
    #include <EditConstants.au3>
    #include <ScrollBarConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiButton.au3>
    #include <StructureConstants.au3>
    ;#include <GUIScrollBars.au3>
    #include <GUIScroll.au3>

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

    ;#include <Date.au3>

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

    Global $sIni = @ScriptDir & "\Gui.ini"
    Global $iEdits = IniRead($sIni, "Edits", "Count", 1)
    Global $hEdit[$iEdits], $iTop = -60
    $hGui = GUICreate("Gui", 330, 500, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_SYSMENU, $WS_CAPTION, $WS_POPUP, $WS_POPUPWINDOW, $WS_GROUP, $WS_VSCROLL, $WS_BORDER, $WS_CLIPSIBLINGS))
    $hAdd = GUICtrlCreateButton("Hinzufügen", 30, 20, 100, 25)
    For $i = 0 To $iEdits - 1
    _newEdit($i)
    _loadEdit($i)
    Next
    ;_GUIScrollBars_Init($hGui)

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

    GUISetState()

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

    Scrollbar_Create($hGui, $SB_VERT, 60 +$iEdits*110)
    Scrollbar_Step(20, $hGui, $SB_VERT)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    For $i = 0 to $iEdits -1
    _SaveEdit($i)
    Next
    Exit
    Case $hAdd
    ReDim $hEdit[UBound($hEdit) + 1]
    _newEdit($iEdits)
    $iEdits += 1
    IniWrite($sIni, "Edits", "Count", $iEdits)
    _GUIScrollBars_SetScrollRange($hGui, $SB_VERT, 0,60 +$iEdits*110)
    EndSwitch
    WEnd

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

    Func _newEdit($iEditNr)
    ConsoleWrite($iEditNr & @CRLF)
    $iTop += 110
    $hEdit[$iEditNr] = GUICtrlCreateEdit("", 20, $iTop, 260, 100, BitOR($WS_VSCROLL, $ES_WANTRETURN))
    EndFunc ;==>_newEdit

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

    Func _loadEdit($iEditNr)
    Local $hFile = FileOpen("Edit" & $iEditNr & ".txt",0)
    GUICtrlSetData($hEdit[$iEditNr],FileRead($hFile))
    FileClose($hFile)
    EndFunc

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

    Func _SaveEdit($iEditNr)
    Local $hFile = FileOpen("Edit" & $iEditNr & ".txt",2)
    FileWrite($hFile,GUICtrlRead($hEdit[$iEditNr]))
    FileClose($hFile)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]
    Zitat von StormRider

    danke an euch!!! ihr seid echt klasse!!! ;)

    klasse fände ich es wenn du alle Threads dieses Thema betreffend auf gelöst setzt,

    Edit: GuiScroll.au3 angehängt
    mfg (Auto)Bert