增加MsFlexGrid的编辑功能

本文介绍了一种在MsFlexGrid控件中实现文本编辑的方法。通过使用TextBox控件,可以在按下键盘后激活TextBox进行编辑,并在按下回车键或将焦点移至其他单元格时将文本保存到MsFlexGrid中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  概述  
  MsFlexGrid   控件没有提供文本编辑的功能,下面的例子演示了如何利用一个TextBox   实现编辑当前网格的功能。  
   
  在按下一个键后,   就把TextBox   移动到当前的位置,   并激活。   在键入回车或移动到其他网格时,   就把TextBox   中的内容放到网格中。    
   
  实现步骤  
  1   打开   VB5,   开启一个新的工程。  
   
  2   在菜单“工程”   中选择   “部件”,   在列表中选中   “Microsoft   FlexGrid   Control   ..”  
   
  3   放一个   MsFlexGrid   控件和一个TextBox   控件(Text1)到   Form1。   修改MsFlexGrid   控件的名称为   Grid1,   设置Grid1   的行,列   为   4,   固定行,列为   0。   设置   Text1   的   Visiable   为   False,   BorderStyle   为   None(0)。  
   
  4   在Form1   的代码中增加声明:  
   
  Const   ASC_ENTER   =   13   '回车  
  Dim   gRow   As   Integer  
  Dim   gCol   As   Integer  
   
  5   增加代码到   Grid_KeyPress   过程:  
   
  Private   Sub   Grid1_KeyPress(KeyAscii   As   Integer)  
  '   Move   the   text   box   to   the   current   grid   cell:  
  Text1.Top   =   Grid1.CellTop   +   Grid1.Top  
  Text1.Left   =   Grid1.CellLeft   +   Grid1.Left  
  '   Save   the   position   of   the   grids   Row   and   Col   for   later:  
  gRow   =   Grid1.Row  
  gCol   =   Grid1.Col  
  '   Make   text   box   same   size   as   current   grid   cell:  
  Text1.Width   =   Grid1.CellWidth   -   2   *   Screen.TwipsPerPixelX  
  Text1.Height   =   Grid1.CellHeight   -   2   *   Screen.TwipsPerPixelY  
  '   Transfer   the   grid   cell   text:  
  Text1.Text   =   Grid1.Text  
  '   Show   the   text   box:  
  Text1.Visible   =   True  
  Text1.ZOrder   0   '   把   Text1   放到最前面!  
  Text1.SetFocus  
  '   Redirect   this   KeyPress   event   to   the   text   box:  
  If   KeyAscii   <>   ASC_ENTER   Then  
  SendKeys   Chr$(KeyAscii)  
  End   If  
  End   Sub  
   
  6   增加代码到   Text1_KeyPress   过程:  
   
  Private   Sub   Text1_KeyPress(KeyAscii   As   Integer)  
  If   KeyAscii   =   ASC_ENTER   Then  
  Grid1.SetFocus   '   Set   focus   back   to   grid,   see   Text_LostFocus.  
  KeyAscii   =   0   '   Ignore   this   KeyPress.  
  End   If  
  End   Sub  
   
  7   增加代码到   Text1_LostFocus   过程:  
   
  Private   Sub   Text1_LostFocus()  
  Dim   tmpRow   As   Integer  
  Dim   tmpCol   As   Integer  
  '   Save   current   settings   of   Grid   Row   and   col.   This   is   needed   only   if  
  '   the   focus   is   set   somewhere   else   in   the   Grid.  
  tmpRow   =   Grid1.Row  
  tmpCol   =   Grid1.Col  
  '   Set   Row   and   Col   back   to   what   they   were   before   Text1_LostFocus:  
  Grid1.Row   =   gRow  
  Grid1.Col   =   gCol  
  Grid1.Text   =   Text1.Text   '   Transfer   text   back   to   grid.  
  Text1.SelStart   =   0   '   Return   caret   to   beginning.  
  Text1.Visible   =   False   '   Disable   text   box.  
  '   Return   row   and   Col   contents:  
  Grid1.Row   =   tmpRow  
  Grid1.Col   =   tmpCol  
  End   Sub  
   
  8   好了。   按   F5   开始测试。   您可以自由地在   Grid   中移动,   按回车可以开始或结束编辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值