
MFC 列表控件输出控制
我第一用这个控件,不知道怎么控制数据插入进去,百度了很久还找不到方法。前面定义了m_list.InsertColumn(0,"姓名");m_list.InsertColu...
我第一用这个控件,不知道怎么控制数据插入进去,百度了很久还找不到方法。
前面定义了
m_list.InsertColumn(0,"姓名");
m_list.InsertColumn(1,"性别");
m_list.InsertColumn(2,"学号");
m_list.SetColumnWidth(0,70);
m_list.SetColumnWidth(1,40);
m_list.SetColumnWidth(2,80);//这样没错吧?
以下是输出按钮:
_RecordsetPtr m_pRecordset(__uuidof(Recordset));
m_pRecordset=theApp.m_pConnection->Execute("select * from name",NULL,adCmdText);
if(!m_pRecordset->EndOfFile)
m_pRecordset->MoveFirst();
else
{
MessageBox("表内数据为空");
return;
}
while(!m_pRecordset->EndOfFile)
{
// m_pRecordset->GetCollect("name");//
// m_pRecordset->GetCollect("sex");//
//m_pRecordset->GetCollect("num"));//怎么把name,sex,num,插入一行里面?(InsertItem,SetItemText)都试过了,图片是InsertItem的输出结果。
m_pRecordset->MoveNext();
}
还有一个问题,在清空按钮那里我写了m_list.DeleteItem(0);这只能一条条删,怎么做到可以全部删除呢,还有鼠标指定的删除呢?
输出就如图片那样,没有办法做到一行一行。
希望大家可以讲解得详细点,谢谢了。
void CDiaoDlg::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
CRect rt;
m_list.GetSubItemRect(pNMListView->iItem,pNMListView->iSubItem,0,rt);
CString str=m_list.GetItemText(pNMListView->iItem,pNMListView->iSubItem);
//MessageBox(str);
RORD dlg;
dlg.m_4=str;
dlg.m_5=str;
dlg.m_6=str;
dlg.DoModal();
*pResult = 0;
}
我把数值取出来以后,只有一个变量str,那么这样的话另外的对话框3个位置数值都是一样,那该怎么办? 展开
前面定义了
m_list.InsertColumn(0,"姓名");
m_list.InsertColumn(1,"性别");
m_list.InsertColumn(2,"学号");
m_list.SetColumnWidth(0,70);
m_list.SetColumnWidth(1,40);
m_list.SetColumnWidth(2,80);//这样没错吧?
以下是输出按钮:
_RecordsetPtr m_pRecordset(__uuidof(Recordset));
m_pRecordset=theApp.m_pConnection->Execute("select * from name",NULL,adCmdText);
if(!m_pRecordset->EndOfFile)
m_pRecordset->MoveFirst();
else
{
MessageBox("表内数据为空");
return;
}
while(!m_pRecordset->EndOfFile)
{
// m_pRecordset->GetCollect("name");//
// m_pRecordset->GetCollect("sex");//
//m_pRecordset->GetCollect("num"));//怎么把name,sex,num,插入一行里面?(InsertItem,SetItemText)都试过了,图片是InsertItem的输出结果。
m_pRecordset->MoveNext();
}
还有一个问题,在清空按钮那里我写了m_list.DeleteItem(0);这只能一条条删,怎么做到可以全部删除呢,还有鼠标指定的删除呢?
输出就如图片那样,没有办法做到一行一行。
希望大家可以讲解得详细点,谢谢了。
void CDiaoDlg::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
CRect rt;
m_list.GetSubItemRect(pNMListView->iItem,pNMListView->iSubItem,0,rt);
CString str=m_list.GetItemText(pNMListView->iItem,pNMListView->iSubItem);
//MessageBox(str);
RORD dlg;
dlg.m_4=str;
dlg.m_5=str;
dlg.m_6=str;
dlg.DoModal();
*pResult = 0;
}
我把数值取出来以后,只有一个变量str,那么这样的话另外的对话框3个位置数值都是一样,那该怎么办? 展开
2个回答
展开全部
1.按照下面的操作是可以按行插入的:
int nItem = m_List.InsertItem(0, "test");
m_List.SetItem(nItem, 1, LVIF_TEXT, "test1", 0, 0, LVIS_SELECTED, LVIS_SELECTED);
m_List.SetItem(nItem, 2, LVIF_TEXT, "test2", 0, 0, LVIS_SELECTED, LVIS_SELECTED);
2。删除的话:用m_List.DeleteAllItems()
3.鼠标指定的删除:只能取得当前被选中项的索引号,然后用索引号删除
void CXXXXDlg::OnNMDblclkList(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
m_List.DeleteItem(pNMItemActivate->iItem)
*pResult = 0;
}
在RORD里面增加一个函数,public的,这个函数名称假如是:test();它的作用就是给rord这个对话框的编辑框赋值:
例如:
void test()
{
m_1 = "abc";
m_2 = "123";
m_3 = "ab88"
}
调用:
RORD dlg;
test();
dlg.DoModal();//弹出对话框
int nItem = m_List.InsertItem(0, "test");
m_List.SetItem(nItem, 1, LVIF_TEXT, "test1", 0, 0, LVIS_SELECTED, LVIS_SELECTED);
m_List.SetItem(nItem, 2, LVIF_TEXT, "test2", 0, 0, LVIS_SELECTED, LVIS_SELECTED);
2。删除的话:用m_List.DeleteAllItems()
3.鼠标指定的删除:只能取得当前被选中项的索引号,然后用索引号删除
void CXXXXDlg::OnNMDblclkList(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
m_List.DeleteItem(pNMItemActivate->iItem)
*pResult = 0;
}
在RORD里面增加一个函数,public的,这个函数名称假如是:test();它的作用就是给rord这个对话框的编辑框赋值:
例如:
void test()
{
m_1 = "abc";
m_2 = "123";
m_3 = "ab88"
}
调用:
RORD dlg;
test();
dlg.DoModal();//弹出对话框
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询