ipmitool 发表于 2016-10-14 09:30:26

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

本帖最后由 ipmitool 于 2016-10-16 10:41 编辑

如何讓 listview 裡面偵測到 AAA 就讓所有 AAA 顯示為紅色?



kk_lee69 发表于 2016-10-14 13:14:14

回复 1# ipmitool


http://www.autoitx.com/forum.php?mod=viewthread&tid=15521&highlight=%2Blistview%2B

    http://www.autoitx.com/search.php?searchid=91&orderby=lastpost&ascdesc=desc&searchsubmit=yes

chzj589 发表于 2016-10-14 13:54:04

回复 1# ipmitool

是这样就比较简单




如果要显示Listview单例就复杂多了

chzj589 发表于 2016-10-14 15:27:44

回复 3# chzj589

可能是要这种效果





ipmitool 发表于 2016-10-14 17:07:09

回复 4# chzj589


    您好, 我想要全部show出來, 然後AAA是紅色這樣可以嗎? 可以跟您要code嗎? 謝謝喔~

chzj589 发表于 2016-10-14 20:01:03

回复 5# ipmitool
只能这种效果







详见代码:

chzj589 发表于 2016-10-15 10:01:55

回复 4# chzj589

哪个例子{:1_305:}

ipmitool 发表于 2016-10-15 10:30:15

回复 7# chzj589


    要怎麼改才能指定關鍵字為紅色就好了啊……好難啊…

kk_lee69 发表于 2016-10-15 11:08:42

回复 8# ipmitool

我知道 你要的 ................. 你不想要全部同一行都變色你只需要有問題的變色對吧

解決方法 就是我上次給你的虛擬 LISTVIEW 可以做到

chzj589 发表于 2016-10-15 11:14:16

本帖最后由 chzj589 于 2016-10-15 11:18 编辑

回复 8# ipmitool

你要的是4楼的第2张图?不需背景?

kk_lee69 发表于 2016-10-15 12:14:24

回复 8# ipmitool

chzj589 发表于 2016-10-15 13:33:17

回复 11# kk_lee69
我只能让整列改变颜色
兄弟,这是如何实现的。请赐教!

kk_lee69 发表于 2016-10-15 17:31:41

本帖最后由 kk_lee69 于 2016-10-15 17:35 编辑

回复 12# chzj589

你的方法跟我的方法不一樣 但是觀念是一樣的
我下午為了舉這個例子才解決出來

重點邏輯是你必須要讓整行 先變一次 顏色 所變的顏色 是 有變等於沒變DllStructSetData($tCustDraw, 'clrTextBk',0xFFFFFF);BGR格式顏色值 背景(等於無) 設置這個 可讓顏色恢復正常
DllStructSetData($tCustDraw, 'clrText',0x000000);BGR格式顏色值 文字(等於黑) 設置這個 可讓顏色恢復正常
然後 你在 判斷要變顏色的時候 才不會整行受到影響
之前的狀況是通常 你在某個位置變了顏色後面 整個受到影響
要在前面加哪兩句 才不會受到影響        If $cSub = $nCLID Then         ;設置首列, 即專案
        $iColor = RGB2BGR(0xFF0000)
        ;_WinAPI_SelectObject($hDC, $Font1)
        DllStructSetData($tCustDraw, "clrText", $iColor)
        DllStructSetData($tCustDraw, "clrTextBk", RGB2BGR(0xFFFF80));設置文本背景色
EndIf

位置放哪 你要在琢磨一下    因為你的方法跟我的不一樣所以我無法告訴你應該放哪個位置
但是我覺得邏輯是這樣的
等同你變了顏色後 應該要再把他還原回來

chzj589 发表于 2016-10-15 19:44:50

回复 13# kk_lee69
谢谢!我再琢磨琢磨。
子项目行可以设置不同颜色。
列还不能设置不同颜色

tubaba 发表于 2016-10-15 21:17:21

本帖最后由 tubaba 于 2016-10-15 21:19 编辑

回复 14# chzj589                                 Case $NM_CUSTOMDRAW
                                        If Not _GUICtrlListView_GetViewDetails($hWndFrom) Then Return $GUI_RUNDEFMSG
                                        Local $tCustDraw = DllStructCreate('hwnd hwndFrom;int idFrom;int code;dword DrawStage;hwnd hdc;long rect' & _
                                                        ';dword ItemSpec;int ItemState;dword Itemlparam;dword clrText;dword clrTextBk;int SubItem; dword ItemType' & _
                                                        ';dword clrFace;int IconEffect;int IconPhase;int PartID;int StateID;long rectText;int Align', $ilParam)
                                        Local $iDrawStage, $iItem, $iSubItem, $hDC, $iColor
                                        $iDrawStage = DllStructGetData($tCustDraw, 'DrawStage')
                                        If $iDrawStage = $CDDS_PREPAINT Then Return $CDRF_NOTIFYITEMDRAW ;request custom drawing of items
                                        If $iDrawStage = $CDDS_ITEMPREPAINT Then Return $CDRF_NOTIFYSUBITEMDRAW ;request drawing each cell separately
                                        If Not BitAND($iDrawStage, $CDDS_SUBITEM) Then Return $CDRF_DODEFAULT
                                        $iItem = DllStructGetData($tCustDraw, 'ItemSpec')
                                        $iSubItem = DllStructGetData($tCustDraw, 'SubItem')
                                        If StringRegExp($RelativeEncryptCol, '(?:\A|\D)(' & $iSubItem & ')(?:\D|\z)') Then
                                                Local $iColor = RGB2BGR(0x0000FF)
                                        Else
                                                Local $iColor = RGB2BGR(0x000000)
                                        EndIf
                                        DllStructSetData($tCustDraw, 'clrText', $iColor)
                                        Return $CDRF_NEWFONT$iItem = DllStructGetData($tCustDraw, 'ItemSpec')
                                        $iSubItem = DllStructGetData($tCustDraw, 'SubItem')
这两个等同于listview某项位置,如果使用虚拟列表,在array中$iItem是第一维,$iSubItem是第二维,搜索array,只要附合要求就变色.应该可以一次完成,设置结构中的 clrTextBk可以变更背景色
页: [1] 2 3
查看完整版本: [已解决]如何讓 listview 裡面偵測到 AAA 就讓所有 AAA 顯示為紅色?