| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 | 论坛
    想学好编程,学好外语很重要  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> 应用开发 >> vb >> 控件 >> 文章正文
加强型的 MSFlexGrid            【字体:
加强型的 MSFlexGrid
作者:-    文章来源:-    点击数:    更新时间:2006-6-10

王国荣的范例
修改过王国荣先生的范後,功能如下:
1.在MSFlexGrid上按Enter时,可以编修当格(Current Cell)的内容
2.在MSFlexGrid上Click时,可以编修当格(Current Cell)的内容
3.在MSFlexGrid上固定列与固定行上面按Mouse右键时可以修改其Title
4.允许MultiLine/MultiCol的Selection 与按Ctl-Mouse左键的MultiSelect Columns
5.进入Cell的EditMode时,按up/Down键会离开Current Cell而进入上/下 一行的Cell
6.进入Cell的EditMode时,按Escape回覆原本的字串

MSFlexGrid内的资料原本是不能让使用者直接KeyIn的,所以找个变通的方式,便是使用
TextBox来Keyin,再把TextBox内的值放入MSFlexGrid中,但重点就变成TextBox如何设
定位置、大小於MSFlexGrid之上。这个部份在toEditGrid的程式中做。何时启动TextBox
让之可以输入资料呢,有两个地方,一个在MSFlexGrid上的Mouse_Click,而且考虑可以
在Grid上做多栏的选取,所以只有在.ColSel = .Col And .RowSel = .Row时才可以进入
EditMode。另一个地方在MSFlexGrid上按Enter,也会令之进入EditMode。而离开EditMode
的时机在於TextBox上按Enter/Up/Down/Esc 键。

另外,我们如果想要保留MSFlexGrid可以整列整行选取,而且又可以更动MSFlexGrid最
上与最左边的固定列之Title,我的做法是,在MSFlexGrid上MouseUp时来判定Mouse所在
的Col与Row,如果MouseCol=0 or MouseRow = 0代表是在FixedCol/FixedRow 上按下
Mouse,如果按的是右键表示要修改FixCol或FixRow的Title,如果是左键,那不做任何
处理,此时,如果AllowBigSelection=True时,则会选取整行或整列。'
'以下在Form需一个MSFlexGrid, 一个TextBox
Option Explicit
Private OldText As String
Private ColSelect() As Boolean
Private SaveCellBkColor As Long

Private Sub Form_Load()
Text1.Visible = False
Me.Show
With MSFlexGrid1
     .Cols = 5
     .Rows = 15
     ReDim ColSelect(1 To .Cols - 1)
     SaveCellBkColor = .CellBackColor
     Call InitGrid
     .AllowBigSelection = True
     .FillStyle = flexFillRepeat
     '.AllowUserResizing = True  '请事先设好
End With
End Sub

Private Sub InitGrid()
Dim i As Long
With MSFlexGrid1
  .Row = 0
  For i = 1 To .Cols - 1
      .Col = i: .Text = "Col" + Format(i, "00") '若Cols超出99,则修改Format
  Next '的格式
End With
With MSFlexGrid1
  .Col = 0
  For i = 1 To .Rows - 1
      .Row = i: .Text = i
  Next
End With
'Dim width5 As Long
'With MSFlexGrid1
'     width5 = .Width \ .Cols
'    For i = 0 To .Cols - 1
'         .ColWidth(i) = width5
'     Next
'End With
End Sub
Private Sub MSFlexGrid1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim inMostLeft As Boolean
Dim inMostTop As Boolean

Call ProcMultiColSel(Shift)
With MSFlexGrid1
     If Button = vbKeyRButton Then
'按mouse 右键且位於最上列/最左行则是更动title
If .MouseCol = 0 Or .MouseRow = 0 Then
   Call toEditGrid(.MouseCol, .MouseRow)
End If
     Else
If Button = vbKeyLButton The

[1] [2] [3] 下一页  

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • 用VB编写DirectX7.0游戏(下…

  • 用VB编写DirectX7.0游戏(上…

  • 使用OLE DB和ADO调用返回记录…

  • 使用VB调用Oracle程序包内的…

  • VB中用ADO对象动态创建数据库…

  • fffff

  • 如何用MSComm Control传Bina…

  • MultiLink的WinSock Server程…

  • 用VB制作浏览器

  • 用VB编写网络寻呼机

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |