如何在MSHFLEXGRID上进行操作?

kkttcsd 2001-08-14 03:27:32
在MSHFLEXGRID用键盘进行数据输入,听说可以用TEXTBOX进行,是如何作的,最好给出一个小例子?
...全文
133 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kkttcsd 2001-08-14
  • 打赏
  • 举报
回复
没有MSDN,有还问?!
playyuer 2001-08-14
  • 打赏
  • 举报
回复
你应该好好学学使用 MSDN (Help)!
songyangk 2001-08-14
  • 打赏
  • 举报
回复
OK,发完了。
kkttcsd 2001-08-14
  • 打赏
  • 举报
回复
tianao0001@sina.com
songyangk 2001-08-14
  • 打赏
  • 举报
回复
给个EMail,直接给你个例子吧。
playyuer 2001-08-14
  • 打赏
  • 举报
回复
在 Hierarchical FlexGrid 电子表格中编辑单元


在该方案中,您可以在 Hierarchical FlexGrid 电子表格中编辑单元。该方案举例说明了Hierarchical FlexGrid 的控件事件和容器的一些能力,并说明了如何使用该控件创建一个电子表格,可以在该电子表格中的单元中使用标准 Visual Basic 控件进行编辑。

注意 示例应用程序 (Flex.vbp) 举例说明了漫游和选择单元范围所必需的能力。

要创建该数据显示,请按照以下步骤执行:

创建 Hierarchical FlexGrid 和 TextBox 控件。


设置这些控件的属性。


对 Hierarchical FlexGrid 添加行和列标头。


添加单元内编辑到 Hierarchical FlexGrid。


添加功能到 TextBox 控件(“编辑”框),以便更新数据。


将数据从文本框复制到 Hierarchical FlexGrid。
要完成该方案,请按照该部分中的步骤顺序执行。

创建控件
添加一个 Hierarchical FlexGrid 到您的工程,然后添加一个 TextBox 控件以创建一个父子关系,如下所示:



设置控件的属性
如下所示设置 Hierarchical FlexGrid 和 TextBox 控件的属性:

MSHFlexGrid 控件

属性 设置值
Name Fg2
Cols 6
Rows 20
FillStyle 1 – Repeat
FocusRect 2 – Heavy
FontName Arial
FontSize 9


TextBox 控件

属性 设置值
Name TxtEdit
FontName Arial
FontSize 9
BorderSize 0 – None
Visible False


在电子表格中编辑单元
使用下列过程在您的 Hierarchical FlexGrid 中编辑单元。

要在电子表格中编辑单元,请按照以下步骤执行:

通过将下列代码添加到“代码编辑器”窗口中的 Form_Load 过程来修改您的 Hierarchical FlexGrid,使其代表一个电子表格:
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

2.如下创建计算 TextArray 属性索引值的函数:

Function Fgi (r As Integer, c As Integer) As Integer
Fgi = c + Fg2.Cols * r
End Function

将下列代码添加到 Hierarchical FlexGrid 的 KeyPress 和 DblClick 事件:
Sub Fg2_KeyPress (KeyAscii As Integer)
MSHFlexGridEdit Fg2, txtEdit, KeyAscii
End Sub

Sub Fg2_DblClick ()
MSHFlexGridEdit Fg2, txtEdit, 32 '模拟一个空格。
End Sub

4.添加下列例程以初始化文本框,并将焦点从 Hierarchical FlexGrid 传递到 TextBox 控件:

Sub MSHFlexGridEdit (MSHFlexGrid As Control, _
Edt As Control, KeyAscii As Integer)

'使用已输入的字符。
Select Case keyascii

'空格表示编辑当前的文本。
Case 0 To 32
Edt = MSHFlexGrid
Edt.SelStart = 1000

'其它所有字符表示取代当前的文本。
Case Else
Edt = Chr(keyascii)
Edt.SelStart = 1
End Select

'在合适的位置显示 Edt。
Edt.Move MSHFlexGrid.Left + MSHFlexGrid.CellLeft, _
MSHFlexGrid.Top + MSHFlexGrid.CellTop, _
MSHFlexGrid.CellWidth - 8, _
MSHFlexGrid.CellHeight - 8
Edt.Visible = True

'启动工作。
Edt.SetFocus
End Sub

5.通过将下列例程添加到 TextBox 的 KeyPress 和 DblClick 事件中来添加更新数据功能性:

Sub txtEdit_KeyPress (KeyAscii As Integer)
'删除回车符,以消除嘟嘟声。
If KeyAscii = Asc(vbCr) Then KeyAscii = 0
End Sub

Sub txtEdit_KeyDown (KeyCode As Integer, _
Shift As Integer)
EditKeyCode Fg2, txtEdit, KeyCode, Shift
End Sub

Sub EditKeyCode (MSHFlexGrid As Control, Edt As _
Control, KeyCode As Integer, Shift As Integer)

'标准编辑控件处理。
Select Case KeyCode

Case 27 'ESC:隐藏焦点并将其返回 MSFlexGrid。
Edt.Visible = False
MSHFlexGrid.SetFocus

Case 13 'ENTER 将焦点返回 MSFlexGrid。
MSHFlexGrid.SetFocus

Case 38 '向上。
MSHFlexGrid.SetFocus
DoEvents
If MSFlexGrid.Row > MSFlexGrid.FixedRows Then
MSFlexGrid.Row = MSFlexGrid.Row - 1
End If

Case 40 '向下。
MSFlexGrid.SetFocus
DoEvents
If MSHFlexGrid.Row > MSHFlexGrid.FixedRows Then
MSHFlexGrid.Row = MSHFlexGrid.Row - 1
End If
End Select
End Sub

接着,当把数据输入到 TextBox 中时,您需要先告诉Hierarchical MSFlexGrid 控件应该对数据做什么。当您输入数据并按下 ENTER 键,或用鼠标单击Hierarchical MSFlexGrid 控件中的另一个单元时,焦点将返回此控件。这时 TextBox 中的文本被复制到活动单元中;要这样做,请继续执行下列步骤。

6通过将下列代码添加到 GotFocus 和 LeaveCell 事件过程中,将数据从文本框复制到 Hierarchical FlexGrid:

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

一旦方案中的过程完成,则可以在运行时将数据输入到单个的单元中,如下面的图表所示。


一川烟草123 2001-08-14
  • 打赏
  • 举报
回复
VERSION 5.00
Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "MSFLXGRD.OCX"
Begin VB.Form frm_Vou_Edit_confirm
Caption = "Voucher Edit"
ClientHeight = 7755
ClientLeft = 4365
ClientTop = 495
ClientWidth = 12315
BeginProperty Font
Name = "Arial"
Size = 8.25
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
LinkTopic = "Form1"
ScaleHeight = 7755
ScaleWidth = 12315
StartUpPosition = 1 'CenterOwner
Begin VB.TextBox txtins
BorderStyle = 0 'None
BeginProperty Font
Name = "Arial"
Size = 9
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Left = 1290
MultiLine = -1 'True
TabIndex = 0
Top = 1980
Visible = 0 'False
Width = 1875
End
Begin MSFlexGridLib.MSFlexGrid mg1
Height = 7635
Left = 120
TabIndex = 1
Top = 600
Width = 12165
_ExtentX = 21458
_ExtentY = 13467
_Version = 393216
Rows = 3
Cols = 5
FixedRows = 0
FixedCols = 0
BackColorBkg = 12632256
WordWrap = -1 'True
FocusRect = 2
AllowUserResizing= 3
BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851}
Name = "Arial"
Size = 9
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
End
End
Attribute VB_Name = "frm_Vou_Edit_confirm"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim myrow As Integer
Dim mycol As Integer


Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then SendKeys "{tab}"
End Sub

Private Sub Form_Load()

initmg1

End Sub

Private Sub mg1_Click()
If mg1.CellAlignment < 3 Then txtins.Alignment = 0 Else txtins.Alignment = 1

End Sub

Private Sub mg1_DblClick()
On Error Resume Next
If mg1.Col >= 0 Then

txtins.Left = mg1.CellLeft + mg1.Left
txtins.Top = mg1.CellTop + mg1.Top
txtins.Height = mg1.CellHeight
txtins.Width = mg1.CellWidth
txtins.Visible = True
txtins.SelStart = 0
txtins.SelLength = Len(txtins.Text)
If IsNumeric(mg1.TextMatrix(mg1.Row, mg1.Col)) = True Then txtins.Alignment = 1 Else txtins.Alignment = 0
txtins.Text = mg1.TextMatrix(mg1.Row, mg1.Col)
mg1.TextMatrix(mg1.Row, mg1.Col) = ""
txtins.SetFocus
End If
myrow = mg1.Row
mycol = mg1.Col
End Sub

Private Sub mg1_MouseDown(Button As Integer, Shift As Integer, X As Single, y As Single)
mg1.TextMatrix(myrow, mycol) = txtins.Text
txtins.Visible = False
End Sub

Private Sub mg1_Scroll()
txtins.Text = ""
txtins.Visible = False

End Sub

Private Sub txtins_LostFocus()

mg1.TextMatrix(myrow, mycol) = txtins.Text
txtins.Visible = False

End Sub
Public Sub initmg1()
mg1.Clear
mg1.Rows = 10
mg1.Cols = 15
'Dim X As Integer
'For X = 0 To mg1.Cols - 1
' mg1.ColAlignment(X) = 0
'Next
mg1.FixedCols = 1
mg1.FixedRows = 1

End Sub
playyuer 2001-08-14
  • 打赏
  • 举报
回复
打开你的 MSDN (Help),
搜索:
在 Hierarchical FlexGrid 电子表格中编辑单元

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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