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
#include <ListviewConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <SliderConstants.au3>
#Include <GuiListView.au3>
#Include <Array.au3>
#Include <File.au3>
Global $Active = True, $mod = True, $i, $trans = 0
Dim $filepaths[1],$szDrive, $szDir, $szFName, $szExt
$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
$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)
$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)
$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)
;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)
$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")
; #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
; #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
Func _EditEsc()
GuiSetState(@SW_HIDE, $EditBox)
GuiSetState(@SW_ENABLE, $hGui)
WinActivate($hGui)
GUIRegisterMsg($WM_ACTIVATE, "")
HotKeySet('{ESC}')
HotKeySet('{ENTER}')
EndFunc
; #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
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
Func WM_ACTIVATE($hWnd, $Msg, $wParam, $lParam)
$state = WinGetState($hGui)
If NOT BitAnd($state, Then
GuiSetState(@SW_HIDE, $EditBox)
WinActivate($hGui)
Else
GuiSetState(@SW_Show, $EditBox)
EndIf
EndFunc