ListBox - 模板项实例对象获取,及操作

说明

ListBox 模板项实例对象获取,及操作.

ListBox_Item.xml

<?xml version="1.0" encoding="UTF-8" ?>
<xc_template_listBox>
<layoutEleUI type="item" layout.horizon="true" layout.alignH="left" layout.alignV="top" layout.width="auto" layout.height="fill" layout.space="2" layout.padding="2,2,2,2" >
<shapeText itemID="1" layout.width="auto" layout.height="fill" content="{binding field=name1 source=data bSync=false}" />
<buttonUI itemID="2" width="60" height="20" />
</layoutEleUI>
</xc_template_listBox>

示例代码

//包含炫彩界面库文件
#pragma comment(lib, "XCGUI.lib")
#include "xcgui.h"
class CMyWindowListBox
{
public:
HWINDOW m_hWindow;
HELE m_hListBox;
int m_iIndex_prev; //先前选中项索引
CMyWindowListBox()
{
m_iIndex_prev=-1;
Init();
}
void Init()
{
m_hWindow = XWnd_Create(0, 0, 400, 400, L"炫彩界面库窗口",NULL, xwindow_style_default);
m_hListBox=XListBox_Create(20,40,300,310,m_hWindow);
XListBox_SetItemTemplateXML(m_hListBox,L"XML-template-test\\ListBox_Item.xml");
XSView_SetLineSize(m_hListBox,20,20);
XListBox_EnableMultiSel(m_hListBox,FALSE);
HXCGUI hAdapter=XAdTable_Create();
XListBox_BindAdapter(m_hListBox,hAdapter);
XAdTable_AddColumn(hAdapter,XC_NAME1);
wchar_t buf[256]={0};
int index=0;
for (int i=0;i<20;i++)
{
wsprintf(buf,L"item-%d",i);
index=XAdTable_AddItemTextEx(hAdapter,XC_NAME1,buf);
}
//项选择事件
XEle_RegEventCPP(m_hListBox,XE_LISTBOX_SELECT,&CMyWindowListBox::OnListBoxSelect);
//项模板实例化完成事件
XEle_RegEventCPP(m_hListBox,XE_LISTBOX_TEMP_CREATE_END,&CMyWindowListBox::OnListBoxTemplateCreateEnd);
XWnd_ShowWindow(m_hWindow,SW_SHOW);
}
//nFlag 0:状态改变(复用); 1:新模板实例; 2:旧模板复用
int OnListBoxTemplateCreateEnd(listBox_item_i* pItem, int nFlag,BOOL *pbHandled)
{
if(1==nFlag)
{
//获取模板中(itemID=2)按钮
HELE hButton=(HELE)XListBox_GetTemplateObject(m_hListBox,pItem->index,2);
if(XC_IsHXCGUI(hButton,XC_BUTTON))
{
XBtn_SetText(hButton,L"初始化");
//注册按钮点击事件
XEle_RegEventCPP1(hButton,XE_BNCLICK,&CMyWindowListBox::OnBtnClick);
}
}
return 0;
}
int OnListBoxSelect(int iItem, BOOL *pbHandled)
{
if(m_iIndex_prev>=0)
{
//获取模板中(itemID=2)按钮
HELE hButton=(HELE)XListBox_GetTemplateObject(m_hListBox,m_iIndex_prev,2);
if(XC_IsHXCGUI(hButton,XC_BUTTON))
XBtn_SetText(hButton,L"-未选择-");
}
m_iIndex_prev=iItem;
if(iItem>=0)
{
//获取模板中(itemID=2)按钮
HELE hButton=(HELE)XListBox_GetTemplateObject(m_hListBox,iItem,2);
if(XC_IsHXCGUI(hButton,XC_BUTTON))
XBtn_SetText(hButton,L"-被选择-");
}
return 0;
}
int OnBtnClick(HELE hEventEle,BOOL *pbHandled)
{
//获取按钮在ListBox中的项索引
int nItem=XListBox_GetItemIndexFromHXCGUI(m_hListBox,hEventEle);
if(nItem<0) return 0;
//获取模板中(itemID=1)文本块
HXCGUI hTextBlock=XListBox_GetTemplateObject(m_hListBox,nItem,1);
if(XC_IsHXCGUI(hTextBlock,XC_TEXT_BLOCK))
{
wchar_t buf[MAX_PATH]={0};
XTextBlock_GetText(hTextBlock,buf,MAX_PATH); //此函数 1.8.4.1版本新增
MessageBox(XEle_GetHWND(hEventEle),buf,L"您点击了按钮!",MB_OK);
}
return 0;
}
};
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
XInitXCGUI(TRUE);
CMyWindowListBox MyWindow;
return TRUE;
}
#define XE_BNCLICK
按钮点击事件.
Definition: XCGUI.h:939
#define XE_LISTBOX_SELECT
列表框元素,项选择事件.
Definition: XCGUI.h:1010
#define XE_LISTBOX_TEMP_CREATE_END
列表框元素-项模板创建完成事件,模板复用机制需先启用;不管是新建还是复用,都需要更新数据, 当为复用时不要注册事件以免重复注册
Definition: XCGUI.h:992
@ XC_BUTTON
按钮
Definition: XCGUI.h:158
void WINAPI XBtn_SetText(HELE hEle, const wchar_t *pName)
按钮_置文本 设置文本内容.
Definition: ButtonUI.cpp:1942
BOOL WINAPI XSView_SetLineSize(HELE hEle, int nWidth, int nHeight)
滚动视_置滚动单位大小 设置滚动单位大小.
Definition: ScrollViewUI.cpp:694
BOOL WINAPI XC_IsHXCGUI(HXCGUI hXCGUI, XC_OBJECT_TYPE nType)
炫彩_是否句柄包含类型 判断句柄是否拥有该类型.
Definition: Api.cpp:307
void WINAPI XExitXCGUI()
炫彩_退出 退出界面库释放资源. 不可在dllmain()中卸载, 否则会死锁
Definition: App.cpp:572
void WINAPI XRunXCGUI()
炫彩_运行 运行消息循环,当炫彩窗口数量为0时退出.
Definition: App.cpp:564
BOOL WINAPI XInitXCGUI(BOOL bD2D)
炫彩_初始化 初始化界面库.
Definition: App.cpp:557
void * HXCGUI
资源句柄
Definition: XCGUI.h:92
XEle_RegEventCPP1(hEle, nEvent, memberFunction)
元素_注册事件CPP1 注册元素事件,将类成员函数作为事件响应函数.函数不省略参数.
XEle_RegEventCPP(hEle, nEvent, memberFunction)
元素_注册事件CPP 注册元素事件,将类成员函数作为事件响应函数.函数省略元素自身句柄hEle.
int WINAPI XAdTable_AddColumn(HXCGUI hAdapter, const wchar_t *pName)
数据适配器表_添加列 添加数据列.
Definition: DataAdapter.cpp:1908
HXCGUI WINAPI XAdTable_Create()
数据适配器表_创建 创建列表框元素数据适配器.数据适配器存储数据, UI对象根据绑定的字段名显示数据适配器中对应的数据;
Definition: DataAdapter.cpp:1863
HXCGUI WINAPI XListBox_GetTemplateObject(HELE hEle, int iItem, int nTempItemID)
列表框_取模板对象 通过模板项ID,获取实例化模板项ID对应的对象句柄.
Definition: ListBoxUI.cpp:3005
void WINAPI XListBox_BindAdapter(HELE hEle, HXCGUI hAdapter)
列表框_绑定数据适配器 绑定数据适配器.
Definition: ListBoxUI.cpp:3035
int WINAPI XListBox_GetItemIndexFromHXCGUI(HELE hEle, HXCGUI hXCGUI)
列表框_取对象所在行 获取当前对象所在模板实例,属于列表中哪一个项(行).
Definition: ListBoxUI.cpp:2887
HELE WINAPI XListBox_Create(int x, int y, int cx, int cy, HXCGUI hParent)
列表框_创建 创建列表框元素.
Definition: ListBoxUI.cpp:2562
BOOL WINAPI XListBox_SetItemTemplateXML(HELE hEle, const wchar_t *pXmlFile)
列表框_置项模板文件 设置列表项模板文件.
Definition: ListBoxUI.cpp:2935
void WINAPI XListBox_EnableMultiSel(HELE hEle, BOOL bEnable)
列表框_启用多选 是否启用多行选择功能.
Definition: ListBoxUI.cpp:3014
HWINDOW WINAPI XWnd_Create(int x, int y, int cx, int cy, const wchar_t *pTitle, HWND hWndParent, int XCStyle)
窗口_创建 创建窗口
Definition: WindowUI.cpp:5964
BOOL WINAPI XWnd_ShowWindow(HWINDOW hWindow, int nCmdShow)
@窗口_显示扩展 显示隐藏及控制窗口最大化还原等
Definition: WindowUI.cpp:6387

程序截图