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 ...
随机推荐
- 20145310《网络对抗》Exp9 Web安全基础实践
基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,通过执行SQL语句进执行攻击者所要的操作. 如何防御?首先严格区分 ...
- 20145310 Exp7 网络欺诈技术防范
实验后回答问题 (1)通常在什么场景下容易受到DNS spoof攻击 局域网内最容易遭受攻击.通过DNS欺骗就可以轻松地将网址转到钓鱼网站.而我们平时最常用的局域网应该就是公共热点吧,特别是有的地方的 ...
- String & dp Problem Round 3 2017.4.22
对每一个特征求前缀和,如果它减去前面的某一个地方的和,得到的每个特征是相等的,那么然后就可以更新答案. 需要解决这个两个问题 1.如何使答案尽量大? 这个很简单,直接找尽量靠前的地方就好了. 2,如何 ...
- 网站精准查询IP
分享一些网站能精准查询IP的 https://www.chaidu.com/App/Web/IP/ http://www.ipip.net/ip.html http://www.hao7188.com ...
- HDU 1823 Luck and Love (二维线段树&区间最值)题解
思路: 树套树,先维护x树,再维护y树,多练练应该就能懂了 代码: #include<cstdio> #include<cmath> #include<cstring&g ...
- 论文笔记——Factorized Convolutional Neural Networks
1. 论文思想 将3D卷积分解为spatial convolution in each channel and linear projection across channels. (spatial ...
- IIS中添加ftp站点
1.创建Windows账号 右击点击“我的电脑”,选择“管理”打开服务器管理的控制台.展开“服务器管理器”,一路展开“配置”.“本地用户和组”,点“用户”项.然后在右边空白处点右键,选择“新用户”将打 ...
- Linux-Ubuntu14.04下mongodb安装部署
mongo 下载:https://www.mongodb.com/download-center/community?jmp=nav 创建目录,将下载的文件放在如下位置 xxx@ubuntu:/usr ...
- python字典按照value进行排序.bak
先说几个解决的方法,具体的有时间再细说 d = {'a':1,'b':4,'c':2} 字典是这个,然后要对字典按照value进行排序 方法一: sorted(d.items(),key = lamb ...
- cannot marshal None unless allow_none is enabled
今天运行一个launch文件的时候出现了以下报错 load_parameters: unable to set parameters (last param was [/robot_state_pub ...