| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4354 人关注过本帖
标题:CListctrl中的insertcolumn的作用和insertitem的作用是否交织
只看楼主 加入收藏
ding_inshili
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2007-9-13
收藏
 问题点数:0 回复次数:3 
CListctrl中的insertcolumn的作用和insertitem的作用是否交织

在列表控件CListctrl中函数insertcolumn(列索引,列结构指针 )表示按照列的索引插入列。既然如此,执行了该函数后列表也应该完成了|||到底有没有完成,我搞不清除,这也是问题所在|||(我的意思是把某些列插入后,则形成了一个列表。比如:从星期1--->星期5的课程表,按照星期(列)逐步插入后,则所有的行也就自然形成了(即:第一节课(monday->friday)语文,数学,英语,物理,化学自然形成)。


课程 星期1 星期2 星期3 星期4 星期5
----------------------------------------
1 语文 数学 英语 物理 化学
----------------------------------------
2 物理 化学 语文 数学 英语
----------------------------------------
3 数学 英语 物理 语文 化学
----------------------------------------
4 自习 计算机 美术 音乐 体育
----------------------------------------
5.....................................
----------------------------------------


问题:为什么还要insertitem函数干什么?

下面的代码就是我所说的问题,程序可以运行,但是本人就是有点不明白,请各位大侠指点【用到一点ODBC数据库方面的知识】,整个源代码如附件所示,可以运行,但是我有点搞不清这个道理。。


第一段代码:
int i=0,j=0;
CODBCFieldInfo DbFi;//存储记录集字段信息的结构体
LV_COLUMN m_Lc;//存储列信息的结构体
m_Lc.mask=LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;//设置列属性
//读取记录集的字段信息
for(i=0;i<m_Set->m_nFields;i++)
{
m_Set->GetODBCFieldInfo(i,DbFi);
m_Lc.iSubItem=i;
m_Lc.fmt=LVCFMT_LEFT;
m_Lc.cx=DbFi.m_strName.GetLength()*10+100;
m_Lc.pszText=DbFi.m_strName.GetBuffer(DbFi.m_strName.GetLength());
GetListCtrl().InsertColumn(i,&m_Lc);?????????把列插进,究竟插进去的是什么
}
..............

第2段代码:

LV_ITEM m_item;//条目结构体对象
CString string;//字符串临时变量
CDBVariant DbVariant;
i=0;
if(m_Set->IsEOF())//记录集是否为空
{
AfxMessageBox("记录集没有记录");
return;
}
m_Set->MoveFirst();//从第一个记录开始
while(m_Set->IsEOF()==0)//是否到达最后一个记录
{
m_item.mask=LVIF_TEXT;
m_item.iItem=i;
m_item.iSubItem=0;
m_Set->GetFieldValue((short)0,string);
m_item.pszText=string.GetBuffer(string.GetLength());
m_List->InsertItem(&m_item);//?????????还插这个鬼东西干什么?
//显示列数据
for(j=1;j<m_Set->m_nFields;j++)
{
m_Set->GetFieldValue((short)j,string);
m_List->SetItemText(i,j,string.GetBuffer(string.GetLength()));
}
m_Set->MoveNext();//下移记录
i++;
}

搜索更多相关主题的帖子: CListctrl insertcolumn insertitem 
2007-09-16 00:32
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
GetListCtrl().InsertColumn(i,&m_Lc);插入的是头上的那行.如:星期X....
m_List->InsertItem(&m_item);插入的是星期X的具体课程.

=×&D o I p R e E n C g T l X&×=
2007-09-17 09:15
gytxzyf
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-9-3
收藏
得分:0 
InsertColumn插入的是列标题,他旨在分列
InsertItem是插入一数据行,在这行里可以放置与列相对应的数据,如星期一-->第一节课-->语文
2007-09-17 11:06
赵博闻
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-9-20
收藏
得分:0 
我补充:
你现在是静态生成一张表所以感觉不到这两者的区别有多大。可在动态生成表中情况就不一样了。
动态生成表时要用InsertItem给出朱列索引,而InsertColum主要用在初始化时静态创建列头。
比如:
一般动态生成时需要用到InsertItem来设置列名,就是你那个“课程,星期一。。。”的列头。
同时还要给出一个分列的索引,既要在如“星期一”那列的那一行插入“自习”
如:
int pos,id=1;
pos = m_List.InsertItem(id,strDomainName);//主列索引
m_List.SetItemText(pos,0,MusicName);//第二个参数是分列索引
m_List.SetItemText(pos,1,ZhuoZhe);
m_List.SetItemText(pos,2,SomethingAbout);
m_pRecordset->MoveNext();//移到下一行
有时SetItemText里面的所有参数都是变量,用InsertColomn就无法实现了

2007-10-29 15:28
快速回复:CListctrl中的insertcolumn的作用和insertitem的作用是否交织
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030772 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved