高分求教!flexgrid上的CEdit控件数据刷新问题,解决问题上给分!

weixiong 2002-06-01 03:44:03
void CUpdateView::OnClickMsflexgrid()
{
CRect rect;
m_FlexGrid.GetWindowRect (&rect);
int x,y,h,w;
x=MulDiv(m_nLogX,rect.left,1440)
+MulDiv(m_nLogX,m_FlexGrid.GetCellLeft (),1440)
+int(1.5*10); //调整值,视图中的left
y=MulDiv(m_nLogY,rect.top,1440)
+MulDiv(m_nLogY,m_FlexGrid.GetCellTop (),1440)
+int(1.5*38); //调整值 视图中的top
w=(m_FlexGrid.GetCellWidth()* m_nLogX)/1440;
h=(m_FlexGrid.GetCellHeight()* m_nLogY)/1440;
s=m_FlexGrid.GetText();
m_edit.MoveWindow(x,y,w,h,TRUE);
m_edit.BringWindowToTop();
m_edit.ShowWindow(SW_SHOW);
m_edit.EnableWindow(TRUE);
m_edit.SetFocus();
m_edit.SetWindowText(s);
}
然好编辑OnKillfocusEdit() 函数
void CUpdateView::OnKillfocusEdit()
{
CString ss;
m_edit.ShowWindow(SW_HIDE);
m_edit.EnableWindow(FALSE);
m_edit.GetWindowText(ss);
if(!strcmp(s,ss))//判断输入的数据和flexgrid显示的是否相同
m_FlexGrid.SetText(ss);//不相同则显示新数据!
UpdateData(FALSE);

}

可是不管怎样都不能显示新数据!
...全文
108 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanghanzhi 2002-06-11
  • 打赏
  • 举报
回复
void CUpdateView::OnKillfocusEdit()
{
// TODO: Add your control notification handler code here

CString ss;
m_edit.ShowWindow(SW_HIDE);
m_edit.EnableWindow(FALSE);
m_edit.GetWindowText(ss);
if(!strcmp(s,ss))//判断输入的数据和flexgrid显示的是否相同
****问题出在这一行,s为局部变量,在这里是空值去掉这一行,在调试一下即可*******


m_FlexGrid.SetText(ss);//不相同则显示新数据!
Invalidate();//也许它不必
UpdateWindow();
}
你捕捉了m_edit控件失去焦点消息,

void CUpdateView::OnOk()
{
// TODO: Add your control notification handler code here
CString cstr;
int i = 1; //这又有何价值呢?
m_FlexGrid.SetRow(i); //定位到第i行
m_FlexGrid.SetCol(1); //定位到第3列
cstr = m_FlexGrid.GetText();
m_pSet->m_xm=cstr; //记录集中保存的是一条记录,当前修改的是哪一条记录呢?

}




jiayp004 2002-06-08
  • 打赏
  • 举报
回复
试试再说
weixiong 2002-06-07
  • 打赏
  • 举报
回复
好象根本不起作用,当光标移动后,还是不能显示新数据呀!
高手都到哪里去了 ?请那位大虾给帮帮忙呀!!急急急急急!!!!
flyer_2001 2002-06-07
  • 打赏
  • 举报
回复
在m_FlexGrid.SetText()之后使用Invalidate()
hnyyy 2002-06-07
  • 打赏
  • 举报
回复
对需要更新的窗口使用
Invalidate();//也许它不必
UpdateWindow();
liugy 2002-06-06
  • 打赏
  • 举报
回复
m_FlexGrid.SetMetrixText(row, col, ss);//不相同则显示新数据!
liugy 2002-06-06
  • 打赏
  • 举报
回复
这样改一下
if(!strcmp(s,ss))//判断输入的数据和flexgrid显示的是否相同
{
m_FlexGrid.SetRow(row);//row--你要显示的行
m_FlexGrid.SetCol(col);//col--你要显示的列
m_FlexGrid.SetText(ss);//不相同则显示新数据!
}
UpdateData(FALSE);

或者
weixiong 2002-06-06
  • 打赏
  • 举报
回复
liugy(光哥)
应该是:
m_FlexGrid.SetTextMatrix(row, col, ss);//不相同则显示新数据!
可是还是不行,当光标移动后,还是不能显示新数据呀!
请那位大虾给帮帮忙呀!!
weixiong 2002-06-01
  • 打赏
  • 举报
回复
改过来了,不是这儿的问题
qiuanhong 2002-06-01
  • 打赏
  • 举报
回复
数据更新存在问题
同意楼上
softman_2000 2002-06-01
  • 打赏
  • 举报
回复
你应该在m_edit.GetWindowText(ss)调用之前调用UpdateData(false);

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧