我用list control控件和若干文本做了一个对话框页面。是实现了在list control中选中一条记录,然后这条记录的相应数据,显示到相应的文本框中 我想请问,我想实现这样的一个目的怎么完成。即:我选择一个要修改的记录,然后在文本中进行修改,然后保存。保存之后我想对话框中还显示我修改的这条记录,并且在list control中那条记录为蓝色(即被选中)。因为我在修改记录,保存之后,是又重新加载的数据,所以每次保存之后都是显示第一条记录。在我添加一条记录的时候,也想保存后显示的是我添加的记录。请问应当怎么实现呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 InsertItem是可以指定插入的位置的,如果你给0就是插入到最前面。SetItemState可以设置记录的状态。 记录修改前的选中记录,重新加载后再调用Scroll()函数滚动动上次的位置即可。 LZ说的选中一条记录,然后你还想修改这个记录,那请问你要怎么修改?直接在LIST上操作?这似乎不大可能,应该是借助另外的EDIT控件吧?我想是不是可以把你的LIST控件添加一个消息响应函数,类型为选中,然后在选中的代码里写得到字符的部分,显示到EDIT控件上。然后对EDIT上的文字进行修改,修改后得到EDIT的文字并更新到LIST上我想这样做太麻烦了吧?你可以说下你具体要应用到什么上呢?然后我能帮到LZ的话再说说吧以上。 在你保存后重新加载之前,将当前选中的那行保存起来;在你重新加载之后,设置保存的那行为选中状态 //保存当前选中的行 int nRecord = -1; int nCount = m_wndList.GetItemCount(); for( int i = 0; i < nCount; i ++ ) { if( ( m_wndList.GetItemState( i, LVIS_SELECTED ) & LVIS_SELECTED ) == LVIS_SELECTED ) { nRecord = i; break; } } 你的重新加载动作... //设置保存的行的状态 if( nRecord >= 0 ) { m_wndList.SetItemState( nRecord, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED ); }如果添加记录,设置最后以行为选中状态 int nCount = m_wndList.GetItemCount(); m_wndList.SetItemState( nCount - 1, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED );当然,同2楼说的,再用Scroll()函数滚动动上次的位置即可。 选中的时候把那条记录位置记住不久行了啊int InsertItem( int nItem, LPCTSTR lpszItem );设置状态BOOL SetItemState( int nItem, LVITEM* pItem ); 树形控件的调用问题 摩迪泰克的MT5634做收发传真的,高分求解 关于mt.exe : general error c101008a 看看我的毕业设计,值几两银子 这个该如何操作。。。 请问combo box的高度如何设置? UNICODE写文本的问题.......郁闷好多天了~~~(请教)~~~~~~~~ 怎样将char*转换成UNICODE? 有谁能知道一下在VC中怎么和WIN版的MYSQL连起来,500分 我看见一个程序没有应用程序类,app类,可以吗? VC++ 6.0 装了英文版卸载后 再装中文版界面还是英文的? 大家来看看~~~遇见过这种情况没???
SetItemState可以设置记录的状态。
我想是不是可以把你的LIST控件添加一个消息响应函数,类型为选中,然后在选中的代码里写得到字符的部分,显示到EDIT控件上。
然后对EDIT上的文字进行修改,修改后得到EDIT的文字并更新到LIST上我想这样做太麻烦了吧?
你可以说下你具体要应用到什么上呢?然后我能帮到LZ的话再说说吧
以上。
在你重新加载之后,设置保存的那行为选中状态 //保存当前选中的行
int nRecord = -1;
int nCount = m_wndList.GetItemCount();
for( int i = 0; i < nCount; i ++ )
{
if( ( m_wndList.GetItemState( i, LVIS_SELECTED ) & LVIS_SELECTED ) == LVIS_SELECTED )
{
nRecord = i;
break;
}
} 你的重新加载动作... //设置保存的行的状态
if( nRecord >= 0 )
{
m_wndList.SetItemState( nRecord, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED );
}如果添加记录,设置最后以行为选中状态
int nCount = m_wndList.GetItemCount();
m_wndList.SetItemState( nCount - 1, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED );当然,同2楼说的,再用Scroll()函数滚动动上次的位置即可。
int InsertItem( int nItem, LPCTSTR lpszItem );
设置状态
BOOL SetItemState( int nItem, LVITEM* pItem );