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 displayed
    • RC_CHKBOX_NORMAL -- Normal style, multiple check marks allowed
    • RC_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));
            }
        }

    时间: 2024-10-29 14:56:46

    Report List Controls的相关文章

    SQL Server 2008 R2 升级到 Service Pack 3后Report Builder启动不了

    一同事将测试服务器从SQL Server 2008 R2 SP2升级到了SQL Server 2008 R2 SP3后发现Report Service的报表编辑时启动不了Report Builder,错误信息如下所示: PLATFORM VERSION INFO     Windows             : 6.1.7601.65536 (Win32NT)     Common Language Runtime     : 4.0.30319.18408     System.Deploy

    向现有mvc程序中加入devexpress report

    Open your ASP.NET MVC project. In the main menu of Visual Studio, click the DEVEXPRESS submenu and select ASP.NET Controls v17.1 | Run Wizard to Update Project.... 2.This invokes the DevExpress ASP.NET MVC Project Wizard. This wizard allows you to cu

    WTL - Virtual List Controls(WTL下使用虚拟列表)

    普通的 CListCtrl 在其数据达到10000以上时,拖动滚动条已卡,很不好.. Virtual List Controls,虚拟列表,我认为是一种列表的显示方式.. 普通列表:所有的列表数据加载完成再显示. 虚拟列表:只加载当前指定的要显示的数据(当收到 LVN_GETDISPINFO 消息时,会刷新列表,只刷新要显示的部分 ). 很明显,当数据量大的时候,谁优谁劣.. 比起 MFC,我更喜欢轻量级 WTL,就用 WTL 做个例子吧.. 1.新建 WTL 工程: 2.拖出列表控件 List

    Report processing of Microsoft Dynamic AX

    Report processing of Microsoft Dynamic AX The implementation of a general electronic report usually has four classes. Contract: Comment: Contract class is data contract class for SSRS report . Intent: Gets or sets the value of the data contract param

    Crystal Report在.net中的两种显示方式

    原文:Crystal Report在.net中的两种显示方式 编写人:CC阿爸 2014-7-29 近来在完成深圳一公司的项目,对方对各方面要求相当严格,一不满意就拒绝签收,为了对修正水晶报表显示及导出的一些小问题,无赖之下,仔细了解一下水晶报表的操作方法,逼苦我们这些苦逼的程序,虽说在以前的项目中,也常使用crystal report 来制作报表.并且针对web与winform 都各有不同的地方. 但总的来讲:显示水晶报表目前使用控件对象的有两种显示方式 1.      使用crystalRe

    USB HID Report Descriptor 报告描述符详解

    Report descriptors are composed of pieces of information. Each piece of information is called an Item.报告描述符由一些数据片组成.这些数据片被叫做Item.All items have a one-byte prefix that contains the item tag, item type, and item size. 每一个Item都包含一个字节的前缀,这个前缀中包含了三个信息--it

    SSRS运行report builder报错 的解决方案

    无法打开report builder 报错内容1:无法下载应用程序.应用程序中缺少必须的文件.请于应用程序供应商联系以获得帮助. log:以下是错误摘要,这些错误的详细信息列在该日志的后面. * 激活 D:\Downloads\ReportBuilder_3_0_0_0.application 导致异常. 检测到下列失败消息: + 下载 file:///D:/Downloads/RptBuilder_3/MSReportBuilder.exe.manifest 未成功. + 未能找到路径"D:\

    UniGui中使用Grid++Report报表控件子报表获取数据的方法

    Grid++Report是为优秀的报表控件,子报表是其重要功能之一,但Grid++Report提供的网页报表示范主要是以页面为主的,UniGui在Delphi中以快速编写web管理软件著称,但由于资料文档很少,经过摸索,Grid++Report的子报表要在uniGUi中正确获取子报表数据,只能通过Ajax数据回调的方式进行,在uniGUi中对前端Ajax的响应,就要是通过控件的AjaxEvent事件来处理.报表模板的展示部分的HTML代码要放在UniURLFrame控件的HTML属性中.Ajax

    DevExpress ASP.NET Core Controls v18.2新功能详解

    行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExpress ASP.NET Core Controls v18.2的新功能,新版30天免费试用!点击下载>> 全新的New ASP.NET Core Spreadsheet (CTP) 在新版本中,您可以非常轻松地将电子表格功能合并到任何ASP.NET Core应用程序中.新的Spreadsheet控件作为社区技术预览(CTP)提供