Report List Controls
Report风格的ListCtrl的扩展,原文链接地址:http://www.codeproject.com/Articles/5560/Another-Report-List-Control
1.列排序
BOOL IsSortable() const; // Is sort allowed?
BOOL SetSortable(BOOL bSet); // Allow/disallow sorting
BOOL IsSortAscending() const;
int GetSortedColumn() const;
// Sort a specified column.
void SortItems(int nColumn, BOOL bAscending);
A message WM_ITEM_SORTED
is sent to the parent window after a sorting is completed, the column index is passed as wParam
and sorting method is passed as lParam
(0=descending, 1=ascending).
2.列中排序
单列中,按照每一部分排列,如separator一部分进行排列。
1)不用字符串进行排列:
m_wndList.SetSortSeparator(NULL); // Disable sort-separator
// Sort the first column in ascending order
m_wndList.SortItems(0, TRUE);
2)按照separator字符串进行排列:
// m_wndList.SetSortSeparator(NULL); // Disable sort-separator
// m_wndList.SortItems(0, TRUE); // Sort the first column in ascending order // Use string "Separator" as the sort-separator
m_wndList.SetSortSeparator(_T("Separator"));
// Sort the first column in ascending order
m_wndList.SortItems(0, TRUE);
2)其他相关函数:
void SetSortSeparator(LPCTSTR lpSortSeparator);
LPCTSTR GetSortSeparator() const;
3.子项可编辑
BOOL IsEditable() const; // Is Item text editable?
void SetEditable(BOOL bSet = TRUE); // Allow item text editting // Display the editbox, previous edit are committed
BOOL StartEdit(int nItem, int nSubItem); BOOL EndEdit(BOOL bCommit = TRUE); // Commit/cancel text edit, hide the editbox
CEdit* GetEditControl();
4.自定义框选
void SetCheckboxeStyle(int nStyle = RC_CHKBOX_NORMAL); // Set checkbox styles.
int GetCheckboxStyle() const;
----------------------------nStyle-------------------------------------------------------------
RC_CHKBOX_NONE
-- No checkbox displayedRC_CHKBOX_NORMAL
-- Normal style, multiple check marks allowedRC_CHKBOX_SINGLE
-- Single check only. Checkboxes are mutually exclusive, just like using radio buttons.RC_CHKBOX_DISABLED
-- Disabled, cannot be checked/unchecked by user input.
// Example: // Make the checkbox read-only
m_wndList.SetCheckboxeStyle(RC_CHKBOX_DISABLED);
5.列图标、子项颜色、子项图标
// Column header images
BOOL SetHeaderImage(int nColumn, int nImageIndex, BOOL bLeftSide = TRUE);
int GetHeaderImage(int nColumn) const;
CImageList* SetHeaderImageList(UINT nBitmapID, COLORREF crMask = RGB(255, 0, 255));
CImageList* SetHeaderImageList(CImageList* pImageList);
// Sub-item images
BOOL SetItemImage(int nItem, int nSubItem, int nImageIndex);
int GetItemImage(int nItem, int nSubItem) const;
CImageList* SetImageList(UINT nBitmapID, COLORREF crMask = RGB(255, 0, 255));
CImageList* SetImageList(CImageList* pImageList);
CImageList* GetImageList() const;
// Sub-item Text & Background Color
void SetItemTextColor(int nItem = -1, int nSubItem = -1,
COLORREF color = COLOR_INVALID, BOOL bRedraw = TRUE);
COLORREF GetItemTextColor(int nItem, int nSubItem) const;
void SetItemBkColor(int nItem = -1, int nSubItem = -1,
COLORREF color = COLOR_INVALID, BOOL bRedraw = TRUE);
COLORREF GetItemBkColor(int nItem, int nSubItem) const;
// Example: Set image and color for grid - 1st row 3rd column m_wndList.SetImageList(IDB_BITMAP1); // Using bitmap resource "IDB_BITMAP1"
m_wndList.SetItemImage(0, 2, 0); // Set the 1st row 3rd column with image index 0 // Set grid colors
m_wndList.SetItemTextColor(0, 2, RGB(255, 0, 0), TRUE); // Grid text color: red
m_wndList.SetItemBkColor(0, 2, RGB(0, 255, 0), TRUE); // Grid bkground color: green
6.方便操作
1)操作属性
RC_ITEM_ALL - All items regardless of states
RC_ITEM_SELECTED - Selected items
RC_ITEM_UNSELECTED - Unselected items
RC_ITEM_CHECKED - Checked items
RC_ITEM_UNCHECKED - Unchecked items
RC_ITEM_FOCUSED - Focused item
RC_ITEM_UNFOCUSED - Unfocused items
2)相关函数
int GetFirstItem(DWORD dwStates = RC_ITEM_ALL, int nStartAfter = -1) const;
int GetLastItem(DWORD dwStates = RC_ITEM_ALL, int nStartBefore = -1) const;
int GetItemCount(DWORD dwStates = RC_ITEM_ALL) const;
DWORD GetItemStates(int nItem) const;
BOOL ExamItemStates(int nItem, DWORD dwStates) const;
BOOL SetItemStates(int nItem, DWORD dwNewStates);
int SetAllItemStates(DWORD dwOldStates, DWORD dwNewStates);
void InvertItems(int nType); // RC_INVERT_SELECTION or RC_INVERT_CHECKMARK
3)example
// Example: // Select all items which were unselected and unchecked
m_wndList.SetAllItemStates(RC_ITEM_UNSELECTED | RC_ITEM_UNCHECKED, RC_ITEM_SELECTED); // How many items are not checked?
int n = m_wndList.GetItemCount(RC_ITEM_UNCHECKED); //Unselect and check all items regardless of their previous states
m_wndList.SetAllItemStates(RC_ITEM_ALL, RC_ITEM_UNSELECTED | RC_ITEM_CHECKED); // Delete all items which were selected and checked
m_wndList.DeleteAllItems(RC_ITEM_SELECTED | RC_ITEM_CHECKED);
7.方便定位
int MoveUp(int nItem, int nCount = 1); // Move an item upwards by "nCount" positions. // Move an item downwards by "nCount" positions.
int MoveDown(int nItem, int nCount = 1); int MoveToTop(int nItem); // Move an item up to the top.
int MoveToBottom(int nItem); // Move an item down to the bottom.
int MoveTo(int nItem, int nNewPosition); // Move an item to a particular position
BOOL SwapItems(int nItem1, int nItem2); // Swap two items including all attributes.
8.内容项操作
BOOL SetItemText(int nItem, int nSubItem, INT val);
BOOL SetItemText(int nItem, int nSubItem, UINT val);
BOOL SetItemText(int nItem, int nSubItem, LONG val);
BOOL SetItemText(int nItem, int nSubItem, ULONG val);
BOOL SetItemText(int nItem, int nSubItem, TCHAR val);
BOOL SetItemText(int nItem, int nSubItem, DOUBLE val, int nPrecision = -1);
BOOL SetItemText(int nItem, int nSubItem,
const COleDateTime& dateTime,
DWORD dwFlags = 0);
9.自适应
void CMyView::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy); // TODO: Add your message handler code here
m_wndList.ResizeToFitParent(); // Add this line!
}
10.例子
m_wndList.SetColumnHeader(_T("Student ID, 100; Enroll Date, 150; Score, 80, 2")); for (int i = 0; i < 10; i++)
{
const int IDX = m_wndList.InsertItem(0, _T(""));
m_wndList.SetItemText(IDX, 0, rand() % 3000);
m_wndList.SetItemText(IDX, 1, GenRandDate());
m_wndList.SetItemText(IDX, 2, (rand() % 51) + 50); for (int j = 0; j < 2; j++)
m_wndList.SetItemImage(IDX, j, rand() % 5); // subitem images } m_wndList.SetImageList(IDB_BITMAP1);
m_wndList.SetHeaderImageList(IDB_BITMAP2);
m_wndList.SetHeaderImage(0, 0);
m_wndList.SetHeaderImage(1, 2, FALSE);
m_wndList.SetHeaderImage(2, 1);
m_wndList.SetGridLines(TRUE); // SHow grid lines
m_wndList.SetCheckboxeStyle(RC_CHKBOX_NORMAL); // Enable checkboxes
m_wndList.SetEditable(TRUE); // Allow sub-text edit
m_wndList.SortItems(0, TRUE); // sort the 1st column, ascending
m_bSortable = m_wndList.IsSortable();
UpdateData(FALSE);
GetDlgItem(IDC_ALLOWSORT)->EnableWindow(m_wndList.HasColumnHeader()); // now play some colorful stuff // Set the 3rd column background color to yellow, text color to blue
m_wndList.SetItemTextColor(-1, 2, RGB(0, 0, 0));
m_wndList.SetItemBkColor(-1, 2, RGB(255, 255, 0)); for (int n = 0; n < m_wndList.GetItemCount(); n++)
{
const int SCORE = _ttoi(m_wndList.GetItemText(n, 2)); // student score if (SCORE < 60)
{
m_wndList.SetItemBkColor(n, -1, ::GetSysColor(COLOR_INFOBK));
m_wndList.SetItemTextColor(n, -1, RGB(255, 0, 0)); m_wndList.SetItemBkColor(n, 2, RGB(255, 0, 0));
m_wndList.SetItemTextColor(n, 2, RGB(255, 255, 255));
}
else if (SCORE > 90)
{
m_wndList.SetItemBkColor(n, -1, RGB(160, 255, 192));
m_wndList.SetItemTextColor(n, -1, RGB(0, 0, 255)); m_wndList.SetItemTextColor(n, 2, RGB(255, 255, 255));
m_wndList.SetItemBkColor(n, 2, RGB(0, 160, 0));
}
}
代码链接地址:http://download.csdn.net/detail/wuyuan2011woaini/9592993
Report List Controls的更多相关文章
- Percona Toolkit 使用
安装 percona-toolkit perl Makefile.PL make make test make install 默认安装到 /usr/local/bin 目录下 可能需要 DBI-1. ...
- WPF Combox实现下拉多选,可选中多个值
自定义多选MultiCombox,可以实现下拉列表多选 using System; using System.Collections.Generic; using System.Collections ...
- Session for SSRS Report of Microsoft Dynamics AX
Session for SSRS Report of Microsoft Dynamics AX 版权声明:本文为博主原创文章,未经博主允许不得转载. Contract •A data contrac ...
- Report processing of Microsoft Dynamic AX
Report processing of Microsoft Dynamic AX 版权声明:本文为博主原创文章,未经博主允许不得转载. The implementation of a general ...
- SQL Server 2008 R2 升级到 Service Pack 3后Report Builder启动不了
一同事将测试服务器从SQL Server 2008 R2 SP2升级到了SQL Server 2008 R2 SP3后发现Report Service的报表编辑时启动不了Report Builder, ...
- Crystal Report在.net中的两种显示方式
Crystal Report在.net中的两种显示方式 编写人:CC阿爸 2014-7-29 近来在完成深圳一公司的项目,对方对各方面要求相当严格,一不满意就拒绝签收,为了对修正水晶报表显示及导出的一 ...
- [转] Asp.net Report Viewer 简单实例
原文链接:http://www.aspsnippets.com/Green/Articles/ASPNet-Report-Viewer-control-Tutorial-with-example.as ...
- USB HID Report Descriptor 报告描述符详解
Report descriptors are composed of pieces of information. Each piece of information is called an Ite ...
- DevExpress ASP.NET Core Controls 2019发展蓝图(No.4)
本文主要为大家介绍DevExpress ASP.NET Core Controls 2019年的官方发展蓝图,更多精彩内容欢迎持续收藏关注哦~ [DevExpress ASP.NET Controls ...
随机推荐
- 比较body.onload(function())、$(document).ready(function())与$(windows).load(function)
原理对比: body.onload(function())是优先将document的DOM渲染,即将页面所有的元素(包括html标签以及所引用到的图片,flash媒体等媒体文件)加载完成,然后再执行页 ...
- .net多线程的发展
APM和EAP是在async/await之前的两种不同的异步编程模式. APM如果不阻塞主线程,那么完成通知(回调)就会执行在另外一个线程中,从而给我们更新UI带来一定的问题. EAP的通知事件是在主 ...
- GWYAlertSelectView 选择收货地址和选择联系人
iOS 开发在app内(特别是在类似购物和旅游类)经常会用到选择,添加联系人和收货地址,而且经常都是在跳转界面,很是麻烦,今天我就自己封装了一个类似弹出视图的代码,方便了很多!demo地址: http ...
- Play常用代码片段 http://www.anool.net/?p=625
持续更新中: (1)按照降序查询: List<Entity> entities= Entity.find("order by id desc").fetch(2); ...
- 原型 prototype
原型 prototype js 的对象比较 由于 js 是解释执行的语言, 那么再代码中出现函数与对象如果重复执行, 会创建多个副本 在代码中重复执行的代码容易出现重复的对象 创建一个 Person ...
- swift学习笔记之-下标脚本
//下标脚本subscript import UIKit /*下标脚本(Subscripts) 下标脚本: 1.可以定义在类(Class).结构体(structure)和枚举(enumeration) ...
- python基础之基本算法和装饰器
1.冒泡排序 关于冒泡排序实现大小比较,大索引会向后移动,这次循环将最大数值直接移动至最后. li = [,,,,] ): ]: temp = li[i] li[i] = li[i + ] li[i ...
- 使用WebMatrix发布网站
使用WebMatrix发布网站 WebMatrix 简介: Microsoft WebMatrix 是微软最新的 Web 开发工具,它包含了构建网站所需要的一切元素.您可以从开源 Web 项目或者内置 ...
- SharePoint 2013开发环境准备一些小事项
开发慢慢向着SharePoint 2013迁移,环境也开始慢慢准备起来了.由于FAST Search的集成,和缓存服务的加入,SharePoint 2013对开发机器要求的不是一般的高.这里介绍一下如 ...
- WEB程序调用客户端程序
最近一个项目中要点击WEB页面上的链接启动自己编写的程序,而且还要接收参数,google了1.5小时,终于初步试验通过了. 尝试google了:web send message windows for ...