炫彩界面库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设计器完成的,创建方法我现在还没有时间研究,大家可以研究研究 一起交流经验 回复 1# guland
用上面的代码通过了,谢谢!!!{:face (355):} 回复 1# guland
但还是不能添加列,我增加二列,结果还是不显示
回复 3# chzj589
模板里我只设置了5列 。。。。 本帖最后由 guland 于 2016-3-24 12:51 编辑
回复 3# chzj589
试试这个模板,起始感觉上比较麻烦,但是如果列表要是复杂一些你就会感觉到模板起始还是不错的,比如在列表中显示各种元素,炫彩助手中其他语言的例子中有这样的应用,等有时间我也写个例子发出来
回复 5# guland
上面的模板没有起作用 回复 5# guland
终于搞定,可以自由添加列
回复 7# chzj589
是什么原因? 回复 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
第一列全部读取,第二列以后只显示第二行。
要用那个函数? 回复 8# guland
1:如何读取数据显示在控件,XList_Create,XComboBox_Create,XRichEdit_Create。
2:控件如何随主窗口放大与缩小。
解决这些细节就能完成一个程序. 回复 9# chzj589
你看一下函数的介绍XAdapterTable_SetItemText(数据适配器句柄,项索引,列索引,值)
回复 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
回复 10# chzj589
你这写问题其实很简单,我有时间给你写个例子你就明白了,建议你下载顶置贴里的帮助文档,虽然不是AU3的,但是你可以了解各个函数的用法 回复 13# guland
谢谢!期待您的例子。
读取数据显示在XList_Create己通过!
回复 13# guland
请问富文本编辑框XRichEdit_Create,如何象GUICtrlRead($Input1),
用:
read4 = XRichEdit_GetTextLength($XRichEdit3)
MsgBox(48, '提示', $read4)
无法读取编辑框的数据?