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 实现列表头任意拖动的更多相关文章

  1. ClistCtrl用法及总结(由怎样隐藏ListCtrl列表头的排序小三角形这个bug学习到的知识)

    1 怎样隐藏ListCtrl列表头的排序小三角形 在创建控件是加入|LVS_NOSORTHEADER风格即可. 一下是用法总结: 本文根据本人在项目中的应用,来谈谈CListCtrl的部分用法及技巧. ...

  2. easyui datagrid 点击列表头排序出现错乱的原因

    之前我的导师,也就是带我的同事,使用datagrid,发现点击列表头排序出现乱序,按理说只有顺序和逆序两种排序结果.因为他比较忙,当时没解决,把排序禁掉了,后来又要求一定要排序,所以他交给我. 一开始 ...

  3. 隐藏 FastAdmin 列表中的拖动排序按钮

    隐藏 FastAdmin 列表中的拖动排序按钮 就是以下这个按钮,想先删除不要. 刚开始在 CMS 插件中的栏目中发现没有,以为在哪个位置中,但找到半天的 weigh 都没有找到weigh 的字眼. ...

  4. Qt实现表格控件-支持多级列表头、多级行表头、单元格合并、字体设置等

    目录 一.概述 二.效果展示 三.定制表头 1.重写数据源 2.重写QHeaderView 四.设置属性 五.相关文章 原文链接:Qt实现表格控件-支持多级列表头.多级行表头.单元格合并.字体设置等 ...

  5. duilib进阶教程 -- 改进窗口拖动 (12)

    现在大家应该都知道caption="0,0,0,32",是指示标题栏区了吧,如果想要整个窗口都能拖动呢? 那直接把高度改成和窗口一样不就得了~O(∩_∩)O~ 嗯,这样是可以,比如 ...

  6. duilib属性列表

    <?xml version="1.0" encoding="UTF-8"?> <!-- 可能有错漏,欢迎补充.wangchyz(wangchy ...

  7. nim_duilib(15)之duilib属性列表.xml

    Note 为了更加方便查看duilib的属性(github有时候打不开),特此记录. 阅读本文,可以知道控件有哪些属性,可以写在xml文件中.个别需要结合源码一起看 from here 原文 < ...

  8. NumberSeekBar 可任意拖动和自动

    package com.example.numberseekbar; import android.content.Context; import android.content.res.Resour ...

  9. C#:ListView控件如何实现点击列表头进行排序?

    using System; using System.Collections; using System.Windows.Forms; namespace Common { /// <summa ...

随机推荐

  1. 20145321 《网络对抗》 Web基础

    20145321 <网络对抗> Web基础 基础问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能,一个表单有三个基本组成部分:表单标签——这里面包含了处理表单数据所用CGI程序 ...

  2. 格式化输出%与format

    一.%的用法 1.1整数输出 %o —— oct 八进制 : %d —— dec 十进制 : %x —— hex 十六进制 >>> print('%o' % 20) 24 >& ...

  3. Bootloader之uBoot简介

    本文转载自:http://blog.ednchina.com/hhuwxf/1915416/message.aspx 一.Bootloader的引入 从前面的硬件实验可以知道,系统上电之后,需要一段程 ...

  4. Linux文件时间详解ctime、mtime、atime【转】

    本文转载自:http://blog.csdn.net/doiido/article/details/43792561 Linux系统文件有三个主要的时间属性,分别是 ctime(change time ...

  5. JavaScript:Array属性方法

    ,,,,]; console.dir(arr); var pro=Object.getPrototypeOf(arr); console.dir(pro); 来一个个的查看数组的属性,方法 1.Arr ...

  6. BZOJ5170: Fable 树状数组

    Description 有这么一则传闻,O(nlogn)的排序发明之前,滋滋国的排序都是采用的冒泡排序.即使是冒泡排序,对当时的国民 来说也太复杂太难以理解,于是滋滋国出现了这样一个职业——排序使,收 ...

  7. Java中的RTTI

    RTTI可以帮助我们在运行时识别对象和类的信息. 一般传统的RTTI有三种实现方式: 1. 向上转型或向下转型(upcasting and downcasting),在java中,向下转型(父类转成子 ...

  8. Python中通过csv的writerow输出的内容有多余的空行

    第一种方法 如下生成的csv文件会有多个空行 import csv #python2可以用file替代open with open("test.csv","w" ...

  9. C++ Boost在VS2015中的使用

    1.下载包 目录结构: 切换到上面的目录,然后运行 bootstrap.bat 执行完毕后会生成两个exe文件 继续执行 bjam.exe 结束后,目录如下 2.设置路径 测试 #include &q ...

  10. shell 逻辑操作符

    Shell还提供了与( -a ).或( -o ).非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为:"!"最高,"-a"次之,"-o&qu ...