找回密码
 加入
搜索
楼主: ipmitool

[AU3基础] [已解决]如何讓 listview 裡面偵測到 AAA 就讓所有 AAA 顯示為紅色?

 火.. [复制链接]
发表于 2016-10-15 21:41:20 | 显示全部楼层
回复 15# tubaba

我也是 用虛擬列表的.............
发表于 2016-10-15 21:43:37 | 显示全部楼层
回复 14# chzj589

能否 寫個簡單的變顏色範例 你現在可以做到的

然後我再改看看
发表于 2016-10-15 21:57:21 | 显示全部楼层
回复 15# tubaba

請教一下  這個變數 做啥用的 是啥內容

$RelativeEncryptCol
发表于 2016-10-15 22:54:51 | 显示全部楼层
本帖最后由 kk_lee69 于 2016-10-15 22:56 编辑

回复 14# chzj589

弄好了 你看一下吧  用上面的範例  改的  你應該 可以理解  也感謝  tubaba    兄 的舉例  讓我了解的 前面一直搞不懂的邏輯

#include <Array.au3>
#include <File.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <WindowsConstants.au3>
#include <GuiImageList.au3>
Global $hListItem[2]
Global $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo, $aHit, $hImage
Global $iColor, $iColorBk, $fChildGui = False

Local $path, $aFileList, $aNewList[1][2]
$path = @ScriptDir
$aFileList = _FileListToArray($path, "*.txt")

Local $iI, $iTimer, $idListview
$Main_GUI = GUICreate("Test Management v1.0", 720, 300)
$idListview = GUICtrlCreateListView("", 15, 15, 550, 268)
$hListView = GUICtrlGetHandle($idListview)
$idComboBox = GUICtrlCreateCombo("", 600, 246, 90, 30)

GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
_GUICtrlListView_AddColumn($idListview, "Tester", 100)
_GUICtrlListView_AddColumn($idListview, "Test Item", 100)
_GUICtrlListView_AddColumn($idListview, "BMC IP", 100)
_GUICtrlListView_AddColumn($idListview, "Count", 60)
_GUICtrlListView_AddColumn($idListview, "Last Record Time", 150)


ReDim $aNewList[3][5]
Local $sComboTxt = "所有"
$aNewList[0][0]="A"
$aNewList[0][1]="A1"
$aNewList[0][2]="A29"
$aNewList[0][3]="B1"
$aNewList[0][4]="C1"

$aNewList[1][0]="K"
$aNewList[1][1]="DA1"
$aNewList[1][2]="AKKK29"
$aNewList[1][3]="BXX1"
$aNewList[1][4]="Cee1"

$aNewList[2][0]="AAA"
$aNewList[2][1]="A1DDD"
$aNewList[2][2]="A29"
$aNewList[2][3]="B1"
$aNewList[2][4]="C1"



GUICtrlSetData($idComboBox, $sComboTxt, "所有")
_GUICtrlListView_AddArray($idListview, $aNewList)


While 1
        $Msg = GUIGetMsg()
        Switch $Msg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $idComboBox
                        $sComboRead = GUICtrlRead($idComboBox)
                        If $sComboRead == "所有" Then
                                _GUICtrlListView_DeleteAllItems($idListview)
                                _GUICtrlListView_AddArray($idListview, $aNewList)
                        Else
                                _GUICtrlListView_DeleteAllItems($idListview)
                                For $i = 0 To UBound($aNewList) - 1
                                        If $aNewList[$i][1] == $sComboRead Then
                                                GUICtrlCreateListViewItem($aNewList[$i][0] & "|" & $aNewList[$i][1] & "|" & $aNewList[$i][2] & "|" & $aNewList[$i][3] & "|" & $aNewList[$i][4], $idListview)
                                        EndIf
                                Next
                        EndIf
        EndSwitch
WEnd

;-----------------------------------------------------------------------------------------------------------
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
        #forceref $hWnd, $iMsg, $iwParam
        $hWndListView = $hListView
        If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
        $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
        $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
        $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
        $iCode = DllStructGetData($tNMHDR, "Code")

        Switch $hWndFrom
                Case $hWndListView
                        Switch $iCode
                                Case $LVN_ENDSCROLL
                                        $tNMHDR = DllStructCreate("hwnd hWnd;uint cID;int code", $ilParam)
                                        $hLV = HWnd(DllStructGetData($tNMHDR, "hWnd"))
                                        _WinAPI_InvalidateRect($hLV)
                                Case $NM_DBLCLK
                                        $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
                                        $aHit = _GUICtrlListView_SubItemHitTest($hListView)
                                        If $aHit[0] < 0 Then Return $GUI_RUNDEFMSG
                                        Switch $aHit[1]
                                                Case 7
                                                        $fChildGui = True
                                                        Child_GUI($aHit[0])
                                        EndSwitch
                                Case $NM_CUSTOMDRAW
                                        Local $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $ilParam)
                                        Local $iDrawStage = DllStructGetData($tCustDraw, "dwDrawStage")
                                        If $iDrawStage = $CDDS_PREPAINT Then Return $CDRF_NOTIFYITEMDRAW
                                        If $iDrawStage = $CDDS_ITEMPREPAINT Then Return $CDRF_NOTIFYSUBITEMDRAW
                                        Local $iItem = DllStructGetData($tCustDraw, "dwItemSpec")
                                        Local $iSubItem = DllStructGetData($tCustDraw, "iSubItem")
                                        Local $sComboRead = GUICtrlRead($idComboBox)
                                        If $iSubItem Then
                                                
                                                
                                                IF _GUICtrlListView_GetItemText($hWndListView,$iItem,$iSubItem)="A29" Then
                                                        $iColor = 0x0000FF
                                                        $iColorBk = 0xC0C0C0
                                                Else
                                                        $iColor = 0x000000
                                                        $iColorBk = 0xFFFFFF
                                                EndIf
                                                DllStructSetData($tCustDraw, "clrText", $iColor)
                                                DllStructSetData($tCustDraw, "clrTextBk", $iColorBk)

                                        EndIf

                        EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

;-----------------------------------------------------------------------------------------------------------
Func Child_GUI($y)
        ;   GUISetState(@SW_LOCK, $Main_GUI) ; uncommented changes behaviour
        $APPTSTAT_GUI = GUICreate("", 230, 180, 560, 140)
        GUISetState(@SW_SHOW, $APPTSTAT_GUI)
        While 1
                $msg2 = GUIGetMsg()
                Switch $msg2
                        Case $GUI_EVENT_CLOSE
                                ExitLoop
                EndSwitch
                Sleep(50) ; why is this necessary? otherwise crashes
        WEnd
        GUIDelete($APPTSTAT_GUI)
        GUISetState(@SW_RESTORE, $Main_GUI)
        ;   GUISetState(@SW_UNLOCK, $Main_GUI); uncommented changes behaviour
EndFunc   ;==>Child_GUI



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 2金钱 +90 收起 理由
chzj589 + 50
ipmitool + 40 帥氣!

查看全部评分

 楼主| 发表于 2016-10-16 00:26:42 | 显示全部楼层
回复 19# kk_lee69


    那如果只限定 BMC IP 這一欄符合A29才變紅色呢? 其他欄如果遇到A29不做變色 可以嗎?
发表于 2016-10-16 02:15:12 | 显示全部楼层
回复 20# ipmitool

加  AND $iSubItem=2
发表于 2016-10-16 08:15:04 | 显示全部楼层
回复 21# kk_lee69
谢谢了!
关键是这一句判断找不到头绪,
If _GUICtrlListView_GetItemText($hWndListView, $iItem, $iSubItem) = "A29" Then
解决了,以后会用到。
        AND $iSubItem=2,这一句要放在那里
发表于 2016-10-16 09:06:44 | 显示全部楼层
回复 21# kk_lee69


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2016-10-16 09:07:41 | 显示全部楼层
回复 21# kk_lee69

AND $iSubItem=2,这一句可以不用
发表于 2016-10-16 10:08:51 | 显示全部楼层
回复 18# kk_lee69


    这是我从自己某个脚本复制过来的,那个变量跟本贴主题没有关系.就是一个着色的条件而已
 楼主| 发表于 2016-10-16 10:10:07 | 显示全部楼层
本帖最后由 ipmitool 于 2016-10-16 10:14 编辑

回复 24# chzj589


   AND $iSubItem=2,这一句可以不用
   那要怎麼用啊?
 楼主| 发表于 2016-10-16 10:38:58 | 显示全部楼层
回复 22# chzj589


    _GUICtrlListView_GetItemText($hWndListView,$iItem,$iSubItem)="A29" AND $iSubItem=2 Then

這樣ok了, 謝謝馬蓋先大師及其他大師們的熱情幫忙!! 以解決嘍~
 楼主| 发表于 2016-10-16 11:28:05 | 显示全部楼层
本帖最后由 ipmitool 于 2016-10-16 11:32 编辑

回复 21# kk_lee69






拍謝, 我是想說在BMC IP欄位裡面, A29就白底綠字, 不是的話 就只設定BMC IP 欄位內其他內容為紅色...
希望 test item, count, last record time欄位內的顏色背景保持白底黑字, 這樣怎麼做呢?
IF _GUICtrlListView_GetItemText($hWndListView,$iItem,$iSubItem)="A29" AND $iSubItem=2 Then
$iColor = 0x00FF00
$iColorBk = 0xFFFFFF
Else
$iColor = 0x00FF00
$iColorBk = 0xFFCCFF
DllStructSetData($tCustDraw, "clrText", $iColor)
DllStructSetData($tCustDraw, "clrTextBk", $iColorBk)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2016-10-16 11:35:57 | 显示全部楼层
回复 28# ipmitool

select
case  _GUICtrlListView_GetItemText($hWndListView,$iItem,$iSubItem)="A29" AND $iSubItem=2
$iColor = 0x00FF00
$iColorBk = 0xFFFFFF
case $iSubItem=2
$iColor = 0x00FF00
$iColorBk = 0xFFCCFF
case else
$iColor = 0x00FF00;指定第三種顏色
$iColorBk = 0xDDEEFF
endselect
DllStructSetData($tCustDraw, "clrText", $iColor)
DllStructSetData($tCustDraw, "clrTextBk", $iColorBk)

Select...Case...EndSelect
如果表达式为 true, 则执行从下一行开始, 直到下一个 Case 或 EndSelect 为止的所有语句.
如果有多个 Case 表达式成立, 则只执行第一个 Case 语句.

评分

参与人数 1金钱 +40 收起 理由
ipmitool + 40 Thanks~

查看全部评分

 楼主| 发表于 2016-10-16 12:04:14 | 显示全部楼层
回复 29# tubaba


    太厲害,秒回,成功,謝謝大師
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-25 10:12 , Processed in 0.077988 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表