guland 发表于 2016-4-20 20:37:28

炫彩界面库AU3教程10,List列表保存字体颜色

主要使用如下两个函数XList_SetItemData设置项用户数据
XList_GetItemData获取项用户数据
设置文本颜色时将颜色信息写入项用户数据中,绘制项目时读出并设置相关文本颜色
大家可以举一反三,合理利用这两个函数

请看完整代码:#region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_UseX64=n
#endregion ;**** 参数创建于 ACNWrapper_GUI ****
#include "XCGUI_Fun.au3"
XInitXCGUI()
$create = XWnd_Create("500", "500", "500", "500", "窗口测试", 47)
$XList = XList_Create("20", "40", "440", "400", $create)
XList_SetItemHeightDefault($XList, 35, 40) ;设置项未选中高度,选中高度
$ggg = XList_SetItemTemplateXML($XList, @ScriptDir & "\List_Item.xml") ;加载列表模板
XList_AddColumn($XList, 100) ;设置列宽度
XList_AddColumn($XList, 100)
XList_AddColumn($XList, 100)
$XAm = XAdapterMap_Create()
XList_BindAdapterHeader($XList, $XAm)
$XA = XAdapterTable_Create()
XList_BindAdapter($XList, $XA)
XAdapterTable_AddColumn($XA, "name")
XAdapterTable_AddColumn($XA, "name2")
XAdapterTable_AddColumn($XA, "name3")
For $i = 0 To 20
        XAdapterTable_AddItemTextEx($XA, "name", "ListBox")
        XAdapterTable_SetItemText($XA, $i, 1, "ListBox-" & $i & "-1")
        XAdapterTable_SetItemText($XA, $i, 2, "ListBox-" & $i & "-2")
Next
XEle_RegEventC1($XList, "_OnListTemplateCreateEnd", $XE_LIST_TEMP_CREATE_END, "int;int") ;注册列表事件
$btn2 = XBtn_Create("400", "460", "75", "25", "退出程序", $create)
$btn3 = XBtn_Create("300", "460", "75", "25", "修改颜色", $create)
XEle_RegEventC($btn2, "btn2")
XEle_RegEventC($btn3, "btn3")
XWnd_ShowWindow($create)

XRunXCGUI()

Func _OnListTemplateCreateEnd($hEle, $pItem)
        $a = _list_item_i() ;获得 list_item_i 数据结构
        CopyMemory($a, $pItem)
        $text = XList_GetTemplateObject($XList, DllStructGetData($a, 1), 0) ;获取句柄
        $pd = XC_IsHXCGUI($text, $XC_SHAPE_TEXT) ;判断获取的句柄是否为文本
        If $pd = True Then
                $fsts = XList_GetItemData($XList, DllStructGetData($a, 1), 0) ;获取项用户数据
                XShapeText_SetTextColor($text, $fsts, 255) ;设置文本颜色
        EndIf
EndFunc   ;==>_OnListTemplateCreateEnd
Func btn3($bh)
        For $i = 0 To 3
                XShapeText_SetTextColor(XList_GetTemplateObject($XList, $i, 0), 0xFF00FF, 255) ;设置文本颜色
                XList_SetItemData($XList, $i, 0, 0xFF00FF) ;设置项用户数据
        Next
        XEle_RedrawEle($XList, 1)
EndFunc   ;==>btn3
Func btn2($bh)
        xquit_acn($create)
EndFunc   ;==>btn2

afan 发表于 2016-4-20 21:11:43

版主为了大家用上特别的界面真是呕心沥血啊 {:face (270):}

guland 发表于 2016-4-20 21:58:56

回复 2# afan


    呵呵,这也是我学习的过程,既然身为版主,总该做点什么

zhaoyun 发表于 2016-4-21 06:57:12

学习了。。。。。。。。。。。。

chzj589 发表于 2016-4-21 08:42:56

回复 1# guland

如果要全页都改变字体颜色,某列整列改变字体颜色,某列某行改变字体颜色?

chzj589 发表于 2016-4-21 08:56:31

回复 5# chzj589
这样可改变第一列

For $i = 0 To 20
        XList_SetItemData($XList, $i, 0, 0xFF0000)
Next

guland 发表于 2016-4-22 08:27:17

回复 6# chzj589


    它只能修改显示出来那部分的颜色。。。。所以无法修改全部项的字体颜色,

guland 发表于 2016-4-22 08:28:33

回复 5# chzj589


    建议修改项目背景颜色

xz00311 发表于 2016-5-6 13:12:13

List_Item.xml 这个文件没有提供啊

xz00311 发表于 2016-5-6 13:13:36

error: XEle_RegEventC1() 调用参数的数量错误.
XEle_RegEventC1($XList, "_OnListTemplateCreateEnd", $XE_LIST_TEMP_CREATE_END, "int;int")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"Z:\workitems\GUI 皮肤\XCGUI_Fun.au3"(1320,47) : 引用: 定义为 XEle_RegEventC1().
Func XEle_RegEventC1($_hEle, $_nEvent, $_pFun)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"Z:\workitems\GUI 皮肤\炫彩界面库AU3教程10,List列表保存字体颜色.au3"(82,27) : error: _list_item_i(): 未定义的函数.
      $a = _list_item_i()
~~~~~~~~~~~~~~~~~~~~~~~~~~^
"Z:\workitems\GUI 皮肤\炫彩界面库AU3教程10,List列表保存字体颜色.au3"(83,30) : error: CopyMemory(): 未定义的函数.
      CopyMemory($a, $pItem)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^

guland 发表于 2016-5-7 19:56:09

回复 10# xz00311


    去下载炫彩助手

pjsvm82 发表于 2016-6-19 10:27:09

本帖最后由 guland 于 2016-6-25 12:48 编辑

好贴就是好贴

chzj589 发表于 2016-6-19 16:35:10

回复 11# guland
如果第二列,第三列呢?

zmlxh168 发表于 2022-10-25 22:58:24

回头我研究一下

aixi769776971 发表于 2024-2-4 10:58:42

6666666666666666666666666666
页: [1]
查看完整版本: 炫彩界面库AU3教程10,List列表保存字体颜色