NDog Posted November 3, 2017 Share Posted November 3, 2017 Hi there I am making a program to detect if a computer is online or not. I would like the color or a circle in a listview box to change from yellow to red or yellow to green depending if online or not. Is it possible? I have my code so far for testing with. I'm getting stuck with changing the color as it doesn't seem to be able to be done dynamically.. expandcollapse popup#include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <ColorConstants.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <GuiListView.au3> #include <GuiImageList.au3> $hMain = GUICreate("Test", -1, 300, -1, -1, BitOr($WS_SIZEBOX, $WS_SYSMENU, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX), $WS_EX_ACCEPTFILES);x il drag & drop ;;top GUICtrlCreateLabel("Listview colour", 55, 0, 275, 40) GUICtrlSetFont(-1, 24, 400, 0, "Comic Sans MS") GUICtrlSetColor(-1, $COLOR_GREEN) GUICtrlCreateLabel("Testing 123", 200, 40, 120, 18) GUICtrlSetFont(-1, 8, 40, 0, "Comic Sans MS") GUICtrlSetColor(-1, $COLOR_BLUE) ;;body GUICtrlCreateLabel("User:", 25, 68, 30, 16) $inUser = GUICtrlCreateInput("", 56, 66, 83, 21) $btnLookup = GUICtrlCreateButton("Lookup", 150, 60, 75, 33, $BS_DEFPUSHBUTTON) $btnGreen = GUICtrlCreateButton("Green", 230, 60, 43, 33) $btnRed = GUICtrlCreateButton("Red", 275, 60, 43, 33) $listComputers = GUICtrlCreateListView("Name |Model |Serial |OS Install date|HDD", 55, 100, 290, 100, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT, $LVS_SINGLESEL)) GUICtrlSetState($inUser, $GUI_FOCUS) GUISetState(@SW_SHOW) ; Main GUI loop While True $nMsg = GUIGetMsg() Select Case $nMsg = $GUI_EVENT_CLOSE Exit Case $nMsg = $inUser GUICtrlSetState($inUser, $GUI_FOCUS) Case $nMsg = $btnLookup LookupButtonPressed() Case $nMsg = $btnGreen $iIndex = _GUICtrlListView_GetSelectedIndices($listComputers) $machine = _GUICtrlListView_GetItemText($listComputers, Number($iIndex)) ; ; change to green? ;_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($listComputers, 0x00FF00, 16, 16)) ; green Case $nMsg = $btnRed $iIndex = _GUICtrlListView_GetSelectedIndices($listComputers) $machine = _GUICtrlListView_GetItemText($listComputers, Number($iIndex)) ; ; change to red? ;_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($listComputers, 0xFF0000, 16, 16)) ; red EndSelect WEnd Func LookupButtonPressed() _GUICtrlListView_DeleteAllItems($listComputers) ;$aMachines = machine_lookup($user, $searchstring) Local $aMachines[2][5] $aMachines[0][0] = "PC01" $aMachines[0][1] = "HP Compaq 6000" $aMachines[0][2] = "ABC123" $aMachines[0][3] = "01/01/2001" $aMachines[0][4] = "Toshiba HDD" $aMachines[1][0] = "PC02" $aMachines[1][1] = "HP Compaq 6000" $aMachines[1][2] = "XYZ456" $aMachines[1][3] = "01/01/2001" $aMachines[1][4] = "Toshiba HDD" ;_ArrayDisplay($aMachines) If Not @error Then If IsArray($aMachines) Then $sComputers = _ArrayToString($aMachines, " - ") $sComputers = StringReplace($sComputers, @CRLF, "|") ;ConsoleWrite($sComputers & @CRLF) For $i = 0 To UBound($aMachines) - 1 $machine = $aMachines[$i][0] $model = $aMachines[$i][1] $serial = $aMachines[$i][2] $OSInstallDate = $aMachines[$i][3] $HDD = $aMachines[$i][4] _GUICtrlListView_AddItem($listComputers, $machine) _GUICtrlListView_AddSubItem($listComputers, $i, $model,1) _GUICtrlListView_AddSubItem($listComputers, $i, $serial,2) _GUICtrlListView_AddSubItem($listComputers, $i, $OSInstallDate,3) _GUICtrlListView_AddSubItem($listComputers, $i, $OSInstallDate,3) _GUICtrlListView_AddSubItem($listComputers, $i, $HDD,4) $hImage = _GUIImageList_Create(16, 16) _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($listComputers, 0xFFFF00, 16, 16)) ; yellow _GUICtrlListView_SetImageList($listComputers, $hImage, 1) Next _GUICtrlListView_SetItemSelected($listComputers, 0) EndIf EndIf EndFunc Link to comment Share on other sites More sharing options...
Danyfirex Posted November 3, 2017 Share Posted November 3, 2017 Hello. Maybe this? expandcollapse popup#include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <ColorConstants.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <GuiListView.au3> #include <GuiImageList.au3> $hMain = GUICreate("Test", -1, 300, -1, -1, BitOR($WS_SIZEBOX, $WS_SYSMENU, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX), $WS_EX_ACCEPTFILES) ;x il drag & drop ;;top GUICtrlCreateLabel("Listview colour", 55, 0, 275, 40) GUICtrlSetFont(-1, 24, 400, 0, "Comic Sans MS") GUICtrlSetColor(-1, $COLOR_GREEN) GUICtrlCreateLabel("Testing 123", 200, 40, 120, 18) GUICtrlSetFont(-1, 8, 40, 0, "Comic Sans MS") GUICtrlSetColor(-1, $COLOR_BLUE) ;;body GUICtrlCreateLabel("User:", 25, 68, 30, 16) $inUser = GUICtrlCreateInput("", 56, 66, 83, 21) $btnLookup = GUICtrlCreateButton("Lookup", 150, 60, 75, 33, $BS_DEFPUSHBUTTON) $btnGreen = GUICtrlCreateButton("Green", 230, 60, 43, 33) $btnRed = GUICtrlCreateButton("Red", 275, 60, 43, 33) $listComputers = GUICtrlCreateListView("Name |Model |Serial |OS Install date|HDD", 55, 100, 290, 100, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT, $LVS_SINGLESEL)) GUICtrlSetState($inUser, $GUI_FOCUS) GUISetState(@SW_SHOW) ; Main GUI loop While True $nMsg = GUIGetMsg() Select Case $nMsg = $GUI_EVENT_CLOSE Exit Case $nMsg = $inUser GUICtrlSetState($inUser, $GUI_FOCUS) Case $nMsg = $btnLookup LookupButtonPressed() Case $nMsg = $btnGreen $iIndex = _GUICtrlListView_GetSelectedIndices($listComputers) $machine = _GUICtrlListView_GetItemText($listComputers, Number($iIndex)) _GUICtrlListView_SetItemImage($listComputers, $iIndex, 1) ; ; change to green? ;_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($listComputers, 0x00FF00, 16, 16)) ; green Case $nMsg = $btnRed $iIndex = _GUICtrlListView_GetSelectedIndices($listComputers) $machine = _GUICtrlListView_GetItemText($listComputers, Number($iIndex)) _GUICtrlListView_SetItemImage($listComputers, $iIndex, 2) ; ; change to red? ;_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($listComputers, 0xFF0000, 16, 16)) ; red EndSelect WEnd Func LookupButtonPressed() _GUICtrlListView_DeleteAllItems($listComputers) ;$aMachines = machine_lookup($user, $searchstring) Local $aMachines[2][5] $aMachines[0][0] = "PC01" $aMachines[0][1] = "HP Compaq 6000" $aMachines[0][2] = "ABC123" $aMachines[0][3] = "01/01/2001" $aMachines[0][4] = "Toshiba HDD" $aMachines[1][0] = "PC02" $aMachines[1][1] = "HP Compaq 6000" $aMachines[1][2] = "XYZ456" $aMachines[1][3] = "01/01/2001" $aMachines[1][4] = "Toshiba HDD" ;_ArrayDisplay($aMachines) If Not @error Then If IsArray($aMachines) Then $sComputers = _ArrayToString($aMachines, " - ") $sComputers = StringReplace($sComputers, @CRLF, "|") ;ConsoleWrite($sComputers & @CRLF) For $i = 0 To UBound($aMachines) - 1 $machine = $aMachines[$i][0] $model = $aMachines[$i][1] $serial = $aMachines[$i][2] $OSInstallDate = $aMachines[$i][3] $HDD = $aMachines[$i][4] _GUICtrlListView_AddItem($listComputers, $machine) _GUICtrlListView_AddSubItem($listComputers, $i, $model, 1) _GUICtrlListView_AddSubItem($listComputers, $i, $serial, 2) _GUICtrlListView_AddSubItem($listComputers, $i, $OSInstallDate, 3) _GUICtrlListView_AddSubItem($listComputers, $i, $OSInstallDate, 3) _GUICtrlListView_AddSubItem($listComputers, $i, $HDD, 4) $hImage = _GUIImageList_Create(16, 16) _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($listComputers, $COLOR_YELLOW, 16, 16)) ; yellow _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($listComputers, $COLOR_GREEN, 16, 16)) _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($listComputers, $COLOR_RED, 16, 16)) _GUICtrlListView_SetImageList($listComputers, $hImage, 1) Next _GUICtrlListView_SetItemSelected($listComputers, 0) EndIf EndIf EndFunc ;==>LookupButtonPressed Saludos NDog 1 Danysys.com AutoIt... UDFs: VirusTotal API 2.0 UDF - libZPlay UDF - Apps: Guitar Tab Tester - VirusTotal Hash Checker Examples: Text-to-Speech ISpVoice Interface - Get installed applications - Enable/Disable Network connection PrintHookProc - WINTRUST - Mute Microphone Level - Get Connected NetWorks - Create NetWork Connection ShortCut Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted November 3, 2017 Moderators Share Posted November 3, 2017 NDog, Or you could use my GUIListViewEx UDF - the link is in my sig. Here is a simple example showing a colour change in column 1 based on a few simple conditions: expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include "GUIListViewEx.au3" $hGUI = GUICreate("Coloured ListView Example", 500, 300) ; Create ListView $cLV = GUICtrlCreateListView("Column 0|Colourable|Column 2|Column 3", 10, 10, 480, 260, BitOR($LVS_SINGLESEL, $LVS_SHOWSELALWAYS)) For $i = 0 To 3 _GUICtrlListView_SetColumnWidth($cLV, $i, 100) Next ; Initiate ListView = user colours $iLVIndex = _GUIListViewEx_Init($cLV, "", 0, 0, True, 32) ; Set default colours to use Global $aDefCols[4] = ["0x000000", "0xFEFEFE", "0xFFFFFF", "0x0000FF"] _GUIListViewEx_SetDefColours($iLVIndex, $aDefCols) ; If colours used then this function must be run BEFORE GUISetState _GUIListViewEx_MsgRegister() GUISetState() ; Create array and fill listview Global $aLVArray[6][4] For $i = 0 To 5 $sData = "Item " & $i & "-0" $aLVArray[$i][0] = $sData For $j = 1 To 3 $sData &= "|SubItem " & $i & "-" & $j $aLVArray[$i][$j] = "SubItem " & $i & "-" & $j Next _GUIListViewEx_InsertSpec($iLVIndex, 0, $sData) ; Some simple conditions for colour $sColSet = ";0x00FF00" If Mod($i, 2) = 0 Then $sColSet = ";0xFFFF00" ElseIf Mod($i, 3) = 0 Then $sColSet = ";0xFF0000" EndIf ; Set item colour _GUIListViewEx_SetColour($iLVIndex, $sColSet, 0, 1) Next While 1 $iMsg = GUIGetMsg() Switch $iMsg Case $GUI_EVENT_CLOSE Exit EndSwitch $vRet = _GUIListViewEx_EventMonitor() WEnd Any use? M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
NDog Posted November 5, 2017 Author Share Posted November 5, 2017 Thanks @Dannyfirex - I didn't realise the $hImage is just an array (containing images) - wow I will look at your UDF too @Melba23 it looks very easy to use - thanks Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now