Fileopen Dialog

  • Hallo habe folgedes Problem wenn ich auf insert Pic Klicke kriege ich diverse fehlermeldung !!??
    kann das mal jemand sich anschauen ?
    und würde gerne diesen code ei mir einbauen weiss aber nicht wie?
    weil die listview stört wenn das bild drinne ist , also müsste ich auch die listview per maus verschieben können???

    diesen würde ich gerne in mein code einbauen ohne das ich die resizing funktion verliere:

    Spoiler anzeigen
    [autoit]

    #Include <GUIConstantsEx.au3>
    #NoTrayIcon
    Opt("GUIOnEventMode", 1)
    Opt("GUICoordMode", 0)
    Global $posXStart, $posYStart, $posXStop, $posYStop
    $main=GUICreate("Tööööst", @DesktopWidth ,@DesktopHeight-55)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_GUIEvents")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "_GUIEvents")
    GUISetOnEvent($GUI_EVENT_RESTORE, "_GUIEvents")
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "_leftClicked")
    GUISetOnEvent($GUI_EVENT_PRIMARYUP, "_leftReleased")
    $pic=GUICtrlCreatePic("C:\WINDOWS\Help\Tours\htmlTour\safe_easy_easier.jpg", @DesktopWidth/2, @DesktopHeight/2)
    GUISetState(@SW_SHOW, $main)
    While True
    Sleep(10)
    WEnd
    Func _GUIEvents()
    Select
    Case @GUI_CtrlId = $GUI_EVENT_CLOSE
    Exit
    Case @GUI_CtrlId = $GUI_EVENT_MINIMIZE
    Case @GUI_CtrlId = $GUI_EVENT_RESTORE
    EndSelect
    EndFunc ;==> _GUIEvents()
    Func _leftClicked()
    $pos=MouseGetPos()
    $posXStart=$pos[0]
    $posYStart=$pos[1]
    EndFunc ;==> _leftClicked()
    Func _leftReleased()
    $pos=MouseGetPos()
    $posXStop=$pos[0]
    $posYStop=$pos[1]
    GUICtrlSetPos($pic, -1*($posXStart-$posXStop), -1*($posYStart-$posYStop))
    EndFunc ;==> _leftClicked()

    [/autoit]

    Hier mein Code:

    Spoiler anzeigen
    [autoit]


    #include <ListviewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <SliderConstants.au3>
    #Include <GuiListView.au3>
    #Include <Array.au3>
    #Include <File.au3>

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

    Global $Active = True, $mod = True, $i, $trans = 0
    Dim $filepaths[1],$szDrive, $szDir, $szFName, $szExt

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

    $hGUI = GUICreate("Chaos-Execution", 275, 310, Default, Default, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX), $WS_EX_ACCEPTFILES)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    $hListview = GUICtrlCreateListView("Files|*. Ext", 10, 10, 254, 220)
    GUICtrlSetResizing(-1, $GUI_DOCKBORDERS) ;Abstand zu allen 4 Seiten bleibt fix
    _GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
    _GUICtrlListView_SetColumnWidth($hListView, 0, 199)
    IF FileExists(@ScriptDir&"/ExecuteItLog.ini") Then
    $aData = IniReadSection(@ScriptDir&"\ExecuteItLog.ini","Files")
    For $i = 1 To UBound($aData) - 1
    _ArrayAdd($filepaths, $aData[$i][1])
    $split = _PathSplit($aData[$i][1], $szDrive, $szDir, $szFName, $szExt)
    _GUICtrlListView_AddItem($hListview, $split[3])
    _GUICtrlListView_AddSubItem($hListView, $i-1,StringTrimLeft($split[4],1),1)
    Next
    $trans = IniRead(@ScriptDir&"\ExecuteItLog.ini","Trans","Key1", "0")
    FileDelete(@ScriptDir&"/ExecuteItLog.ini")
    EndIf

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

    $contextmenu = GUICtrlCreateContextMenu($hListView)
    $insertitem = GUICtrlCreateMenuItem("Insert Item(s)", $contextmenu)
    $renameitem = GUICtrlCreateMenuItem("Rename", $contextmenu)
    $deletemenu = GUICtrlCreateMenu("Delete...", $contextmenu)
    $deleteAll = GUICtrlCreateMenuItem("All Items", $deletemenu)
    $deleteitem = GUICtrlCreateMenuItem("Selected Item", $deletemenu)
    GUICtrlCreateMenuItem("", $contextmenu)
    $exititem = GUICtrlCreateMenuItem("Exit", $contextmenu)

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

    $deletebutton = GuiCtrlCreateButton("&Delete List",54,252,60,28)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKSIZE + $GUI_DOCKBOTTOM)
    ;Abstand Links und unten bleibt fix die Größe (Breite und Höhe) ebenso
    $insertbutton = GuiCtrlCreateButton("&Insert",10,252,40,28)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKSIZE + $GUI_DOCKBOTTOM)

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

    $delpic = GuiCtrlCreateButton("Delete Pic",170,252,60,28)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKSIZE + $GUI_DOCKBOTTOM)
    ;Abstand Links und unten bleibt fix die Größe (Breite und Höhe) ebenso
    $inspic = GuiCtrlCreateButton("Insert Pic",115,252,50,28)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKSIZE + $GUI_DOCKBOTTOM)

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

    ;Abstand Links und unten bleibt fix die Größe (Breite und Höhe) ebenso
    $label = GUICtrlCreateLabel("Transparence = 0%", 148, 237, -1, 14)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    ;Abstand Rechts und unten bleibt fix die Höhe ebenso
    $slider = GUICtrlCreateSlider(120, 257, 144, 20, BitOR($TBS_AUTOTICKS, $WS_BORDER))
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    ;Abstand Rechts und unten bleibt fix die Höhe ebenso
    GuiCtrlSetLimit($slider, 80,0)
    GuiCtrlSetData($slider, $trans)
    GUICtrlSetData($label, "Transparence = " & GUICtrlRead($slider) & "%")
    WinSetTrans("Chaos-Execution", "", 255 - GUICtrlRead($slider) * 2.55)
    Dim $Acc[2][2] = [["^i", $insertButton], ["^d", $deleteALL]]
    GUISetAccelerators($Acc)
    GUISetState(@SW_SHOW)

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

    $EditBox = GUICreate('', 240, 30, -1, -1, BitOR($WS_POPUP,$WS_BORDER),$WS_EX_TOPMOST+$WS_EX_MDICHILD,$hGui)
    $hEdit = GUICtrlCreateInput('', 5, 5, 195, 20)
    $hButton = GuiCtrlCreateButton("...",205,5,30,20)
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    GUIRegisterMsg($WM_HSCROLL, "WM_HVSCROLL")

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

    ; #MAIN LOOP# ==============================================================================================
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE,$exititem
    For $i = 1 To Ubound($filepaths)-1
    IniWrite(@ScriptDir&"\ExecuteItLog.ini","Files", "Key"&$i,$filepaths[$i]& @LF)
    Next
    IniWrite(@ScriptDir&"\ExecuteItLog.ini","Trans", "Key1",GuiCtrlRead($slider))
    Exit
    Case $GUI_EVENT_DROPPED
    $file = @GUI_DragFile
    If StringRegExp($file, "^.+\.(?i)((EXE)|(AU3)|(GIF)|(JPG))$") Then
    _ArrayAdd($filepaths, $file)
    $split = _PathSplit($file, $szDrive, $szDir, $szFName, $szExt)
    _GUICtrlListView_AddItem($hListview, $split[3])
    _GUICtrlListView_AddSubItem($hListView, _GuiCtrlListView_GetItemCount($hlistview)-1,StringTrimLeft($split[4],1),1)
    Else
    MsgBox(64, "Chaos-Execution Info!", $file & @CRLF & "Is an invalid file type.")
    EndIf
    Case $hButton
    GUIRegisterMsg($WM_ACTIVATE, "")
    GuiSetState(@SW_HIDE, $EditBox)
    GuiSetState(@SW_HIDE, $hGui)
    $insert = FileOpenDialog("Select an item to insert!",@DesktopDir, "Dateien(*.Exe;*.Au3;*.gif;*.jpg)",1)
    GuiSetState(@SW_SHOW, $hGui)
    If $insert <> "" Then
    For $i = 0 To _GuiCtrlListView_GetItemCount($hlistview)
    If _GuiCtrlListView_GetItemSelected($hlistview,$i) Then
    $mod = False
    ExitLoop
    EndIf
    Next
    $split = _PathSplit($insert, $szDrive, $szDir, $szFName, $szExt)
    GuiCtrlSetData($hEdit, $split[3])
    GuiSetState(@SW_Show, $EditBox)
    Else
    _EditEsc()
    EndIf
    Case $inspic
    $message = "Bild auswählen"
    $bild = FileOpenDialog($message, @WindowsDir & "\", "Bilder (*.jpg;*.bmp)", 1 + 4 )
    $Pic=GUICtrlCreatePic($bild, 150, 150)
    GUISetState(@SW_SHOW)

    GUIRegisterMsg($WM_ACTIVATE, "WM_ACTIVATE")
    Case $insertitem,$insertButton
    $insert = FileOpenDialog("Select an item to insert!",@DesktopDir, "Dateien(*.Exe;*.Au3;*.gif;*.jpg)",5)
    If $insert <> "" Then
    $insertsplit = StringSplit($insert, "|")
    For $i = 1 To Ubound($insertsplit) -1
    $split = _PathSplit($insertsplit[$i], $szDrive, $szDir, $szFName, $szExt)
    If Ubound($insertsplit) -1 > 1 Then
    If $i > 1 Then
    _ArrayAdd($filepaths, $insertsplit[1]&"\"&$insertsplit[$i])
    _GUICtrlListView_AddItem($hListview, $split[3])
    _GUICtrlListView_AddSubItem($hListView,_GuiCtrlListView_GetItemCount($hlistview)-1,StringTrimLeft($split[4],1),1)
    EndIf
    Else
    _ArrayAdd($filepaths, $insertsplit[$i])
    _GUICtrlListView_AddItem($hListview, $split[3])
    _GUICtrlListView_AddSubItem($hListView,_GuiCtrlListView_GetItemCount($hlistview)-1,StringTrimLeft($split[4],1),1)
    EndIf
    Next
    EndIf
    Case $renameitem
    Local $posGui, $posControl, $textItem
    For $i = 0 To _GuiCtrlListView_GetItemCount($hlistview)
    If _GuiCtrlListView_GetItemSelected($hlistview,$i) Then
    $textItem = _GUICtrlListView_GetItemText($hlistview, $i)
    $posControl = _GuiCtrlListView_GetItemPositionY($hlistview, $i)
    $posGui = WinGetPos($hGui)
    ExitLoop
    EndIf
    Next
    If $textitem <> "" Then
    GUIRegisterMsg($WM_ACTIVATE, "WM_ACTIVATE")
    GuiSetState(@SW_DISABLE, $hGui)
    $mod = True
    HotKeySet('{ESC}', '_EditEsc')
    HotKeySet('{ENTER}', '_EditEnter')
    GUICtrlSetData($hEdit, $textItem)
    WinMove($EditBox, "", $posGui[0]+19,$posGui[1]+$posControl+28)
    GuiSetState(@SW_SHOW, $EditBox)
    EndIf
    Case $deleteitem
    For $i = 0 To _GuiCtrlListView_GetItemCount($hlistview)
    If _GuiCtrlListView_GetItemSelected($hlistview,$i) Then
    ExitLoop
    EndIf
    Next
    _ArrayDelete($filepaths,$i+1)
    _GUICtrlListView_DeleteItemsSelected(GUICtrlGetHandle($hListView))
    Case $deleteAll, $deleteButton
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($hListView))
    For $i = 1 To Ubound($filepaths)-1
    _ArrayDelete($filepaths, $i)
    Next
    EndSwitch
    WEnd

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

    ; #INTERNAL FUNCTIONS# =====================================================================================
    Func _EditEnter()
    $text = GUICtrlRead($hEdit)
    If $mod Then
    $split = _PathSplit($filepaths[$i+1], $szDrive, $szDir, $szFName, $szExt)
    FileMove($filepaths[$i+1], $split[1] & $split[2] & $text & $split[4])
    $filepaths[$i+1] = $split[1] & $split[2] & $text & $split[4]
    Else
    $filepaths[$i+1] = $insert
    $split = _PathSplit($filepaths[$i+1], $szDrive, $szDir, $szFName, $szExt)
    EndIf
    _GUICtrlListView_SetItemText($hListView, $i, $text)
    _GUICtrlListView_SetItemText($hListView, $i, StringTrimLeft($split[4],1),1)
    _EditEsc()
    EndFunc

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

    Func _EditEsc()
    GuiSetState(@SW_HIDE, $EditBox)
    GuiSetState(@SW_ENABLE, $hGui)
    WinActivate($hGui)
    GUIRegisterMsg($WM_ACTIVATE, "")
    HotKeySet('{ESC}')
    HotKeySet('{ENTER}')
    EndFunc

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

    ; #REGISTERED FUNCTIONS# ==================================================================================
    Func WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $hListView And $code = -3 And _GUICtrlListView_GetSelectedCount($hListView) > 0 Then
    For $i = 0 To _GUICtrlListView_GetItemCount($hListView)
    IF _GUICtrlListView_GetItemSelected($hListView, $i) Then
    ShellExecute($filepaths[$i+1])
    EndIf
    Next
    Endif
    Return $GUI_RUNDEFMSG
    EndFunc

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

    Func WM_HVSCROLL($hwnd, $iMsg, $wParam, $lParam)
    Local $hWndFrom, $iCode
    If Not IsHWnd($slider) Then $hWndCombo1 = GUICtrlGetHandle($slider)
    $hWndFrom = $lParam
    $iCode = _WinAPI_HiWord($wParam)
    Switch $hWndFrom
    Case $slider, $hWndCombo1
    GUICtrlSetData($label, "Transparence = " & GUICtrlRead($slider) & "%")
    WinSetTrans("Chaos-Execution", "", 255 - GUICtrlRead($slider) * 2.55)
    EndSwitch
    EndFunc

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

    Func WM_ACTIVATE($hWnd, $Msg, $wParam, $lParam)
    $state = WinGetState($hGui)
    If NOT BitAnd($state, 8) Then
    GuiSetState(@SW_HIDE, $EditBox)
    WinActivate($hGui)
    Else
    GuiSetState(@SW_Show, $EditBox)
    EndIf
    EndFunc

    [/autoit]

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von subzero007 (26. Mai 2009 um 10:57)