其实我已经实现了点击”修改“,弹出对话框,然后将要改的数据输入到编辑框,实现修改功能,但是弹出的对话框上没有原来的数据。要实现弹出对话框时,原来的数据还在,代码该如何写呢?感谢各位了。
我的修改函数如下:
void CMylistctrlDlg::OnModRow()
{
POSITION spos=NULL;
spos = m_list.GetFirstSelectedItemPosition();
int nSelItem = -1;
nSelItem = m_list.GetNextSelectedItem(spos);//找到要修改的行
CADDDLG dlg;
int nret=dlg.DoModal ();
if(nSelItem >= 0 && nSelItem<m_list.GetItemCount())
{
if(nret==IDOK)
{
CString str;
UpdateData(FALSE);
str.Format (_T("%s"),dlg.m_id) ;
m_list.SetItemText(nSelItem,0,str);//改该行第0项
str.Format (_T("%s"),dlg.m_time ) ;
m_list.SetItemText(nSelItem,1,str);//改该行第1项
str.Format (_T("%s"),dlg.m_chan ) ;
m_list.SetItemText(nSelItem,2,str);//改该行第2项
str.Format (_T("%s"),dlg.m_x ) ;
m_list.SetItemText(nSelItem,3,str);//改该行第3项
str.Format (_T("%s"),dlg.m_y ) ;
m_list.SetItemText(nSelItem,4,str);//改该行第4项
}
}
}
11 个解决方案
#1
CADDDLG dlg;
int nret=dlg.DoModal ();
在DoModal之前,传入需要被修改的内容
int nret=dlg.DoModal ();
在DoModal之前,传入需要被修改的内容
#2
把列表里的值获取后给对话框上空件 然后用UpdateData(false)
修改了控件上的值后,取对话框上空件的值 UpdateData(true)
修改了控件上的值后,取对话框上空件的值 UpdateData(true)
#3
取出数据,赋值给修改对话框。
#4
怎么传入呢?
#5
修改弹出对话框的构造函数将要修改的参数传递进入
#6
你说的我明白,但具体怎么实现呢?
#7
你的对话框类CADDDLG有一些成员变量:m_id、m_time这样的,在你声明CADDDLG dlg之后,DoModal弹出对话框之前,给这些m_id等变量赋值。然后DoModal弹出了对话框,修改这些m_id等值,关闭对话框后(即DoModal返回),你的dlg.m_id就是你修改后的值了
#8
如果这样的话,选中任意一行,弹出对话框的值都是一样的吧,我想要的的是选中任意一行,弹出对话框时,显示的是该行的数据。
#9
怎么没人回呢?怎样把选中行的值传给变量m_id,m_time等啊?急求!!!感谢各位了
#10
CADDDLG dlg;
tmp0=m_list.GetItemText(nSelItem,0);//获取选中行的第一列的值
tmp1=m_list.GetItemText(nSelItem,1);//获取选中行的第二列的值
tmp2=m_list.GetItemText(nSelItem,2);//获取选中行的第三列的值
tmp3=m_list.GetItemText(nSelItem,3);//获取选中行的第四列的值
tmp4=m_list.GetItemText(nSelItem,4);//获取选中行的第五列的值
dlg.m_name=tmp0;
dlg.m_addr=tmp1;
dlg.m_type=tmp2;
dlg.m_x=tmp3;
dlg.m_y=tmp4;
tmp0=m_list.GetItemText(nSelItem,0);//获取选中行的第一列的值
tmp1=m_list.GetItemText(nSelItem,1);//获取选中行的第二列的值
tmp2=m_list.GetItemText(nSelItem,2);//获取选中行的第三列的值
tmp3=m_list.GetItemText(nSelItem,3);//获取选中行的第四列的值
tmp4=m_list.GetItemText(nSelItem,4);//获取选中行的第五列的值
dlg.m_name=tmp0;
dlg.m_addr=tmp1;
dlg.m_type=tmp2;
dlg.m_x=tmp3;
dlg.m_y=tmp4;
#11
感谢各位,问题解决了
#1
CADDDLG dlg;
int nret=dlg.DoModal ();
在DoModal之前,传入需要被修改的内容
int nret=dlg.DoModal ();
在DoModal之前,传入需要被修改的内容
#2
把列表里的值获取后给对话框上空件 然后用UpdateData(false)
修改了控件上的值后,取对话框上空件的值 UpdateData(true)
修改了控件上的值后,取对话框上空件的值 UpdateData(true)
#3
取出数据,赋值给修改对话框。
#4
怎么传入呢?
#5
修改弹出对话框的构造函数将要修改的参数传递进入
#6
你说的我明白,但具体怎么实现呢?
#7
你的对话框类CADDDLG有一些成员变量:m_id、m_time这样的,在你声明CADDDLG dlg之后,DoModal弹出对话框之前,给这些m_id等变量赋值。然后DoModal弹出了对话框,修改这些m_id等值,关闭对话框后(即DoModal返回),你的dlg.m_id就是你修改后的值了
#8
如果这样的话,选中任意一行,弹出对话框的值都是一样的吧,我想要的的是选中任意一行,弹出对话框时,显示的是该行的数据。
#9
怎么没人回呢?怎样把选中行的值传给变量m_id,m_time等啊?急求!!!感谢各位了
#10
CADDDLG dlg;
tmp0=m_list.GetItemText(nSelItem,0);//获取选中行的第一列的值
tmp1=m_list.GetItemText(nSelItem,1);//获取选中行的第二列的值
tmp2=m_list.GetItemText(nSelItem,2);//获取选中行的第三列的值
tmp3=m_list.GetItemText(nSelItem,3);//获取选中行的第四列的值
tmp4=m_list.GetItemText(nSelItem,4);//获取选中行的第五列的值
dlg.m_name=tmp0;
dlg.m_addr=tmp1;
dlg.m_type=tmp2;
dlg.m_x=tmp3;
dlg.m_y=tmp4;
tmp0=m_list.GetItemText(nSelItem,0);//获取选中行的第一列的值
tmp1=m_list.GetItemText(nSelItem,1);//获取选中行的第二列的值
tmp2=m_list.GetItemText(nSelItem,2);//获取选中行的第三列的值
tmp3=m_list.GetItemText(nSelItem,3);//获取选中行的第四列的值
tmp4=m_list.GetItemText(nSelItem,4);//获取选中行的第五列的值
dlg.m_name=tmp0;
dlg.m_addr=tmp1;
dlg.m_type=tmp2;
dlg.m_x=tmp3;
dlg.m_y=tmp4;
#11
感谢各位,问题解决了