Jump to content
Sign in to follow this  
jcpetu

ListView Row number

Recommended Posts

Hi people,

I'm trying to implement ListView row number visualization in another ListView, but so far I'm stuck. Here the code, if someone could help I'll appreciate it.

 

#include <Array.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <GuiScrollBars.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>

Opt("GUIOnEventMode", 1)

Global $MainGui, $MsgOk, $MainGuiRefresh, $MainGuiLabelInfo

Global $MainGuiW = @DesktopWidth - 10, $MainGuiH = @DesktopHeight - 90

_GDIPlus_Startup()
Global $Notebook = _GDIPlus_BitmapCreateFromMemory(ScanNew32x32(), True) ;GDI bitmap
Global $Computer = _GDIPlus_BitmapCreateFromMemory(Computer32x32(), True) ;GDI bitmap
_GDIPlus_Shutdown()
;------------------------------------------------------------------------------------------------------------------------------------------------------------------------
$MainGui = GUICreate("Test Sort", 800, 500, 10, 10, BitOR($GUI_SS_DEFAULT_GUI, $WS_CLIPSIBLINGS)) ;
GUISetOnEvent($GUI_EVENT_CLOSE, "EventsCtrl")

$MMenuLVAD = GUICtrlCreateListView("", 60, 82, 661, 321, -1, BitOR($LVS_EX_SUBITEMIMAGES, $LVS_EX_CHECKBOXES, $LVS_EX_FULLROWSELECT, $LVS_EX_HEADERDRAGDROP, $LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER))
$hLVMMenu = GUICtrlGetHandle($MMenuLVAD);
GUICtrlSetOnEvent($MMenuLVAD, "_Setsort")
_GUICtrlListView_RegisterSortCallBack($MMenuLVAD)


$MMenuLVidx = GUICtrlCreateListView("#", 4, 82, 55, 321,  BitOR($LVS_SHOWSELALWAYS, $LVS_SINGLESEL))
_GUICtrlListView_SetExtendedListViewStyle(-1,BitOR($LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER))
$hLVidx = GUICtrlGetHandle($MMenuLVidx);
;_GUIScrollBars_ShowScrollBar($hLVidx, $SB_BOTH, False) ;not working !!!
;;------------------------------------------------------------------------------------------------------------------------------------------------------------------------

;Add columns
_GUICtrlListView_AddColumn($MMenuLVAD, "", 30)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 1", 80, 3)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 2", 80)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 3", 80)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 4", 80)

; Load images
Global $hImage = _GUIImageList_Create(32, 32, 5, 3)
_GUIImageList_Add($hImage, $Computer)
_GUIImageList_Add($hImage, $Notebook)
_GUIImageList_AddIcon($hImage, @SystemDir&"\"&"shell32.dll", 146)
 _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($MMenuLVAD, 0xff442211, 32, 32))

_GUICtrlListView_SetImageList($MMenuLVAD, $hImage, 1) ;   1 - Image list with small icons

GUISetState(@SW_SHOW)

For $i = 0 To 50
    _GUICtrlListView_AddItem($MMenuLVAD, "", 777) ;777 should be an index that not exists in the array
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, "Computer" & Random(13467, 23452, 1), 1, 0)
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, "User" & Random(100, 500, 1), 2, 1)
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, Random(25, 5000, 1), 3,2)
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, Random(1, 800, 1), 4,3)
_GUICtrlListView_AddItem($MMenuLVidx, $i + 1)
Next

$Recidx = _GUICtrlListView_GetItemRect($MMenuLVidx, 0)
$RecidxDim= $Recidx[3] - $Recidx[1]


While 1
    Sleep(10)
WEnd


Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $tNMHDR, $hWndFrom, $iCode
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hLVMMenu,$hLVidx
            ;This two lines to sincronize ListViewRowNumbers------------------------------------------------------------------
            Local $Lines = _SendMessage($hLVMMenu, $LVM_GETTOPINDEX) - _SendMessage($hLVidx, $LVM_GETTOPINDEX)
            _SendMessage($hLVidx, $LVM_SCROLL, 0, $Lines * $RecidxDim)
EndSwitch
EndFunc

Func _Setsort()
    _GUICtrlListView_SortItems($MMenuLVAD, GUICtrlGetState($MMenuLVAD))
EndFunc   ;==>_Setsort

Func EventsCtrl()
    Local $Msg = @GUI_CtrlId
    Switch $Msg
        Case $GUI_EVENT_CLOSE
            _GUICtrlListView_UnRegisterSortCallBack($MMenuLVAD)
            _WinAPI_DeleteObject($Notebook)
            _WinAPI_DeleteObject($Computer)
            GUIDelete()
            Exit
    EndSwitch
EndFunc   ;==>EventsCtrl

Func ScanNew32x32()
    Local $ScanNew32x32png = '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'
    $ScanNew32x32png &= 'bw7XdCI68NShV57/9jNPa1oFbx3/O6avXEEmley4Pjs7f/OZ7/7wxYOU0gFK6YBl21B1DaqhQOcsUJHNGtScLJZyb+vZ8qXCQnoCWShfSODT8LdPjaCjrR2xxoZXJ2ZmDv/iyE/Kn3nI3Bbsbe5cd6hra8/jiQ2dbdFIhDdME0uLi0pqam586uKV1+h8+Q/Osmn81xJ8Hvxb3/j6M59rHEdvYmvH85vv3fK1HTv7pIS/mTT6GqBTHUtd8cDk+vBub1iIXz55DlbYPYprlsndNjggx/ra98c3Rx9q7pY9trNCGmQPHojvxMZoOwROAR9Q+MS2hkRbX8tXfaanGwAn3CY4ALSH2qW+SIvYFg8H0eKJockbQdBTj6gdRNzXiGp9ETyzpEjC01uKCVv0OSSFW4H379sfBRD4uIQaAPvy9TMJOWS3NIR53Bnuwt2NX0JQCoIDQdQbw66WfWjxx3GGHsNkAwvKQZIoNsAj1ALv37ffB+AuAMsAlkZHTpg37wU6JerzmAh4TTT4OLQFIuCIB4QQeAURzUIQFAEEvTb8Hh1ekdTVB4KiUGPsEoAogOSn4QCgrVp5r2WXHGMZGe04xlbSaAvsQnvgUZStJBaUEaTVC1DMKQi6rnOGW/LZISLUUvPRkRPl/n37rwLo79+3nwEoAigAsFaXMtTMLM9ZnfmSYn8QWlDHUe/h4LgPwqTzyFb/huXqGCzLx4yMlaquOJeWM/M5oadrw/+KvQ3AOgCtAGIAqgAyAJIAFAAigFCsdR0rXy9fzDfo92qN/H2bdkjw8FOo2ENg7gLCdQqyJQ/yk0YhO2m8wUv2OQBUWFxcwNE3Zj4K1YfC4WBw9OXfDf2yf9/+hwF0AGgDsAbgOoAUgDOjIydyn7ECFj8ek5GYJzfzb+k7QSruETsnwiSyBN0wkV4uODOT9rWZ89pfi2k2VFi80Q3Jzv7+g4SIg5IoLrvgznwMSgOYBjA3OnKiWMtuyXsg3/+QuL37DvnBTd3CpmiYhAzLpQuL7sLktHX+wrj6fuoKPmnj/wG1Jc98TP5pLwAAAABJRU5ErkJggg=='
    Return Binary(_Base64Decode($ScanNew32x32png))
EndFunc   ;==>_ScanNew32x32png

Func Computer32x32() ;Original OK
    Local $Base64String = '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'
    $Base64String &= 'dMDxj1Yk5K9AX18f/tXRjp4eO4p27ZLWrl0blZ2dvXfNmjW/mTFjhlktPAcGBpT3IbTmr6paxNLbMlhTU/NOa2vrEQLinQTgWFmZMzkpKSZt/nyYzWZxHwh9iYkh8ryd4oBYcN396uu4eJPpDaqSjvDvqgHeeOao1TBPtRgq71RJ1Cq4vLz8zcuXL79FMTMhjkRW0xsQu/6Xvxj58s6XUovNhjiqB1evXs0vI/ZeZaWxq6vL+VR+vmTQ69dRpXyOvI9UDxbRJE8MDW25HmLBt5FaW1vbH0mmyQBoU7TBYEijcZHP5zNRirCIiIgBCqh/Uu8k/T18H2XBDCpWnyUpNq5ateo50t5CcaDnKaUa5WB4zU+sBCmGvqNb1Xbp0qULlF0tBMQzSYIp5uoYXt6rXunIc55fs8jwHGIvnQqZJAIWxxmh/6QcFDv27u7uBwS+h/aPUPfI4TRNAeC/aVJYVwGHV2qPPOCxtscO4N+zbf1+lKO2XAAAAABJRU5ErkJggg=='
    Return Binary(_WinAPI_Base64Decode($Base64String))
EndFunc   ;==>_Base64String

Func _Base64Decode($input_string)
    Local $struct = DllStructCreate("int")
    Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(1, 0, "")
    Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]")
    $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($a, 1)
EndFunc   ;==>_Base64Decode

Func _WinAPI_Base64Decode($sB64String)
    Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "")
    Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]")
    $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($bBuffer, 1)
EndFunc   ;==>_WinAPI_Base64Decode

 

Share this post


Link to post
Share on other sites

I'm not sure what you are asking for exactly.  Can you describe what you mean by "implement ListView row number visualization in another ListView"?


Share this post


Link to post
Share on other sites

Maybe this will help us understand, do you mean like the _ArrayDisplay function, how it displays a column of numbers for the rows?

ex:Capture.thumb.PNG.4ca5e650754aa4681a3247

 

Edited by MikahS

Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4

Feel free to use any of my code for your own use.                                                                                                                                                           Forum FAQ

 

Share this post


Link to post
Share on other sites

Try this:

 

#include <Array.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <GuiScrollBars.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>

Opt("GUIOnEventMode", 1)

Global $MainGui, $MsgOk, $MainGuiRefresh, $MainGuiLabelInfo

Global $MainGuiW = @DesktopWidth - 10, $MainGuiH = @DesktopHeight - 90

_GDIPlus_Startup()
Global $Notebook = _GDIPlus_BitmapCreateFromMemory(ScanNew32x32(), True) ;GDI bitmap
Global $Computer = _GDIPlus_BitmapCreateFromMemory(Computer32x32(), True) ;GDI bitmap
_GDIPlus_Shutdown()
;------------------------------------------------------------------------------------------------------------------------------------------------------------------------
$MainGui = GUICreate("Test Sort", 800, 500, 10, 10, BitOR($GUI_SS_DEFAULT_GUI, $WS_CLIPSIBLINGS)) ;
GUISetOnEvent($GUI_EVENT_CLOSE, "EventsCtrl")

$MMenuLVAD = GUICtrlCreateListView("", 80, 82, 661, 321, -1, BitOR($LVS_EX_SUBITEMIMAGES, $LVS_EX_CHECKBOXES, $LVS_EX_FULLROWSELECT, $LVS_EX_HEADERDRAGDROP, $LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER))
$hLVMMenu = GUICtrlGetHandle($MMenuLVAD);
GUICtrlSetOnEvent($MMenuLVAD, "_Setsort")
_GUICtrlListView_RegisterSortCallBack($MMenuLVAD)


$MMenuLVidx = GUICtrlCreateListView("", 4, 82, 76, 321,  BitOR($LVS_SHOWSELALWAYS, $LVS_SINGLESEL))
_GUICtrlListView_SetExtendedListViewStyle(-1,BitOR($LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER, $LVS_EX_SUBITEMIMAGES))
$hLVidx = GUICtrlGetHandle($MMenuLVidx);
_GUICtrlListView_AddColumn($hLVidx, "#", 52, 1, -1)

;_GUIScrollBars_ShowScrollBar($hLVidx, $SB_BOTH, False) ;not working !!!
;;------------------------------------------------------------------------------------------------------------------------------------------------------------------------

;Add columns
_GUICtrlListView_AddColumn($MMenuLVAD, "", 30)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 1", 80, 3)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 2", 80)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 3", 80)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 4", 80)

; Load images
Global $hImage = _GUIImageList_Create(32, 32, 5, 3)
_GUIImageList_Add($hImage, $Computer)
_GUIImageList_Add($hImage, $Notebook)
_GUIImageList_AddIcon($hImage, @SystemDir&"\"&"shell32.dll", 146)
_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($MMenuLVAD, 0xff442211, 32, 32))

_GUICtrlListView_SetImageList($MMenuLVAD, $hImage, 1) ;   1 - Image list with small icons
_GUICtrlListView_SetImageList($MMenuLVidx, $hImage, 1) ;   1 - Image list with small icons


For $i = 0 To 50
    _GUICtrlListView_AddItem($MMenuLVAD, "", 777) ;777 should be an index that not exists in the array
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, "Computer" & Random(13467, 23452, 1), 1, 0)
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, "User" & Random(100, 500, 1), 2, 1)
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, Random(25, 5000, 1), 3,2)
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, Random(1, 800, 1), 4,3)
    _GUICtrlListView_AddItem($MMenuLVidx, $i, 4)
Next

GUISetState(@SW_SHOW)

$Recidx = _GUICtrlListView_GetItemRect($MMenuLVidx, 0)
$RecidxDim1 = $Recidx[3] - $Recidx[1]

$Recidx = _GUICtrlListView_GetItemRect($MMenuLVAD, 0)
$RecidxDim2 = $Recidx[3] - $Recidx[1]

GUIRegisterMsg($WM_NOTIFY, "WM_Notify")

While 1
    Sleep(10)
WEnd


Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $tNMHDR, $hWndFrom, $iCode
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hLVMMenu
            ;This two lines to sincronize ListViewRowNumbers------------------------------------------------------------------
            Local $Lines = _SendMessage($hLVMMenu, $LVM_GETTOPINDEX) - _SendMessage($hLVidx, $LVM_GETTOPINDEX)
            _SendMessage($hLVidx, $LVM_SCROLL, 0, $Lines * $RecidxDim1)
            Return 0
        Case $hLVidx
            Local $Lines = _SendMessage($hLVidx, $LVM_GETTOPINDEX) - _SendMessage($hLVMMenu, $LVM_GETTOPINDEX)
            _SendMessage($hLVMMenu, $LVM_SCROLL, 0, $Lines * $RecidxDim2)
            Return 0
    EndSwitch
EndFunc

Func _Setsort()
    _GUICtrlListView_SortItems($MMenuLVAD, GUICtrlGetState($MMenuLVAD))
EndFunc   ;==>_Setsort

Func EventsCtrl()
    Local $Msg = @GUI_CtrlId
    Switch $Msg
        Case $GUI_EVENT_CLOSE
            _GUICtrlListView_UnRegisterSortCallBack($MMenuLVAD)
            _WinAPI_DeleteObject($Notebook)
            _WinAPI_DeleteObject($Computer)
            GUIDelete()
            Exit
    EndSwitch
EndFunc   ;==>EventsCtrl

Func ScanNew32x32()
    Local $ScanNew32x32png = 'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3goUAQsnNhcJAQAACIhJREFUWMOtlklwHNUZx/+vt5lpzWg2SSNpLI0sC1k2XoSMwSCM7bCYShVlpTiQrTA4JLmEYCpJkVtcSVVOWZTKjUoAlUOASlIRwVV4iVFiULBiywvY1u4ZjUbbjGbt7untve4cjCkOkDCO+/IO3a9/v/5//b73CG7DNfzO8YOMsQHG2ABlDIwyUEZBKQOldJgyNvzcs4eGPmsu+X/Ax06eOsCYMyjLvo5IKASPJIE5Dmzbhm3bMEwTZUVBNreGiqKkKGOHf/z97711WwSOnTz1a0kUD3d2dED2eXF1chofnB+H6/GYVcKZLqV80GV1XevXIxoJo1QuIzmfhqbrg0d+9IMXbr6Hv1W4v67u8M67erGaW8NLf3yTcuFgZcfDewvp1tjsamPTSrUlkd+xtRcVtYqpiWtCUzjMNTc1Il8s7brngd2h9989feKWEjh28tQBjyQN775vF959bxTnpqa0x77yeNkny3S8tLa4bOgWD867K9wUh8vxJgWnaSaXHB8LNAquNxwKYuzCJWhVbeBXPz3yFlerAGPO4OaN3UilF3Buakp74ptP5iOBgJ0z9UxAEKvd/nr+kVhLzCMQF8R1XLiMkyQWv3t3Je+IBmMONnV3gVI2WHMJht85frA+EHi6s70Nv3l5iH75ySdy9T4fMxjLiRxXCYoSErK/mQcRbNd1bceB7biwHRcWAxRf1Cimpr2d8RZuNZcL9fT2pYTavp4NtMaa8OHEJNbd2VOS6+ps6jg6gOI6X53r4flmg1FesW3GAZwDFyXbtj/K6ealVYMmCw7pNKLORtNs7erowOLyygBXq4BflvHe2TF09W5RbddhK6a+JhDiBgQxKhKOdwHmAKxkW/pYIZc9uZTNXi2pWsVmjBAX15yooqgqWptjoJQO1JQAZQwgBI4kmcTjZYu6prgAi3l8IY1R2XFdt8qYM6tVitcqJTtrmLzjEoE5II4D4jgEFhFclZOthCxLlDHUVoIbnQ2S1+coNnWu6xW9Q/Z7mesGCpbp6oxZc1qluGrqRKGUNyk4i4JQBkIZQB0QvyjwEDyuKIqgtEYByigYY7Ati5utVPWyY3ObAnx9wTKhMWpkdK2iM8oVLYurmIyvWoQzbHCGDXJTpr1OFLw8OFEUwWpNgFIGwzQhMeq5vFJiXU1BWbUYv6KXjYxRrbquK1iOi6rtcppBONUAp5mE02+IENMG1+rlpJiPiIzdSJOrTYAO5wtFbNvUA5LORP2c17ekUufimmZkVSbkNIfPqxBKGuErOnjFILxqEE4zwVUtwq3ze6UuQalrbmpCOrMI6rBhrsafcDiZXkC8OYYN1UJLrqhz46tVM6u4fEElfF4lQkGDUNSIUKoSvlwlnGKAVw3CixDEjfWi7/6w5Y+GQ/jnB2fBmFObwHPPHhrK5fOpbD6PvX3bRe3qxWimxEhBJUJeI0JBJUJBJXxRI3xRI0K5CqGiE54xXtgerZN3+/Kh3jsSwlxqHhMzs6l3Xj86VHMrDgWDRy58eAV1sg+PrG8Kb8tNJzSFSQWVCHmV8AXtRgoljfClKuEliNKDMTnwaN1a5LHNLbJHkvDS0dfgMHb4ljajueTcntPv/esfFVXD3vt3wbIsnJ9NW6dVf24CUUVzBMdmQEgShXaZ997j1wMPNLDAPT0bBEkS8eLPfo65ZGrw5J9efwHAF18FjuPsmUteD1348PKR0yMjgONC0zTcd/cOPNy3RdqpKPHVXB5LFm/wktcNSRzfLHNSW2srGqMRTM7O4be/fwUrq9lP4F9Y4MBTh15JpdNPT81O48/DxzA/N/dquZA/HE8k9h47dXqwqaGhY/vmHnQm2rBVlr08z4NSiny+gNGxs3j/7DnMpObTPMc9f+ov'
    $ScanNew32x32png &= 'bw7XdCI68NShV57/9jNPa1oFbx3/O6avXEEmley4Pjs7f/OZ7/7wxYOU0gFK6YBl21B1DaqhQOcsUJHNGtScLJZyb+vZ8qXCQnoCWShfSODT8LdPjaCjrR2xxoZXJ2ZmDv/iyE/Kn3nI3Bbsbe5cd6hra8/jiQ2dbdFIhDdME0uLi0pqam586uKV1+h8+Q/Osmn81xJ8Hvxb3/j6M59rHEdvYmvH85vv3fK1HTv7pIS/mTT6GqBTHUtd8cDk+vBub1iIXz55DlbYPYprlsndNjggx/ra98c3Rx9q7pY9trNCGmQPHojvxMZoOwROAR9Q+MS2hkRbX8tXfaanGwAn3CY4ALSH2qW+SIvYFg8H0eKJockbQdBTj6gdRNzXiGp9ETyzpEjC01uKCVv0OSSFW4H379sfBRD4uIQaAPvy9TMJOWS3NIR53Bnuwt2NX0JQCoIDQdQbw66WfWjxx3GGHsNkAwvKQZIoNsAj1ALv37ffB+AuAMsAlkZHTpg37wU6JerzmAh4TTT4OLQFIuCIB4QQeAURzUIQFAEEvTb8Hh1ekdTVB4KiUGPsEoAogOSn4QCgrVp5r2WXHGMZGe04xlbSaAvsQnvgUZStJBaUEaTVC1DMKQi6rnOGW/LZISLUUvPRkRPl/n37rwLo79+3nwEoAigAsFaXMtTMLM9ZnfmSYn8QWlDHUe/h4LgPwqTzyFb/huXqGCzLx4yMlaquOJeWM/M5oadrw/+KvQ3AOgCtAGIAqgAyAJIAFAAigFCsdR0rXy9fzDfo92qN/H2bdkjw8FOo2ENg7gLCdQqyJQ/yk0YhO2m8wUv2OQBUWFxcwNE3Zj4K1YfC4WBw9OXfDf2yf9/+hwF0AGgDsAbgOoAUgDOjIydyn7ECFj8ek5GYJzfzb+k7QSruETsnwiSyBN0wkV4uODOT9rWZ89pfi2k2VFi80Q3Jzv7+g4SIg5IoLrvgznwMSgOYBjA3OnKiWMtuyXsg3/+QuL37DvnBTd3CpmiYhAzLpQuL7sLktHX+wrj6fuoKPmnj/wG1Jc98TP5pLwAAAABJRU5ErkJggg=='
    Return Binary(_Base64Decode($ScanNew32x32png))
EndFunc   ;==>_ScanNew32x32png

Func Computer32x32() ;Original OK
    Local $Base64String = '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'
    $Base64String &= 'dMDxj1Yk5K9AX18f/tXRjp4eO4p27ZLWrl0blZ2dvXfNmjW/mTFjhlktPAcGBpT3IbTmr6paxNLbMlhTU/NOa2vrEQLinQTgWFmZMzkpKSZt/nyYzWZxHwh9iYkh8ryd4oBYcN396uu4eJPpDaqSjvDvqgHeeOao1TBPtRgq71RJ1Cq4vLz8zcuXL79FMTMhjkRW0xsQu/6Xvxj58s6XUovNhjiqB1evXs0vI/ZeZaWxq6vL+VR+vmTQ69dRpXyOvI9UDxbRJE8MDW25HmLBt5FaW1vbH0mmyQBoU7TBYEijcZHP5zNRirCIiIgBCqh/Uu8k/T18H2XBDCpWnyUpNq5ateo50t5CcaDnKaUa5WB4zU+sBCmGvqNb1Xbp0qULlF0tBMQzSYIp5uoYXt6rXunIc55fs8jwHGIvnQqZJAIWxxmh/6QcFDv27u7uBwS+h/aPUPfI4TRNAeC/aVJYVwGHV2qPPOCxtscO4N+zbf1+lKO2XAAAAABJRU5ErkJggg=='
    Return Binary(_WinAPI_Base64Decode($Base64String))
EndFunc   ;==>_Base64String

Func _Base64Decode($input_string)
    Local $struct = DllStructCreate("int")
    Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(1, 0, "")
    Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]")
    $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($a, 1)
EndFunc   ;==>_Base64Decode

Func _WinAPI_Base64Decode($sB64String)
    Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "")
    Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]")
    $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($bBuffer, 1)
EndFunc   ;==>_WinAPI_Base64Decode

Currently I don't know to how to set the height of the cells in the left listview properly. I did it by adding also icons to the listview with the same size as in the right listview.

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

Uez, thanks a lot.

yes this is what I was trying to do.

is it possible to hide the scroll bars?

Share this post


Link to post
Share on other sites

Both scrollbars of row listview, I attempeted to use without results:

_GUIScrollBars_ShowScrollBar($hLVidx, $SB_BOTH, False) ;not working !!!

Share this post


Link to post
Share on other sites

Try this:

#include <Array.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <GuiScrollBars.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>

Opt("GUIOnEventMode", 1)

Global $MainGui, $MsgOk, $MainGuiRefresh, $MainGuiLabelInfo

Global $MainGuiW = @DesktopWidth - 10, $MainGuiH = @DesktopHeight - 90

_GDIPlus_Startup()
Global $Notebook = _GDIPlus_BitmapCreateFromMemory(ScanNew32x32(), True) ;GDI bitmap
Global $Computer = _GDIPlus_BitmapCreateFromMemory(Computer32x32(), True) ;GDI bitmap
_GDIPlus_Shutdown()
;------------------------------------------------------------------------------------------------------------------------------------------------------------------------
$MainGui = GUICreate("Test Sort", 800, 500, 10, 10, BitOR($GUI_SS_DEFAULT_GUI, $WS_CLIPSIBLINGS)) ;
GUISetOnEvent($GUI_EVENT_CLOSE, "EventsCtrl")

$MMenuLVAD = GUICtrlCreateListView("", 80, 82, 661, 321, -1, BitOR($LVS_EX_SUBITEMIMAGES, $LVS_EX_CHECKBOXES, $LVS_EX_FULLROWSELECT, $LVS_EX_HEADERDRAGDROP, $LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER))
$hLVMMenu = GUICtrlGetHandle($MMenuLVAD);
GUICtrlSetOnEvent($MMenuLVAD, "_Setsort")
_GUICtrlListView_RegisterSortCallBack($MMenuLVAD)


$MMenuLVidx = GUICtrlCreateListView("", 4, 82, 76, 321,  BitOR($LVS_SHOWSELALWAYS, $LVS_SINGLESEL))
_GUICtrlListView_SetExtendedListViewStyle(-1,BitOR($LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER, $LVS_EX_SUBITEMIMAGES))
$hLVidx = GUICtrlGetHandle($MMenuLVidx);

$iDLLUser32 = DllOpen("user32.dll")
$wProcNewLV = DllCallbackRegister("_LVWndProc", "ptr", "hwnd;uint;wparam;lparam")
$wProcOldLV = _WinAPI_SetWindowLong($hLVMMenu, $GWL_WNDPROC, DllCallbackGetPtr($wProcNewLV))
$wProcOldLV2 = _WinAPI_SetWindowLong($hLVidx, $GWL_WNDPROC, DllCallbackGetPtr($wProcNewLV))


_GUICtrlListView_AddColumn($hLVidx, "#", 52, 1, -1)

;_GUIScrollBars_ShowScrollBar($hLVidx, $SB_BOTH, False) ;not working !!!
;;------------------------------------------------------------------------------------------------------------------------------------------------------------------------

;Add columns
_GUICtrlListView_AddColumn($MMenuLVAD, "", 30)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 1", 80, 3)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 2", 80)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 3", 80)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 4", 80)

; Load images
Global $hImage = _GUIImageList_Create(32, 32, 5, 3)
_GUIImageList_Add($hImage, $Computer)
_GUIImageList_Add($hImage, $Notebook)
_GUIImageList_AddIcon($hImage, @SystemDir&"\"&"shell32.dll", 146)
_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($MMenuLVAD, 0xff442211, 32, 32))

_GUICtrlListView_SetImageList($MMenuLVAD, $hImage, 1) ;   1 - Image list with small icons
_GUICtrlListView_SetImageList($MMenuLVidx, $hImage, 1) ;   1 - Image list with small icons


For $i = 0 To 50
    _GUICtrlListView_AddItem($MMenuLVAD, "", 777) ;777 should be an index that not exists in the array
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, "Computer" & Random(13467, 23452, 1), 1, 0)
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, "User" & Random(100, 500, 1), 2, 1)
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, Random(25, 5000, 1), 3,2)
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, Random(1, 800, 1), 4,3)
    _GUICtrlListView_AddItem($MMenuLVidx, $i, 4)
Next

GUISetState(@SW_SHOW)

$Recidx = _GUICtrlListView_GetItemRect($MMenuLVidx, 0)
$RecidxDim1 = $Recidx[3] - $Recidx[1]

$Recidx = _GUICtrlListView_GetItemRect($MMenuLVAD, 0)
$RecidxDim2 = $Recidx[3] - $Recidx[1]

GUIRegisterMsg($WM_NOTIFY, "WM_Notify")

While 1
    Sleep(10)
WEnd


Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $tNMHDR, $hWndFrom, $iCode
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hLVMMenu
            ;This two lines to sincronize ListViewRowNumbers------------------------------------------------------------------
            Local $Lines = _SendMessage($hLVMMenu, $LVM_GETTOPINDEX) - _SendMessage($hLVidx, $LVM_GETTOPINDEX)
            _SendMessage($hLVidx, $LVM_SCROLL, 0, $Lines * $RecidxDim1)
            Return 0
        Case $hLVidx
            Local $Lines = _SendMessage($hLVidx, $LVM_GETTOPINDEX) - _SendMessage($hLVMMenu, $LVM_GETTOPINDEX)
            _SendMessage($hLVMMenu, $LVM_SCROLL, 0, $Lines * $RecidxDim2)
            Return 0
    EndSwitch
EndFunc

Func _LVWndProc($hWnd, $Msg, $wParam, $lParam)
    #forceref $hWnd, $Msg, $wParam, $lParam
    Switch $Msg
        Case $WM_NCCALCSIZE
            _RemoveVHScroll($hWnd)
        Case $WM_WINDOWPOSCHANGING
            Local $tWINDOWPOS = DllStructCreate($tagWINDOWPOS, $lParam)
            ;uncomment for mouse scrolling - no mouse scrolling without, but border is not erased (vertical key scrolling flickers visibly))
            DllStructSetData($tWINDOWPOS, "Flags", BitAND(DllStructGetData($tWINDOWPOS, "Flags"), BitNOT($SWP_FRAMECHANGED)))
    EndSwitch
    ;pass the unhandled messages to default WindowProc
    Local $aResult = DllCall($iDLLUser32, "lresult", "CallWindowProcW", "ptr", $wProcOldLV, "hwnd", $hWnd, "uint", $Msg, "wparam", $wParam, "lparam", $lParam)
    If @error Then Return -1
    Return $aResult[0]
EndFunc   ;==>_LVWndProc

Func _RemoveVHScroll($hWnd)
    Local $iLVStyle = _WinAPI_GetWindowLong($hWnd, $GWL_STYLE)
    $iLVStyle = BitAND($iLVStyle, BitNOT($WS_VSCROLL))
    $iLVStyle = BitAND($iLVStyle, BitNOT($WS_HSCROLL))
    _WinAPI_SetWindowLong($hWnd, $GWL_STYLE, $iLVStyle)
EndFunc   ;==>_RemoveVHScroll


Func _Setsort()
    _GUICtrlListView_SortItems($MMenuLVAD, GUICtrlGetState($MMenuLVAD))
EndFunc   ;==>_Setsort

Func EventsCtrl()
    Local $Msg = @GUI_CtrlId
    Switch $Msg
        Case $GUI_EVENT_CLOSE
            If $wProcOldLV Then _WinAPI_SetWindowLong($hLVMMenu, $GWL_WNDPROC, $wProcOldLV)
            If $wProcOldLV2 Then _WinAPI_SetWindowLong($hLVidx, $GWL_WNDPROC, $wProcOldLV2)
            DllCallbackFree($wProcNewLV)
            GUIDelete($MainGui)
            DllClose($iDLLUser32)
            _GUICtrlListView_UnRegisterSortCallBack($MMenuLVAD)
            _WinAPI_DeleteObject($Notebook)
            _WinAPI_DeleteObject($Computer)
            Exit
    EndSwitch
EndFunc   ;==>EventsCtrl

Func ScanNew32x32()
    Local $ScanNew32x32png = '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'
    $ScanNew32x32png &= 'bw7XdCI68NShV57/9jNPa1oFbx3/O6avXEEmley4Pjs7f/OZ7/7wxYOU0gFK6YBl21B1DaqhQOcsUJHNGtScLJZyb+vZ8qXCQnoCWShfSODT8LdPjaCjrR2xxoZXJ2ZmDv/iyE/Kn3nI3Bbsbe5cd6hra8/jiQ2dbdFIhDdME0uLi0pqam586uKV1+h8+Q/Osmn81xJ8Hvxb3/j6M59rHEdvYmvH85vv3fK1HTv7pIS/mTT6GqBTHUtd8cDk+vBub1iIXz55DlbYPYprlsndNjggx/ra98c3Rx9q7pY9trNCGmQPHojvxMZoOwROAR9Q+MS2hkRbX8tXfaanGwAn3CY4ALSH2qW+SIvYFg8H0eKJockbQdBTj6gdRNzXiGp9ETyzpEjC01uKCVv0OSSFW4H379sfBRD4uIQaAPvy9TMJOWS3NIR53Bnuwt2NX0JQCoIDQdQbw66WfWjxx3GGHsNkAwvKQZIoNsAj1ALv37ffB+AuAMsAlkZHTpg37wU6JerzmAh4TTT4OLQFIuCIB4QQeAURzUIQFAEEvTb8Hh1ekdTVB4KiUGPsEoAogOSn4QCgrVp5r2WXHGMZGe04xlbSaAvsQnvgUZStJBaUEaTVC1DMKQi6rnOGW/LZISLUUvPRkRPl/n37rwLo79+3nwEoAigAsFaXMtTMLM9ZnfmSYn8QWlDHUe/h4LgPwqTzyFb/huXqGCzLx4yMlaquOJeWM/M5oadrw/+KvQ3AOgCtAGIAqgAyAJIAFAAigFCsdR0rXy9fzDfo92qN/H2bdkjw8FOo2ENg7gLCdQqyJQ/yk0YhO2m8wUv2OQBUWFxcwNE3Zj4K1YfC4WBw9OXfDf2yf9/+hwF0AGgDsAbgOoAUgDOjIydyn7ECFj8ek5GYJzfzb+k7QSruETsnwiSyBN0wkV4uODOT9rWZ89pfi2k2VFi80Q3Jzv7+g4SIg5IoLrvgznwMSgOYBjA3OnKiWMtuyXsg3/+QuL37DvnBTd3CpmiYhAzLpQuL7sLktHX+wrj6fuoKPmnj/wG1Jc98TP5pLwAAAABJRU5ErkJggg=='
    Return Binary(_Base64Decode($ScanNew32x32png))
EndFunc   ;==>_ScanNew32x32png

Func Computer32x32() ;Original OK
    Local $Base64String = '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'
    $Base64String &= 'dMDxj1Yk5K9AX18f/tXRjp4eO4p27ZLWrl0blZ2dvXfNmjW/mTFjhlktPAcGBpT3IbTmr6paxNLbMlhTU/NOa2vrEQLinQTgWFmZMzkpKSZt/nyYzWZxHwh9iYkh8ryd4oBYcN396uu4eJPpDaqSjvDvqgHeeOao1TBPtRgq71RJ1Cq4vLz8zcuXL79FMTMhjkRW0xsQu/6Xvxj58s6XUovNhjiqB1evXs0vI/ZeZaWxq6vL+VR+vmTQ69dRpXyOvI9UDxbRJE8MDW25HmLBt5FaW1vbH0mmyQBoU7TBYEijcZHP5zNRirCIiIgBCqh/Uu8k/T18H2XBDCpWnyUpNq5ateo50t5CcaDnKaUa5WB4zU+sBCmGvqNb1Xbp0qULlF0tBMQzSYIp5uoYXt6rXunIc55fs8jwHGIvnQqZJAIWxxmh/6QcFDv27u7uBwS+h/aPUPfI4TRNAeC/aVJYVwGHV2qPPOCxtscO4N+zbf1+lKO2XAAAAABJRU5ErkJggg=='
    Return Binary(_WinAPI_Base64Decode($Base64String))
EndFunc   ;==>_Base64String

Func _Base64Decode($input_string)
    Local $struct = DllStructCreate("int")
    Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(1, 0, "")
    Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]")
    $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($a, 1)
EndFunc   ;==>_Base64Decode

Func _WinAPI_Base64Decode($sB64String)
    Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "")
    Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]")
    $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($bBuffer, 1)
EndFunc   ;==>_WinAPI_Base64Decode

 

I'm not sure whether I initialized the callback properly but it works for me. 


Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Dan_555
      Hi.
      I'm using the FreeCommander XE file manager here, and i'v written a script, which will create an empty, new file, after choosing an extension out from the Listbox.
       
      The listview code  is not mine, iv found the scripts somewhere on this forum. I have no credits in it, because it was intended to be only for my personal use.
      But now, i have a lot of free time, so i remembered that i haven't posted anything on this forum, yet, so here is my first script:
      It should be compiled with the Autoit v3.3.14.3 .
      The compiled exe needs a folder passed as a parameter, so that it know where to create the new file.
      A Listbox is opened, with a selection of available extensions.
      After selecting and doubleclicking (or using the ok button), the script creates a filename (if specified in the config file) with increased numbers (up to 9999).
      If the filename exist, the counter is checking the next number, until the maximum is reached.
      This script uses an ini file for configuration, called "NewFile.ini" which should be in the same folder, as the compiled exe.
      NewFile.au3
      #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GuiListView.au3> #include <String.au3> #include <WinAPIFiles.au3> #include <Array.au3> #include <EditConstants.au3> #include <GuiEdit.au3> #include <ScrollBarsConstants.au3> Global $test[0][2], $hFile, $cmd = "", $cmdtmp, $tmptxt, $tmpinidir, $filesetting, $MouseX, $MouseY, $UseMouseX, $UseMouseY, $Edit1 Global $aArray[1] = [] $cmdtmp = StringReplace($cmdlineraw, Chr(34), "") If StringLen($cmdtmp) = 2 Then     If StringRight($cmdtmp, 1) = ":" Then         $cmd = $cmdtmp & "\"     EndIf Else     If StringRight($cmdtmp, 1) <> "\" Or StringRight($cmdtmp, 1) <> "/" Then         $cmd = $cmdtmp & "\"     EndIf EndIf If Not FileExists($cmd) Then                    ;Check if the folder exists, display an error message if not !     DisplayReadMe(1)     Exit EndIf If StringLen(@ScriptDir) > 3 And StringRight(@ScriptDir, 1) <> "\" Then     $tmpinidir = @ScriptDir & "\" Else     $tmpinidir = @ScriptDir EndIf Local Const $sFilePath = $tmpinidir & "NewFile.ini" $filesetting = IniRead($sFilePath, "setting", "filename", "MyNewFile") $filesetting = StringReplace($filesetting, ">", " ") ;msgbox (0,"",$filesetting)  ;Debugging If FileExists($sFilePath) Then     $aArray = IniReadSectionNames($sFilePath) ; Read the INI section names. This will return a 1 dimensional array. EndIf $UseMouseX = IniRead($sFilePath, "setting", "UseMouseX", "1") $UseMouseY = IniRead($sFilePath, "setting", "UseMouseY", "0") ; Check if an error occurred. If Not @error Then     ; Enumerate through the array displaying the section names.     Local $count = 0     If FileExists($sFilePath) Then         For $i = 1 To $aArray[0]             $tmp1 = IniRead($sFilePath, $aArray[$i], "1", "none")             If $tmp1 <> "none" And StringLeft($tmp1, 1) = "." Then            ;Extension need to have a dot, or it will be ignored !                 $tmptxt = $tmptxt & $tmp1 & "|" & $aArray[$i] & @CRLF                 $count = $count + 1                                            ;Count how many extensions are added !             EndIf         Next     EndIf     If $count = 0 Then $tmptxt = ".au3|AutoIt 3" & @CRLF & ".txt|Text File" & @CRLF     ;MsgBox($MB_SYSTEMMODAL,"",$tmptxt)     _ArrayAdd($test, $tmptxt, 0, "|", @CRLF) Else                                                            ;Reading the ini failed, create a default array for the extensions     $tmptxt = ".au3|AutoIt 3" & @CRLF & ".txt|Text" & @CRLF     _ArrayAdd($test, $tmptxt, 0, "|", @CRLF) EndIf ;Local $test[5][2] = [['.au3', 'AutoIt'], ['.ahk', 'Auto Hotkey'], ['.txt', 'text'], ['.sdlbas', 'Sdl Basic'], ['.html', 'Webpage']] If $UseMouseX = 1 Then     $MouseX = MouseGetPos(0) Else     $MouseX = -1 EndIf If $UseMouseY = 1 Then     $MouseY = MouseGetPos(1) Else     $MouseY = -1 EndIf $Form1 = GUICreate("Create New File", 210, 247, $MouseX, $MouseY, $WS_CAPTION, $WS_EX_TOOLWINDOW) $List = GUICtrlCreateListView("", 5, 5, 200, 200) _GUICtrlListView_InsertColumn($List, 0, "Extension", 65) _GUICtrlListView_InsertColumn($List, 1, "Description", 115) _GUICtrlListView_AddArray($List, $test) GUICtrlCreateLabel("Example:" & $filesetting & "0000.ext", 5, 205) $Button1 = GUICtrlCreateButton("Ok", 16, 224, 45, 22) $Button3 = GUICtrlCreateButton("ReadMe", 80, 224, 55, 22) $Button2 = GUICtrlCreateButton("Cancel", 150, 224, 45, 22) $cDummy = GUICtrlCreateDummy() GUISetState(@SW_SHOW) GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") While 1     $nMsg = GUIGetMsg()     Switch $nMsg         Case $GUI_EVENT_CLOSE, $Button2             Exit         Case $Button3             DisplayReadMe(0)         Case $Button1, $cDummy             Local $tmptxt = StringSplit(_GUICtrlListView_GetItemTextString($List), "|")[1]             If StringLen($tmptxt) > 0 Then                 Local $fnr = 0, $tmpfile = ""                 While $fnr < 10000                     $tmpfile = $cmd & $filesetting & _StringRepeat("0", 4 - StringLen($fnr)) & $fnr & $tmptxt                     ;MsgBox(0,"",$tmpfile) ; for debugging                     If Not (FileExists($tmpfile)) Then                         $hFile = _WinAPI_CreateFile($tmpfile, 0)                         _WinAPI_CloseHandle($hFile)                         Exit                     EndIf                     $fnr = $fnr + 1                 WEnd             EndIf     EndSwitch WEnd ;================================================================================ Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)     Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView     $hWndListView = $List     If Not IsHWnd($List) Then $hWndListView = GUICtrlGetHandle($List)     $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)     $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))     $iCode = DllStructGetData($tNMHDR, "Code")     Switch $hWndFrom         Case $hWndListView             Switch $iCode                 Case $NM_DBLCLK                     ; Fire the dummy if the ListView is double clicked                     GUICtrlSendToDummy($cDummy)             EndSwitch     EndSwitch     Return $GUI_RUNDEFMSG EndFunc   ;==>WM_NOTIFY Func DisplayReadMe($err)     Local $Form1 = GUICreate("Read Me", 550, 400, 10, 10, BitOR($WS_CAPTION, $WS_THICKFRAME ,$WS_MAXIMIZEBOX))     $Edit1 = GUICtrlCreateEdit("", 0, 0, 549, 399)     GUICtrlSetData(-1, "")     GUISetState(@SW_SHOW)     If $err=1 then         local $txttmp01="Error: Path does not exist"         local $txttmp02="Commandline call was: "         AddText ($txttmp01)         Addtext ($txttmp02 & $cmd & @CRLF & @CRLF)     EndIf     AddText("Instructions:" & @CRLF)     AddText("Displays a selection of available extensions and then creates a new file at the Path's location." & @CRLF & @CRLF & "Usage: NewFile Path")     AddText("Example: NewFile c:\myfolder\" & @CRLF)     AddText("Result: A file with a name 'MyFile0000.ext' will be created at the Path's location.")     AddText("If the filename exists, the number counter will increase, until it finds a free number, up to 9999." & @CRLF)     AddText("Uses a configuration file in the .exe folder named NewFile.ini !" & @CRLF)     AddText("Example of a config file:" & @CRLF)     AddText("[setting]" & @CRLF & "filename=MyFile>")     AddText("UseMouseX=0                ;0 or 1 - position the dialog at the mouse x coordinate - usefull for multi monitor settings !")     AddText("UseMouseY=0                ;0 or 1 - Set this and UseMouseX to spawn the dialog at the mouse coordinates !" & @CRLF)     AddText(";Use > in filename as a space char ! (only needed if you want the space char at the beginning or at the end : in between filename and the number)" & @CRLF)     AddText(";Format for this ini file is:" & @CRLF & ";Name              e.g [Auto It]")     AddText(";extension       e.g 1=.au3" & @CRLF & "; p.s. only 1 extension per section ! the number must be 1" & @CRLF)     AddText("[AutoIt3]" & @CRLF & "1=.au3" & @CRLF & @CRLF & "[Text]" & @CRLF & "1=.txt")     _GUICtrlEdit_SetSel($Edit1, 0, 0)     _GUICtrlEdit_Scroll($Edit1, $SB_SCROLLCARET)     If $err=1 Then         _GUICtrlEdit_SetSel($Edit1, 0, StringLen($txttmp01 & $txttmp02 & $cmd)+5)     EndIf     While 1         $nMsg = GUIGetMsg()         Switch $nMsg             Case $GUI_EVENT_CLOSE                 GUIDelete($Form1)                 ExitLoop         EndSwitch     WEnd EndFunc   ;==>DisplayReadMe Func AddText($edittxt)     _GUICtrlEdit_AppendText($Edit1, $edittxt & @CRLF) EndFunc   ;==>AddText  
       NewFile.ini
      [setting] filename=MyNewFile_ UseMouseX=0                ;0 or 1 - position the dialog at the mouse x coordinate - usefull for multi monitor settings ! UseMouseY=0                ;0 or 1 - Set this and UseMouseX to spawn the dialog at the mouse coordinates ! ;Use > in filename as a space char ! (only needed if you want the space char at the beginning or at the end : in between filename and the number) ;Format for this ini file is: ;Name              e.g [Auto It] ;extension       e.g 1=.au3 ; p.s. only 1 extension per section ! the number must be 1 [AutoIt3] 1=.au3 [Auto Hotkey] 1=.ahk [Text] 1=.txt [Sdl Basic] 1=.sdlbas [Webpage] 1=.html [Basic] 1=.bas [Pascal] 1=.pas [Rich Text (RTF)] 1=.rtf [Word Document] 1=.doc [Hex File] 1=.hex
    • By Miliardsto
      I have the following code. You can see there are $color_normal and $color_trans
      In my case normal is too dark . And color trans is to much violet.
      If you run it you will see how its looks. I want gui with listView have the same color like taskbar in windows 10.
      How to achieve that?
       
       
      #include <Date.au3> #include <MsgBoxConstants.au3> #include <GuiListBox.au3> #include <WindowsConstants.au3> #include <GUIConstantsEx.au3> #include <GuiListView.au3> HotKeySet("{ESC}", "Terminate") $color_normal = "0x" & StringLeft(StringRight(RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Accent", "AccentPalette"), 24), 6) $color_trans = "0x" & StringLeft(StringRight(RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Accent", "AccentPalette"), 16), 6) $trans = RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize", "EnableTransparency") ConsoleWrite("Transpart = " & $trans & @CRLF) ConsoleWrite("Color normal = " & $color_normal & @CRLF) ConsoleWrite("Color trans = " & $color_trans & @CRLF) ConsoleWrite(_Get_taskbar_color()); It return AARRGGBB $taskbarColor = _Get_taskbar_color() Global $gui = GUICreate("Test", 150, 58,@DesktopWidth-300,@DesktopHeight-58,$WS_POPUP,BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW)) Global $idListview = GUICtrlCreateListView("", 0, 0, 150, 58,BitOR($LBS_NOTIFY,$LBS_SORT), 0) ;_GuiCtrlMakeTrans(-1,100) ; Add column _GUICtrlListView_AddColumn($idListview, "Msgs", 100) GUICtrlSetFont(-1, 7, 400, 0, "Segoe UI") GUICtrlSetColor(-1, 0x470C4F) GUICtrlSetBkColor($idListview, 0x310638) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func Terminate() Exit EndFunc Func _Get_taskbar_color() If RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize", "ColorPrevalence") Then If RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize", "EnableTransparency") Then Return "0xD9" & StringLeft(StringRight(RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Accent", "AccentPalette"), 16), 6) Else Return "0xFF" & StringLeft(StringRight(RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Accent", "AccentPalette"), 24), 6) EndIf Else If RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize", "EnableTransparency") Then Return "0xD9000000" Else Return "0xFF000000" EndIf EndIf EndFunc  
    • By Slipk
      Hello everybody,
      #include <GUIConstantsEx.au3> #include <ListViewConstants.au3> #include <WindowsConstants.au3> #include <GUIListViewEx.au3> $Form1 = GUICreate("Form1", 539, 350, 192, 124) $ListView1 = GUICtrlCreateListView("CLM1|CLM2", 0, 0, 538, 326) GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 150) GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 150) Local $dynamic = GUICtrlCreateListViewItem("Example1|Example2", $ListView1) $SubMenu = GUICtrlCreateContextMenu($dynamic) $Run = GUICtrlCreateMenuItem("Run", $SubMenu) $Edit = GUICtrlCreateMenuItem("Edit", $SubMenu) $Delete = GUICtrlCreateMenuItem("Delete", $SubMenu) Local $dynamic2 = GUICtrlCreateListViewItem("Example3|Example6", $ListView1) $SubMenu = GUICtrlCreateContextMenu($dynamic2) $Run = GUICtrlCreateMenuItem("Run", $SubMenu) $Edit = GUICtrlCreateMenuItem("Edit", $SubMenu) $Delete = GUICtrlCreateMenuItem("Delete", $SubMenu) _GUIListViewEx_Init($ListView1, "", 0, 0, True, 64) _GUIListViewEx_MsgRegister() GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd I use GUIListViewEx.au3 for position of items in listview but when I move one the context menu disappear. Any solution of this?
      Any method than array it is possible?
      Thank you, appreciate it.
       
       
    • By Slipk
      Hello everybody,
      I download the GUIListViewEx.au3 by Melba23 in order to move up or down my items from a listview.
      Everything it's looking good in script but when I move an item it will crash.
      Any suggestions?
      Thank you! 

    • By Slipk
      Hello everybody,
      Sorry for my bad english.
       
      I try to figure out if I have a dynamic listview with as many items as I want, how to save to a text file all the data listview contains in the same form that you put when you create a listviewitem. I will give you an example.
      When the script is running it will show you the listview and some items. How to take the items data "Data1|Data1_Sub1|Data1_Sub2" in this format and paste into a text file? All of them.
      I tried to explain as good as I can.
      Thank you for your attention!
      #include <GUIConstantsEx.au3> #include <ListViewConstants.au3> #include <WindowsConstants.au3> $Form_Menu = GUICreate("Form Example", 351, 234, -1, -1) $Form_Menu_ListView1 = GUICtrlCreateListView("Column #1|Column #2|Column #3", 0, 0, 346, 230) GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 75) GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 75) GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 75) GUICtrlCreateListViewItem("Data1|Data1_Sub1|Data1_Sub2", $Form_Menu_ListView1) GUICtrlCreateListViewItem("Data2|Data2_Sub1|Data2_Sub2", $Form_Menu_ListView1) GUICtrlCreateListViewItem("DataN|DataN_SubN|DataN_SubN", $Form_Menu_ListView1) ;The data that appear in the listview be saved in a file like that : #cs Data1|Data1_Sub1|Data1_Sub2 Data2|Data2_Sub1|Data2_Sub2 DataN|DataN_SubN|DataN_SubN #ce GUISetState(@SW_SHOW, $Form_Menu) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd
×
×
  • Create New...