甜石榴品种最好一种:一个MSFlexGrid 控件的使用的例子
来源:百度文库 编辑:中财网 时间:2024/05/10 11:11:28
本示例工程说明了 MSFlexGrid 控件的某些事件和容器功能。它表明如何使用 Visual Basic 标准控件实现可进行单元内部编辑的工作表。创建 MSFlexGrid 数据显示的步骤如下:
1. 创建控件。
2. 设置属性。
3. 添加行标头和列标头。
4. 添加单元内部编辑功能。
5. 向文本框(“编辑”框)添加更新数据的功能。
6. 将数据从文本框中复制到 MSFlexGrid。
安装
方案中使用下述控件:
■ MSFlexGrid 控件
■ TextBox 控件
创建控件
本例中添加一个 MSFlexGrid 控件并在其内部添加一个 TextBox 控件,由此创建父子关系。如下所示:
设置属性
为 MSFlexGrid 控件和 TextBox 控件设置下述属性:
对象 属性 设置值
MSFlexGrid 控件 Name Fg2
Cols 6
Rows 20
FillStyle 1 - Repeat
FocusRect 2 - Heavy
FontName Arial
FontSize 9
TextBox Name txtEdit
FontName Arial
FontSize 9
BorderStyle 0 - None
Visible False
添加行标头和列标头
将下列代码添加到窗体的 Form_Load 过程中以修改 MSFlexGrid 控件,使它在外观上与工作表相象:
Sub Form_Load ()
Dim i As Integer
'使第一列较窄。
Fg2.ColWidth(0) = Fg2.ColWidth(0) / 2
Fg2.ColAlignment(0) = 1 '放置在正中。
'标记行和列。
For i = Fg2.FixedRows To Fg2.Rows - 1
Fg2.TextArray(fgi(i, 0)) = i
Next
For i = Fg2.FixedCols To Fg2.Cols - 1
Fg2.TextArray(fgi(0, i)) = i
Next
'初始化编辑框(于是,现在可加载它)。
txtEdit = ""
End Sub
然后创建计算 TextArray 属性索引值的函数:
Function Fgi (r As Integer, c As Integer) As Integer
Fgi = c + Fg2.Cols * r
End Function
添加单元内部编辑功能
示例应用程序 (Flex.vbp) 演示了为移动和选择一组单元所需的功能。为添加单元内部编辑功能,须将下列代码添加到 MSFlexGrid 控件的 KeyPress 和 DblClick 事件中:
Sub Fg2_KeyPress (KeyAscii As Integer)
MSFlexGridEdit Fg2, txtEdit, KeyAscii
End Sub
Sub Fg2_DblClick ()
MSFlexGridEdit Fg2, txtEdit, 32 '模拟一个空格。
End Sub
为初始化文本框并将焦点从 MSFlexGrid 控件转移到 TextBox,可添加下列例程:
Sub MSFlexGridEdit (MSFlexGrid As Control, _
Edt As Control, KeyAscii As Integer)
'使用已输入的字符。
Select Case keyascii
'空格表示编辑当前的文本。
Case 0 To 32
Edt = MSFlexGrid
Edt.SelStart = 1000
'其它所有字符表示取代当前的文本。
Case Else
Edt = Chr(keyascii)
Edt.SelStart = 1
End Select
'在合适的位置显示 Edt。
Edt.Move MSFlexGrid.CellLeft, MSFlexGrid.CellTop, _
MSFlexGrid.CellWidth, MSFlexGrid.CellHeight
Edt.Visible = True
'启动工作。
Edt.SetFocus
End Sub
为更新数据向 TextBox 添加新的功能
将下列例程添加到 TextBox 的 KeyPress 和 DblClick 事件中,以实现数据更新:
Sub txtEdit_KeyPress (KeyAscii As Integer)
'删除回车符,以消除嘟嘟声。
If KeyAscii = vbCr Then KeyAscii = 0
End Sub
Sub txtEdit_KeyDown (KeyCode As Integer, _
Shift As Integer)
EditKeyCode Fg2, txtEdit, KeyCode, Shift
End Sub
Sub EditKeyCode (MSFlexGrid As Control, Edt As _
Control, KeyCode As Integer, Shift As Integer)
'标准编辑控件处理。
Select Case KeyCode
Case 27 'ESC:隐藏焦点并将其返回 MSFlexGrid。
Edt.Visible = False
MSFlexGrid.SetFocus
Case 13 'ENTER 将焦点返回 MSFlexGrid。
MSFlexGrid.SetFocus
Case 38 '向上。
MSFlexGrid.SetFocus
DoEvents
If MSFlexGrid.Row > MSFlexGrid.FixedRows Then
MSFlexGrid.Row = MSFlexGrid.Row - 1
End If
Case 40 '向下。
MSFlexGrid.SetFocus
DoEvents
If MSFlexGrid.Row < MSFlexGrid.Rows - 1 Then
MSFlexGrid.Row = MSFlexGrid.Row + 1
End If
End Select
End Sub
将 TextBox 的数据复制到 MSFlexGrid
最后,当把数据输入到 TextBox 中时,先告诉 MSFlexGrid 控件应该对数据做什么。当用户输入数据并按 ENTER 键,或用鼠标单击 MSFlexGrid 控件中的另一个单元时,焦点将返回此控件。这时 TextBox 中的文本被复制到活动单元中。将下列代码添加到 GotFocus 和 LeaveCell 事件过程中:
Sub Fg2_GotFocus ()
If txtEdit.Visible = False Then Exit Sub
Fg2 = txtEdit
txtEdit.Visible = False
End Sub
Sub Fg2_LeaveCell ()
If txtEdit.Visible = False Then Exit Sub
Fg2 = txtEdit
txtEdit.Visible = False
End Sub
运行时,就象在本例中那样可在单个单元中输入数据:
1. 创建控件。
2. 设置属性。
3. 添加行标头和列标头。
4. 添加单元内部编辑功能。
5. 向文本框(“编辑”框)添加更新数据的功能。
6. 将数据从文本框中复制到 MSFlexGrid。
安装
方案中使用下述控件:
■ MSFlexGrid 控件
■ TextBox 控件
创建控件
本例中添加一个 MSFlexGrid 控件并在其内部添加一个 TextBox 控件,由此创建父子关系。如下所示:
设置属性
为 MSFlexGrid 控件和 TextBox 控件设置下述属性:
对象 属性 设置值
MSFlexGrid 控件 Name Fg2
Cols 6
Rows 20
FillStyle 1 - Repeat
FocusRect 2 - Heavy
FontName Arial
FontSize 9
TextBox Name txtEdit
FontName Arial
FontSize 9
BorderStyle 0 - None
Visible False
添加行标头和列标头
将下列代码添加到窗体的 Form_Load 过程中以修改 MSFlexGrid 控件,使它在外观上与工作表相象:
Sub Form_Load ()
Dim i As Integer
'使第一列较窄。
Fg2.ColWidth(0) = Fg2.ColWidth(0) / 2
Fg2.ColAlignment(0) = 1 '放置在正中。
'标记行和列。
For i = Fg2.FixedRows To Fg2.Rows - 1
Fg2.TextArray(fgi(i, 0)) = i
Next
For i = Fg2.FixedCols To Fg2.Cols - 1
Fg2.TextArray(fgi(0, i)) = i
Next
'初始化编辑框(于是,现在可加载它)。
txtEdit = ""
End Sub
然后创建计算 TextArray 属性索引值的函数:
Function Fgi (r As Integer, c As Integer) As Integer
Fgi = c + Fg2.Cols * r
End Function
添加单元内部编辑功能
示例应用程序 (Flex.vbp) 演示了为移动和选择一组单元所需的功能。为添加单元内部编辑功能,须将下列代码添加到 MSFlexGrid 控件的 KeyPress 和 DblClick 事件中:
Sub Fg2_KeyPress (KeyAscii As Integer)
MSFlexGridEdit Fg2, txtEdit, KeyAscii
End Sub
Sub Fg2_DblClick ()
MSFlexGridEdit Fg2, txtEdit, 32 '模拟一个空格。
End Sub
为初始化文本框并将焦点从 MSFlexGrid 控件转移到 TextBox,可添加下列例程:
Sub MSFlexGridEdit (MSFlexGrid As Control, _
Edt As Control, KeyAscii As Integer)
'使用已输入的字符。
Select Case keyascii
'空格表示编辑当前的文本。
Case 0 To 32
Edt = MSFlexGrid
Edt.SelStart = 1000
'其它所有字符表示取代当前的文本。
Case Else
Edt = Chr(keyascii)
Edt.SelStart = 1
End Select
'在合适的位置显示 Edt。
Edt.Move MSFlexGrid.CellLeft, MSFlexGrid.CellTop, _
MSFlexGrid.CellWidth, MSFlexGrid.CellHeight
Edt.Visible = True
'启动工作。
Edt.SetFocus
End Sub
为更新数据向 TextBox 添加新的功能
将下列例程添加到 TextBox 的 KeyPress 和 DblClick 事件中,以实现数据更新:
Sub txtEdit_KeyPress (KeyAscii As Integer)
'删除回车符,以消除嘟嘟声。
If KeyAscii = vbCr Then KeyAscii = 0
End Sub
Sub txtEdit_KeyDown (KeyCode As Integer, _
Shift As Integer)
EditKeyCode Fg2, txtEdit, KeyCode, Shift
End Sub
Sub EditKeyCode (MSFlexGrid As Control, Edt As _
Control, KeyCode As Integer, Shift As Integer)
'标准编辑控件处理。
Select Case KeyCode
Case 27 'ESC:隐藏焦点并将其返回 MSFlexGrid。
Edt.Visible = False
MSFlexGrid.SetFocus
Case 13 'ENTER 将焦点返回 MSFlexGrid。
MSFlexGrid.SetFocus
Case 38 '向上。
MSFlexGrid.SetFocus
DoEvents
If MSFlexGrid.Row > MSFlexGrid.FixedRows Then
MSFlexGrid.Row = MSFlexGrid.Row - 1
End If
Case 40 '向下。
MSFlexGrid.SetFocus
DoEvents
If MSFlexGrid.Row < MSFlexGrid.Rows - 1 Then
MSFlexGrid.Row = MSFlexGrid.Row + 1
End If
End Select
End Sub
将 TextBox 的数据复制到 MSFlexGrid
最后,当把数据输入到 TextBox 中时,先告诉 MSFlexGrid 控件应该对数据做什么。当用户输入数据并按 ENTER 键,或用鼠标单击 MSFlexGrid 控件中的另一个单元时,焦点将返回此控件。这时 TextBox 中的文本被复制到活动单元中。将下列代码添加到 GotFocus 和 LeaveCell 事件过程中:
Sub Fg2_GotFocus ()
If txtEdit.Visible = False Then Exit Sub
Fg2 = txtEdit
txtEdit.Visible = False
End Sub
Sub Fg2_LeaveCell ()
If txtEdit.Visible = False Then Exit Sub
Fg2 = txtEdit
txtEdit.Visible = False
End Sub
运行时,就象在本例中那样可在单个单元中输入数据:
关于VB的MSFlexGrid控件
关于VB中的MSFlexGrid控件的属性
vb编程 MSFlexGrid 控件的几个小问题
VB中,把一个MSFlexGrid的样式copy给另一个MSFlexGrid
谁知道VB里面MSFlexGrid控件的哪个属性是返回所选中单元格的行数的
怎样让MSFlexGrid控件的网格大小随着输入字数的多少变化?
在MSFlexGrid控件,怎样把运行后表里的数据摆在正中间
vb中有什么和MSFLEXGRID相似但是功能却强一些的控件吗?
我要单击MSFlexGrid控件中的单元格内容能显示在旁边的文本框内
msflexgrid绑定check控件
vb MSFlexGrid控件
listview控件的使用
WORD2003控件的使用
VB中msflexgrid控件问题
如何在aspx页面中使用ascx控件(用户自定义的一个控件)?
delphi treeview 控件的使用
DataGrid控件的使用问题
VB,MSFlexGrid 控件,如何快速清空?
一个关于控件的问题
请问C#如何在一个类或一个窗体中使用用另一个窗体的控件?
关于VB的两个控件的使用
关于VB的winsock控件的使用
关于VB的DataGrid控件的使用
下载的VB控件怎么使用