天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 42|回复: 0

MFC_list Control列表/表格控件

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
1.样式View:Report表格,list列表

2.设置风格:SetExtendedStyle

SetExtendedStyle函数的定义形式为:

DWORD SetExtendedStyle(DWORD dwNewStyle );
参数:dwNewStyle:CListCtrl的扩展样式(LVS_EX_GRIDLINES //绘制表格;LVS_EX_SUBITEMIMAGES//子项目图标列表;LVS_EX_CHECKBOXES //带复选框;LVS_EX_TRACKSELECT //自动换行;LVS_EX_HEADERDRAGDROP//报表头可以拖拽;LVS_EX_FULLROWSELECT //选择整行;LVS_EX_ONECLICKACTIVATE//单击激活;LVS_EX_TWOCLICKACTIVATE//双击激活;LVS_EX_FLATSB//扁平滚动条;LVS_EX_REGIONAL;LVS_EX_INFOTIP;LVS_EX_UNDERLINEHOT;LVS_EX_UNDERLINECOLD;LVS_EX_MULTIWORKAREAS//多工作区)

SetExtendedStyle函数的具体用法如例:

m_list.SetExtendedStyle(m_list.GetExtendedStyle() | LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT );
3.滚动条位置Left Scrollbar:滚动条在左侧还是右侧

4.MFC的表格不允许编辑,如果想编辑只能在编辑开始事件中把单元格处理成Edit,在编辑结束后把edit的值更新到list里:

(1)首先属性Edit Labels设为true;

(2)增加事件响应函数:

ON_NOTIFY(NM_DBLCLK, IDC_LIST_COORD, &CCoordManageDlg::OnNMDblclkListCoord)
ON_NOTIFY(LVN_ENDLABELEDIT, IDC_LIST_COORD, &CCoordManageDlg::OnLvnEndlabeleditListCoord)
双击事件:

void CCoordManageDlg::OnNMDblclkListCoord(NMHDR *pNMHDR, LRESULT *pResult)
{
        LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
        *pResult = 0;

        POSITION pos = m_listCoord.GetFirstSelectedItemPosition();
        int nSel = m_listCoord.GetNextSelectedItem(pos);
        if ( nSel >= 0 )
        {
                m_listCoord.SetFocus();
                CEdit* pEdit = m_listCoord.EditLabel( nSel );
        }
}
edit编辑结束事件

void CCoordManageDlg::OnLvnEndlabeleditListCoord(NMHDR *pNMHDR, LRESULT *pResult)
{
        NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);
        *pResult = 0;

        CString strName = pDispInfo->item.pszText;
        int nSel = pDispInfo->item.iItem;
        m_listCoord.SetFocus();

        if( ( ! strName.IsEmpty() ) && nSel >= 0 )
                m_listCoord.SetItemText( nSel, 0, strName);
}
(5)点击表头,获取列头的编号

ON_NOTIFY(HDN_ITEMCLICK, 0, &CStartDlg::OnHdnItemclickListStartmonitor)
void CStartDlg::OnHdnItemclickListStartmonitor(NMHDR *pNMHDR, LRESULT *pResult)
{
        NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
        int nRow =  pNMListView->iItem;
        switch(nRow)
        {
        case 0:
                break;
        case 1:
                break;
        }       
}
(6)获取当前选择项

    POSITION pos = GetFirstSelectedItemPosition();
    if (pos != NULL)
    {
        int iSubItem = GetNextSelectedItem(pos);
    }

 

 

 

 

MFC_list Control列表/表格控件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 11:36 , Processed in 0.164558 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表