找回密码
 加入
搜索
查看: 15757|回复: 58

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

[复制链接]
发表于 2016-3-24 10:56:27 | 显示全部楼层 |阅读模式
本帖最后由 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设计器完成的,创建方法我现在还没有时间研究,大家可以研究研究 一起交流经验

本帖子中包含更多资源

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

×
发表于 2016-3-24 11:34:45 | 显示全部楼层
回复 1# guland
用上面的代码通过了,谢谢!!!
发表于 2016-3-24 11:52:18 | 显示全部楼层
回复 1# guland

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

本帖子中包含更多资源

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

×
 楼主| 发表于 2016-3-24 12:37:53 | 显示全部楼层
回复 3# chzj589


    模板里我只设置了5列 。。。。
 楼主| 发表于 2016-3-24 12:48:25 | 显示全部楼层
本帖最后由 guland 于 2016-3-24 12:51 编辑

回复 3# chzj589


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


本帖子中包含更多资源

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

×
发表于 2016-3-24 13:57:45 | 显示全部楼层
回复 5# guland
上面的模板没有起作用
发表于 2016-3-24 14:49:03 | 显示全部楼层
回复 5# guland

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

本帖子中包含更多资源

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

×
 楼主| 发表于 2016-3-24 17:51:56 | 显示全部楼层
回复 7# 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

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

本帖子中包含更多资源

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

×
发表于 2016-3-25 08:15:36 | 显示全部楼层
回复 8# guland
1:如何读取数据显示在控件,XList_Create,XComboBox_Create,XRichEdit_Create。
2:控件如何随主窗口放大与缩小。
解决这些细节就能完成一个程序.
 楼主| 发表于 2016-3-25 09:57:30 | 显示全部楼层
回复 9# chzj589


    你看一下函数的介绍
XAdapterTable_SetItemText(数据适配器句柄,项索引,列索引,值)
 楼主| 发表于 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
 楼主| 发表于 2016-3-25 10:24:10 | 显示全部楼层
回复 10# chzj589


    你这写问题其实很简单,我有时间给你写个例子你就明白了,建议你下载顶置贴里的帮助文档,虽然不是AU3的,但是你可以了解各个函数的用法
发表于 2016-3-25 10:36:05 | 显示全部楼层
回复 13# guland
谢谢!期待您的例子。
读取数据显示在XList_Create己通过!

本帖子中包含更多资源

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

×
发表于 2016-3-25 22:32:42 | 显示全部楼层
回复 13# guland
请问富文本编辑框XRichEdit_Create,如何象GUICtrlRead($Input1),
用:
read4 = XRichEdit_GetTextLength($XRichEdit3)
MsgBox(48, '提示', $read4)
无法读取编辑框的数据?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-3-29 18:28 , Processed in 0.079422 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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