现在有一个document/view结构(含crecordset和crecordview),个人财务软件,在主窗口放置了一个clistctrl控件。希望在打开界面时当点击“收入表”控件时能显示出一个六列的列表,并将数据库中的相关内容显示出来,应该把初始化代码放在哪里,最好能给出基本的初始化代码,谢谢!
我自己放在OnInitialUpdate()里面,
代码如下:{
CINCOMESET m_incomeset;//插入列没有问题,可以正常显示各列标题
m_main.InsertColumn( 0, "date", LVCFMT_LEFT, 100 );
m_main.InsertColumn( 1, "name", LVCFMT_LEFT, 100 );
m_main.InsertColumn( 2, "type", LVCFMT_LEFT, 150 );
m_main.InsertColumn( 3, "money", LVCFMT_LEFT, 100 );
m_main.InsertColumn( 4, "place", LVCFMT_LEFT, 150 );
m_main.InsertColumn( 5, "way", LVCFMT_LEFT, 200 );
m_main.InsertColumn( 6,"credit card number",LVCFMT_LEFT,200 );
m_main.InsertColumn( 7, "re", LVCFMT_LEFT, 200 );
m_main.ModifyStyle( 0, LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SINGLESEL );
m_main.SetExtendedStyle( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES
| LVS_EX_HEADERDRAGDROP );
//但是一旦数据库有信息后,想将其读出来,就会ASSERT,
try {
if ( m_incomeset.IsOpen() )
m_incomeset.Close();
m_incomeset.Open();
m_incomeset.MoveFirst();
while( !m_incomeset.IsEOF() )
{ int nItem = m_main.InsertItem( 0, m_incomeset.m_income_date );
m_main.SetItemText( nItem, 1, m_incomeset.m_income_name );
m_main.SetItemText( nItem, 2, m_incomeset.m_income_type );
m_main.SetItemText( nItem, 3, m_incomeset.m_income_money );
m_main.SetItemText( nItem, 4, m_incomeset.m_income_place );
m_main.SetItemText( nItem, 5, m_incomeset.m_income_way );
m_main.SetItemText( nItem, 6, m_incomeset.m_income_credit_card_number);
m_main.SetItemText( nItem, 7, m_incomeset.m_income_re);
m_incomeset.MoveNext();
}
m_incomeset.Close();
}
catch( ... )
{
MessageBox( " wrong ! " );
m_incomeset.Close();
MessageBox( " wrong ! " );
}
}希望大侠赐教,我调试俩天了,根本没结果,现在一点信心都没有了,多谢你的帮助啊
我自己放在OnInitialUpdate()里面,
代码如下:{
CINCOMESET m_incomeset;//插入列没有问题,可以正常显示各列标题
m_main.InsertColumn( 0, "date", LVCFMT_LEFT, 100 );
m_main.InsertColumn( 1, "name", LVCFMT_LEFT, 100 );
m_main.InsertColumn( 2, "type", LVCFMT_LEFT, 150 );
m_main.InsertColumn( 3, "money", LVCFMT_LEFT, 100 );
m_main.InsertColumn( 4, "place", LVCFMT_LEFT, 150 );
m_main.InsertColumn( 5, "way", LVCFMT_LEFT, 200 );
m_main.InsertColumn( 6,"credit card number",LVCFMT_LEFT,200 );
m_main.InsertColumn( 7, "re", LVCFMT_LEFT, 200 );
m_main.ModifyStyle( 0, LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SINGLESEL );
m_main.SetExtendedStyle( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES
| LVS_EX_HEADERDRAGDROP );
//但是一旦数据库有信息后,想将其读出来,就会ASSERT,
try {
if ( m_incomeset.IsOpen() )
m_incomeset.Close();
m_incomeset.Open();
m_incomeset.MoveFirst();
while( !m_incomeset.IsEOF() )
{ int nItem = m_main.InsertItem( 0, m_incomeset.m_income_date );
m_main.SetItemText( nItem, 1, m_incomeset.m_income_name );
m_main.SetItemText( nItem, 2, m_incomeset.m_income_type );
m_main.SetItemText( nItem, 3, m_incomeset.m_income_money );
m_main.SetItemText( nItem, 4, m_incomeset.m_income_place );
m_main.SetItemText( nItem, 5, m_incomeset.m_income_way );
m_main.SetItemText( nItem, 6, m_incomeset.m_income_credit_card_number);
m_main.SetItemText( nItem, 7, m_incomeset.m_income_re);
m_incomeset.MoveNext();
}
m_incomeset.Close();
}
catch( ... )
{
MessageBox( " wrong ! " );
m_incomeset.Close();
MessageBox( " wrong ! " );
}
}希望大侠赐教,我调试俩天了,根本没结果,现在一点信心都没有了,多谢你的帮助啊
{ int nItem = m_main.InsertItem( 0, m_incomeset.m_income_date );
m_main.SetItemText( nItem, 1, m_incomeset.m_income_name );
m_main.SetItemText( nItem, 2, m_incomeset.m_income_type );
m_main.SetItemText( nItem, 3, m_incomeset.m_income_money );
m_main.SetItemText( nItem, 4, m_incomeset.m_income_place );
m_main.SetItemText( nItem, 5, m_incomeset.m_income_way );
m_main.SetItemText( nItem, 6, m_incomeset.m_income_credit_card_number);
m_main.SetItemText( nItem, 7, m_incomeset.m_income_re);
m_incomeset.MoveNext();
}
我用的是没有派生的CListCtrl
在资源中设置:view属性为Report
在CShowDlg::OnInitDialog()写代码没有问题:
m_lstConTab.InsertColumn(0, "序号",LVCFMT_LEFT,40);
m_lstConTab.InsertColumn(1, "形状",LVCFMT_LEFT,45);
m_lstConTab.InsertColumn(2, "边长比", LVCFMT_LEFT,80);
m_lstConTab.InsertColumn(3, "相对含量", LVCFMT_LEFT,80);
m_lstConTab.InsertColumn(4, "分类", LVCFMT_LEFT,80);
m_lstConTab.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);//|LVS_EX_CHECKBOXES); int nCount = (int)m_saTriRule.GetCount();
int nIndex = m_lstConTab.GetItemCount();
for(int i=0;i<nCount;i++)
{
CString strXh;
strXh.Format("%d",i+1);
nIndex = m_lstConTab.InsertItem(nIndex,strXh); CString strText;
strText = m_saTriRule.GetAt(i);
CString strXz,strBcb,strC1,strJsjl;
GetRuleItem(strText,strXz,strBcb,strC1,strJsjl); m_lstConTab.SetItemText(nIndex,1,strXz);
m_lstConTab.SetItemText(nIndex,2,strBcb);
m_lstConTab.SetItemText(nIndex,3,strC1);
m_lstConTab.SetItemText(nIndex,4,strJsjl); nIndex = m_lstConTab.GetItemCount();
}
中间没有OnInitDialog()可以用啊,我是将ListCtrl放在主界面中
可能是你工程的问题,检查一下资源ID,把工程Rebuild All。
跟踪一下,看看代码是哪一句出错。
万一还是不行,你把VIEW及代码弄出来做一个简单的工程
发到,我帮你调试一下看看。