Chinaunix首页 | 论坛 | 博客
  • 博客访问: 658109
  • 博文数量: 107
  • 博客积分: 4135
  • 博客等级: 上校
  • 技术积分: 1182
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-06 16:01
文章分类

全部博文(107)

文章存档

2020年(2)

2012年(5)

2011年(6)

2010年(23)

2009年(17)

2008年(35)

2007年(19)

我的朋友

分类:

2007-10-19 14:53:29

概述  
  MsFlexGrid   控件没有提供文本编辑的功能,下面的例子演示了如何利用一个TextBox   实现编辑当前网格的功能。  
   
  在按下一个键后,   就把TextBox   移动到当前的位置,   并激活。   在键入回车或移动到其他网格时,   就把TextBox   中的内容放到网格中。     
    
实现步骤  
  1   打开   VB6,   开启一个新的工程。  
   
  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   中移动,   按回车可以开始或结束编辑
阅读(1376) | 评论(1) | 转发(0) |
0

上一篇:MsgBox()函数

下一篇:SQL常用语句一览

给主人留下些什么吧!~~

chinaunix网友2008-09-10 22:02:07

Private Sub Grid1_Click() Grid1_KeyPress (KeyAscII) End Sub 别忘加上这条!