Listview und Bild Position

  • Kann mir jemand ein Tipp geben wie ich die Listview und das bild was ich einfüge Per Maus Klick die Grösse ändern und die Position bestimmen kann?
    weil mein Bild was ich einfüge landet hinter der listview, ich will die position und grösse frei definieren können?!


    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 $inspic
    $message = "Bild auswählen"
    $bild = FileOpenDialog($message, @WindowsDir & "\", "Bilder (*.jpg;*.bmp)", 1 + 4 )
    $Pic=GUICtrlCreatePic($bild, 150, 150)
    ;GUISetState(@SW_SHOW)
    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

    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 12:47)