guland 发表于 2016-3-24 10:56:27

炫彩界面库AU3教程5,List列表和List列表模板的应用

本帖最后由 guland 于 2016-3-24 11:00 编辑

列表的操作稍微有些复杂,不过还是很好用的,请看下面的代码

注意:本期例程所使用的UDF版本为2.1,请到顶置贴里下载#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);创建列表元素
XEle_RegEventC($XList, "_list",$XE_LBUTTONUP);注册列表事件,$XE_LBUTTONUP(左键抬起)....没找到单击的事件
$ggg=XList_SetItemTemplateXML($XList,@ScriptDir&"\List_Item.xml");加载列表模板文件,如果列三个以内可以省略此步
XList_AddColumn($XList, 100);设置列宽
XList_AddColumn($XList, 100)
XList_AddColumn($XList, 100)
XList_AddColumn($XList, 100)
XList_AddColumn($XList, 100)
$XAm = XAdapterMap_Create();创建数据适配器,单列数据
XList_BindAdapterHeader($XList, $XAm);绑定数据适配器
XAdapterMap_AddItemText($XAm, "name", "A001");设置列名称
XAdapterMap_AddItemText($XAm, "name2", "A002")
XAdapterMap_AddItemText($XAm, "name3", "A003")
XAdapterMap_AddItemText($XAm, "name4", "A004")
XAdapterMap_AddItemText($XAm, "name5", "A005")

$XA = XAdapterTable_Create();创建列表框元素数据适配器
XList_BindAdapter($XList, $XA);绑定数据适配器
XAdapterTable_AddColumn($XA, "name");添加数据列
XAdapterTable_AddColumn($XA, "name2")
XAdapterTable_AddColumn($XA, "name3")
XAdapterTable_AddColumn($XA, "name4")
XAdapterTable_AddColumn($XA, "name5")

For $i = 0 To 10
        XAdapterTable_AddItemTextEx($XA, "name", "ListBox");添加数据项,填充指定列数据
        XAdapterTable_SetItemText($XA, $i, 1, "ListBox-" & $i & "-1");设置项数据
        XAdapterTable_SetItemText($XA, $i, 2, "ListBox-" & $i & "-2")
        XAdapterTable_SetItemText($XA, $i, 3, "ListBox-" & $i & "-3")
        XAdapterTable_SetItemText($XA, $i, 4, "ListBox-" & $i & "-4")
        XAdapterTable_SetItemText($XA, $i, 5, "ListBox-" & $i & "-5")
Next
$btn2 = XBtn_Create("400", "460", "75", "25", "退出程序", $create)
XEle_RegEventC($btn2, "btn2")
XWnd_ShowWindow($create)

XRunXCGUI()
Func _list($bh)
        $io=XAdapterTable_GetItemALLText($XList);返回选中项目的所有文本
        MsgBox(0,"",$io)
EndFunc
Func btn2($bh)
        XQuit_ACN($create)
EndFunc

运行截图:



本期所使用的列表模板下载地址:

本期重点:

关于列表模板的使用
列表模板的创建是由炫彩UI设计器完成的,创建方法我现在还没有时间研究,大家可以研究研究 一起交流经验

chzj589 发表于 2016-3-24 11:34:45

回复 1# guland
用上面的代码通过了,谢谢!!!{:face (355):}

chzj589 发表于 2016-3-24 11:52:18

回复 1# guland

但还是不能添加列,我增加二列,结果还是不显示

guland 发表于 2016-3-24 12:37:53

回复 3# chzj589


    模板里我只设置了5列 。。。。

guland 发表于 2016-3-24 12:48:25

本帖最后由 guland 于 2016-3-24 12:51 编辑

回复 3# chzj589


   试试这个模板,起始感觉上比较麻烦,但是如果列表要是复杂一些你就会感觉到模板起始还是不错的,比如在列表中显示各种元素,炫彩助手中其他语言的例子中有这样的应用,等有时间我也写个例子发出来


chzj589 发表于 2016-3-24 13:57:45

回复 5# guland
上面的模板没有起作用

chzj589 发表于 2016-3-24 14:49:03

回复 5# guland

终于搞定,可以自由添加列

guland 发表于 2016-3-24 17:51:56

回复 7# chzj589


    是什么原因?

chzj589 发表于 2016-3-24 20:25:41

回复 8# guland

也不知道具体原因,我就是用你发过的5楼代码与前面发过的代码乱试,结果就通过了,现在设置到12列都能显示。
请教读取数据库如何显示在$XList = XList_Create

Func _ddu();读取

        $T = "*"
        GUICtrlSendMsg($ListView1, $LVM_DELETEALLITEMS, 0, 0)

        $addfld = ObjCreate("ADODB.Connection")
        $addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $adSource & "; Jet OLEDB:Database Password=" & $DatabasePassword)

        ;$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_key & ";Jet Oledb:Database Password=" & $mdb_data_key)
        $RS = ObjCreate("ADODB.Recordset")
        $RS.ActiveConnection = $addfld
        ;$RS.Open("Select " & $T & " From " & $adtablekey)
        $RS.Open("Select " & $T & " From " & $adTable)

        While Not $RS.eof And Not $RS.bof
                If @error = 1 Then ExitLoop
$XABB1=($RS.Fields(0).value)
$XABB2=($RS.Fields(1).value)
$XABB3=($RS.Fields(2).value)
$XABB4=($RS.Fields(3).value)
$XABB5=($RS.Fields(4).value)
$XABB6=($RS.Fields(5).value)
$XABB7=($RS.Fields(6).value)

XAdapterTable_AddItemTextEx($XA, "name", $XABB1)
XAdapterTable_SetItemText($XA,"name", 1, $XABB2)
XAdapterTable_SetItemText($XA,"name", 2, $XABB3)
XAdapterTable_SetItemText($XA,"name", 3, $XABB4)
XAdapterTable_SetItemText($XA,"name", 4, $XABB5)
XAdapterTable_SetItemText($XA,"name", 5, $XABB6)
XAdapterTable_SetItemText($XA,"name", 6, $XABB7)

        $RS.movenext
        WEnd
        $RS.close
        $addfld.Close       
EndFunc   ;==>_ddu

第一列全部读取,第二列以后只显示第二行。
要用那个函数?

chzj589 发表于 2016-3-25 08:15:36

回复 8# guland
1:如何读取数据显示在控件,XList_Create,XComboBox_Create,XRichEdit_Create。
2:控件如何随主窗口放大与缩小。
解决这些细节就能完成一个程序.

guland 发表于 2016-3-25 09:57:30

回复 9# chzj589


    你看一下函数的介绍XAdapterTable_SetItemText(数据适配器句柄,项索引,列索引,值)

guland 发表于 2016-3-25 10:18:54

回复 9# chzj589


给你写个例子,你看下就明白了#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)
XEle_RegEventC($XList, "_list", $XE_LBUTTONUP)
$ggg = XList_SetItemTemplateXML($XList, @ScriptDir & "\List_Item.xml")
XList_AddColumn($XList, 100)
XList_AddColumn($XList, 100)
XList_AddColumn($XList, 100)
XList_AddColumn($XList, 100)
XList_AddColumn($XList, 100)
$XAm = XAdapterMap_Create()
XList_BindAdapterHeader($XList, $XAm)
XAdapterMap_AddItemText($XAm, "name", "ID")
XAdapterMap_AddItemText($XAm, "name2", "A002")
XAdapterMap_AddItemText($XAm, "name3", "A003")
XAdapterMap_AddItemText($XAm, "name4", "A004")
$XA = XAdapterTable_Create()
XList_BindAdapter($XList, $XA)
XAdapterTable_AddColumn($XA, "name")
XAdapterTable_AddColumn($XA, "name2")
XAdapterTable_AddColumn($XA, "name3")
XAdapterTable_AddColumn($XA, "name4")
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=db1.mdb")
$RS = ObjCreate("ADODB.Recordset")
$RS.ActiveConnection = $addfld
$RS.Open("Select * From test ")
Dim $ss = 0
While Not $RS.eof And Not $RS.bof
        XAdapterTable_AddItemTextEx($XA, "name", $RS.Fields(0).value)
        XAdapterTable_SetItemText($XA, $ss, 1, $RS.Fields(1).value)
        XAdapterTable_SetItemText($XA, $ss, 2, $RS.Fields(2).value)
        XAdapterTable_SetItemText($XA, $ss, 3, $RS.Fields(3).value)
        XAdapterTable_SetItemText($XA, $ss, 4, $RS.Fields(4).value)
        $ss += 1
        $RS.movenext
WEnd
$btn2 = XBtn_Create("400", "460", "75", "25", "退出程序", $create)
XEle_RegEventC($btn2, "btn2")
XWnd_ShowWindow($create)
XRunXCGUI()
Func _list($bh)
        $io = XAdapterTable_GetItemALLText($XList)
        MsgBox(0, "", $io)
EndFunc   ;==>_list
Func btn2($bh)
        XQuit_ACN($create)
EndFunc   ;==>btn2

guland 发表于 2016-3-25 10:24:10

回复 10# chzj589


    你这写问题其实很简单,我有时间给你写个例子你就明白了,建议你下载顶置贴里的帮助文档,虽然不是AU3的,但是你可以了解各个函数的用法

chzj589 发表于 2016-3-25 10:36:05

回复 13# guland
谢谢!期待您的例子。
读取数据显示在XList_Create己通过!

chzj589 发表于 2016-3-25 22:32:42

回复 13# guland
请问富文本编辑框XRichEdit_Create,如何象GUICtrlRead($Input1),
用:
read4 = XRichEdit_GetTextLength($XRichEdit3)
MsgBox(48, '提示', $read4)
无法读取编辑框的数据?
页: [1] 2 3 4
查看完整版本: 炫彩界面库AU3教程5,List列表和List列表模板的应用