duilib 实现列表头任意拖动
1、表头(xml)
<List name="List_records" padding="5,10,5,5" bkcolor="#FFFFFFFF" inset="0,0,0,0" bordersize="1" bordercolor="#FFD7D7D7"
itemshowhtml="true" vscrollbar="true" hscrollbar="true" itemalign="left" itemaltbk="true"
itemshowrowline="true" itemshowcolumnline="true" itemlinecolor="#FFD7D7D7">
<ListHeader height="32" bkcolor="#FFE6ECF7" bordersize="1" bordercolor="#FFD7D7D7">
<ListHeaderItem text="采集人" name="es_header_name_dbclick" width="80" minwidth="80" align="hcentervcenter" />
<Control width="1" bkcolor="#FFD7D7D7"/>
<ListHeaderItem text="手机号码" name="es_header_username_dbclick" width="100" minwidth="100" align="hcentervcenter" />
<Control width="1" bkcolor="#FFD7D7D7"/>
<ListHeaderItem text="证件号码" name="es_header_username_dbclick" width="160" minwidth="160" align="hcentervcenter" />
<Control width="1" bkcolor="#FFD7D7D7"/>
<ListHeaderItem text="采集时间" name="es_header_username_dbclick" width="150" minwidth="150" align="hcentervcenter" />
<Control width="1" bkcolor="#FFD7D7D7"/>
<ListHeaderItem text="采集人2" name="es_header_username_dbclick" width="80" minwidth="80" align="hcentervcenter" />
<Control width="1" bkcolor="#FFD7D7D7"/>
<ListHeaderItem text="现住地" name="es_header_username_dbclick" width="180" minwidth="150" align="hcentervcenter" />
<Control width="1" bkcolor="#FFD7D7D7"/>
<ListHeaderItem text="现住地2" name="es_header_username_dbclick" width="150" minwidth="150" align="hcentervcenter" />
<Control width="1" bkcolor="#FFD7D7D7"/>
<ListHeaderItem text="是否同步" name="es_header_username_dbclick" width="60" minwidth="60" align="hcentervcenter" />
<Control width="1" bkcolor="#FFD7D7D7"/>
<ListHeaderItem text="" name="es_header_username_dbclick" width="40" minwidth="40" align="hcentervcenter" />
<Control width="1" bkcolor="#FFD7D7D7"/>
</ListHeader>
</List>
2、item(xml)
<Window>
<ListContainerElement name="ListContainerElement_statisQuery" height="32" >
<Text name="Text_susp_name" text="" padding="1,0,0,0" width="80"
relativepos="0,0,100,0" mouse="false" textcolor="#FF333333" font="1" align="hleftvcenter" endellipsis="true" />
<Control width="1" bkcolor="#FFD7D7D7"/> 如果表头的列与列之间有分隔控件,则节点中列与列之间也必须有分隔控件
<Text name="Text_susp_mobile" text="" padding="1,0,0,0" width="80"
relativepos="0,0,100,0" mouse="false" textcolor="#FF333333" font="1" align="hleftvcenter" endellipsis="true" />
<Control width="1" bkcolor="#FFD7D7D7"/>
<Text name="Text_susp_certNumber" text="" padding="1,0,0,0" width="130"
relativepos="0,0,100,0" mouse="false" textcolor="#FF333333" font="1" align="hleftvcenter" endellipsis="true" />
<Control width="1" bkcolor="#FFD7D7D7"/>
<Text name="Text_susp_acquTime" text="" padding="1,0,0,0" width="130"
relativepos="0,0,100,0" mouse="false" textcolor="#FF333333" font="1" align="hleftvcenter" endellipsis="true" />
<Control width="1" bkcolor="#FFD7D7D7"/>
<Text name="Text_gather_name" text="" padding="1,0,0,0" width="80"
relativepos="0,0,100,0" mouse="false" textcolor="#FF333333" font="1" align="hleftvcenter" endellipsis="true" />
<Control width="1" bkcolor="#FFD7D7D7"/>
<Text name="Text_susp_address" text="" padding="1,0,0,0" width="150"
relativepos="0,0,100,0" mouse="false" textcolor="#FF333333" font="1" align="hleftvcenter" endellipsis="true" />
<Control width="1" bkcolor="#FFD7D7D7"/>
<Text name="Text_susp_homeplace" text="" padding="1,0,0,0" width="150"
relativepos="0,0,100,0" mouse="false" textcolor="#FF333333" font="1" align="hleftvcenter" endellipsis="true" />
<Control width="1" bkcolor="#FFD7D7D7"/>
<Text name="Text_is_up_server" text="" padding="1,0,0,0" width="60"
relativepos="0,0,100,0" mouse="false" textcolor="#FF333333" font="1" align="hleftvcenter" endellipsis="true" />
<Control width="1" bkcolor="#FFD7D7D7"/>
<Button name="btn_record_lookup" width="40" height="26" padding="0, 3, 0, 0" text="查看" font="7" align="hcentervcenter"/>
<Control width="1" bkcolor="#FFD7D7D7"/>
</ListContainerElement>
</Window>
ListContainerElement 中的第一级子控件与表头各列一一对应(标注:一定是第一级控件)。item中的width没有用处,以表头各列的宽度为准。
(3)代码中,向列表中添加节点
CDialogBuilder builder;
CListContainerElementUI* pListItem = (CListContainerElementUI*)(builder.Create(_T("xxxItem.xml"), (UINT)0));
if (pListItem != NULL)
{
CTextUI* pText = static_cast<CTextUI*>(pListItem->FindSubControl(L"Text_susp_name"));
pText->SetText(L"mark");
.......
pList->Add(pListItem);
}
(4)duilib的CList可能要修改
__super::SetPos(rc);
if (GetOwner()->GetListInfo()->nColumns > 0)
{
rc = m_rcItem;
// Adjust for inset
rc.left += m_rcInset.left;
rc.top += m_rcInset.top;
rc.right -= m_rcInset.right;
rc.bottom -= m_rcInset.bottom;
TListInfoUI *plistinfo = GetOwner()->GetListInfo();
// Determine the width of elements that are sizeable
SIZE szAvailable = { rc.right - rc.left, rc.bottom - rc.top };
for (int it2 = 0; it2 < m_items.GetSize(); it2++)
{
CControlUI* pControl = static_cast<CControlUI*>(m_items[it2]);
if (!pControl->IsVisible())
continue;
if (pControl->IsFloat())
{
SetFloatPos(it2);
continue;
}
RECT rcPadding = pControl->GetPadding();
SIZE sz = pControl->EstimateSize(szAvailable);
if (sz.cx < pControl->GetMinWidth())
sz.cx = pControl->GetMinWidth();
if (sz.cx > pControl->GetMaxWidth())
sz.cx = pControl->GetMaxWidth();
sz.cy = pControl->GetFixedHeight();
if (sz.cy == 0)
sz.cy = rc.bottom - rc.top - rcPadding.top - rcPadding.bottom;
if (sz.cy < 0)
sz.cy = 0;
if (sz.cy < pControl->GetMinHeight())
sz.cy = pControl->GetMinHeight();
if (sz.cy > pControl->GetMaxHeight())
sz.cy = pControl->GetMaxHeight();
RECT rcCtrl = { plistinfo->rcColumn[it2].left + rcPadding.left,
rc.top + rcPadding.top,
plistinfo->rcColumn[it2].right + rcPadding.left,
rc.top + sz.cy + rcPadding.top + rcPadding.bottom };
pControl->SetPos(rcCtrl);
}
}
duilib 实现列表头任意拖动的更多相关文章
- ClistCtrl用法及总结(由怎样隐藏ListCtrl列表头的排序小三角形这个bug学习到的知识)
1 怎样隐藏ListCtrl列表头的排序小三角形 在创建控件是加入|LVS_NOSORTHEADER风格即可. 一下是用法总结: 本文根据本人在项目中的应用,来谈谈CListCtrl的部分用法及技巧. ...
- easyui datagrid 点击列表头排序出现错乱的原因
之前我的导师,也就是带我的同事,使用datagrid,发现点击列表头排序出现乱序,按理说只有顺序和逆序两种排序结果.因为他比较忙,当时没解决,把排序禁掉了,后来又要求一定要排序,所以他交给我. 一开始 ...
- 隐藏 FastAdmin 列表中的拖动排序按钮
隐藏 FastAdmin 列表中的拖动排序按钮 就是以下这个按钮,想先删除不要. 刚开始在 CMS 插件中的栏目中发现没有,以为在哪个位置中,但找到半天的 weigh 都没有找到weigh 的字眼. ...
- Qt实现表格控件-支持多级列表头、多级行表头、单元格合并、字体设置等
目录 一.概述 二.效果展示 三.定制表头 1.重写数据源 2.重写QHeaderView 四.设置属性 五.相关文章 原文链接:Qt实现表格控件-支持多级列表头.多级行表头.单元格合并.字体设置等 ...
- duilib进阶教程 -- 改进窗口拖动 (12)
现在大家应该都知道caption="0,0,0,32",是指示标题栏区了吧,如果想要整个窗口都能拖动呢? 那直接把高度改成和窗口一样不就得了~O(∩_∩)O~ 嗯,这样是可以,比如 ...
- duilib属性列表
<?xml version="1.0" encoding="UTF-8"?> <!-- 可能有错漏,欢迎补充.wangchyz(wangchy ...
- nim_duilib(15)之duilib属性列表.xml
Note 为了更加方便查看duilib的属性(github有时候打不开),特此记录. 阅读本文,可以知道控件有哪些属性,可以写在xml文件中.个别需要结合源码一起看 from here 原文 < ...
- NumberSeekBar 可任意拖动和自动
package com.example.numberseekbar; import android.content.Context; import android.content.res.Resour ...
- C#:ListView控件如何实现点击列表头进行排序?
using System; using System.Collections; using System.Windows.Forms; namespace Common { /// <summa ...
随机推荐
- oracle、Mysql数据库客户端DbVisualizer安装
原文链接:https://jingyan.baidu.com/article/454316ab675302f7a7c03a9e.html
- 20145101《Java程序设计》第10周学习总结
20145101<Java程序设计>第10周学习总结 教材学习内容总结 网络编程 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输. 计算机网络 路由器和交换机组成了核心的 ...
- 20145329 《网络对抗技术》MSF基础应用
实践目标 掌握metasploit的基本应用方式,掌握常用的三种攻击方式的思路.具体需要完成(1)一个主动攻击,如ms08_067;(2)一个针对浏览器的攻击,如ms11_050:(3)一个针对客户端 ...
- 使用libcurl开源库和Duilib做的下载文件并显示进度条的小工具
转载:http://blog.csdn.net/mfcing/article/details/43603525 转载:http://blog.csdn.net/infoworld/article/de ...
- java.lang.NoClassDefFoundError错误
根据前文,很明显NoClassDefFoundError的错误是因为在运行时类加载器在classpath下找不到需要加载的类,所以我们需要把对应的类加载到classpath中,或者检查为什么类在cla ...
- ADT Bundle下载和安装
下载官方adt集成包(即ADT Bundle)并安装. Android官方已经推出adt集成包,包含了eclipse.sdk和SDK Manager,只需解压出来,然后就能运行Eclipse. 官方集 ...
- 导出数据库表为world文档说明,以及PowerDesigner导出表结构pdm设计文档
如何使用“mysql导出数据库结构为world工具”以及如何使用powerdesigner映射数据库模型 一.通过powerdesigner配置ojdbc 1.安装并打开powerdesigner,新 ...
- TeeChart的网络资料
TeeChart坐标轴常见问题 http://www.shaoqun.com/a/54063.aspx TeeChart常用编程语句汇总(C#) http://www.ev get.com/artic ...
- Unity3D学习笔记(七):叉乘和四元素
向量的叉乘: 数学运算:a(ax,ay,az) x b(bx,by,bz) = c(aybz-azby,azbx-axby,axby-aybx) 几何意义:得到一个新的向量,同时垂直于a向量和b向量, ...
- darknet-训练自己的yolov3模型
目录 Yolo v3的使用方法 安装darknet 训练Pascal VOC格式的数据 修改cfg文件中的voc.data 修改VOC.names 下载预训练卷积层权重 修改cfg/yolov3-vo ...