【VB开源代码栏目提醒】:网学会员--在 VB开源代码编辑为广大网友搜集整理了:main_xslr.frm绩等信息,祝愿广大网友取得需要的信息,参考学习。
VERSION 5.00
Object = "{0ECD9B60-23AA-11D0-B351-00A0C9055D8E}#6.0#0"; "MSHFLXGD.OCX"
Begin VB.Form main_xslr
BorderStyle = 3 'Fixed Dialog
Caption = "在MSHFlexGrid表格控件中实现焦点移动"
ClientHeight = 2850
ClientLeft = 45
ClientTop = 330
ClientWidth = 7080
Icon = "main_xslr.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 2850
ScaleWidth = 7080
ShowInTaskbar = 0 'False
StartUpPosition = 2 '屏幕中心
Begin VB.TextBox txtEdit
BackColor = &H80000018&
BorderStyle = 0 'None
Height = 270
Left = 1110
TabIndex = 1
Top = 345
Width = 1350
End
Begin MSHierarchicalFlexGridLib.MSHFlexGrid flex1
Height = 2130
Left = 45
TabIndex = 0
Top = 60
Width = 6120
_ExtentX = 10795
_ExtentY = 3757
_Version = 393216
_NumberOfBands = 1
_Band(0).Cols = 2
End
Begin VB.Menu edit
Caption = "编辑"
Visible = 0 'False
Begin
VB.Menu delone
Caption = "消除当前记录"
End
End
End
Attribute VB_Name = "main_xslr"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
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
DoEvents
If MSHFlexGrid.Col < MSHFlexGrid.Cols - 1 Then
MSHFlexGrid.Col = MSHFlexGrid.Col + 1
Else
If MSHFlexGrid.Col = MSHFlexGrid.Cols - 1 Then
MSHFlexGrid.AddItem "", MSHFlexGrid.Row + 1
MSHFlexGrid.Row = MSHFlexGrid.Row + 1
MSHFlexGrid.Col = 1
End If
End If
Case 38 '向上
MSHFlexGrid.SetFocus
DoEvents
If MSFlexGrid.Row > MSFlexGrid.FixedRows Then
MSFlexGrid.Row = MSFlexGrid.Row - 1
End If
End Select
End Sub
Private Sub Form_Load()
'使第一列较窄。
flex1.ColWidth(0) = flex1.ColWidth(0) / 2
'初始化编辑框
txtEdit = ""
flex1.Cols = 6
' MSHFlexGrid1.Cols = 9
'设置列标头。
s$ = "^ |^品名规格 |^产品编号 |^单位 |^数量 |^单价 "
flex1.FormatString = s$
End Sub
Private Sub flex1_KeyPress(KeyAscii As Integer)
MSHFlexGridEdit flex1, txtEdit, KeyAscii
End Sub
Private Sub flex1_DblClick()
MSHFlexGridEdit flex1, txtEdit, 32 '模拟一个空格。
End Sub
'添加下列例程以初始化文本框,并将焦点从 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 - 15, _
MSHFlexGrid.Top + MSHFlexGrid.CellTop - 15, _
MSHFlexGrid.CellWidth, _
MSHFlexGrid.CellHeight
Edt.Visible = True
'启动
工作。
Edt.SetFocus
End Sub
Private Sub txtEdit_KeyPress(KeyAscii As Integer)
'删除回车符,以消除嘟嘟声。
If KeyAscii = Asc(vbCr) Then KeyAscii = 0
End Sub
Private Sub txtEdit_KeyDown(KeyCode As Integer, Shift As Integer)
EditKeyCode flex1, txtEdit, KeyCode, Shift
End Sub
'接着,当把数据输入到 TextBox 中时,您需要先告诉Hierarchical MSFlexGrid 控件应该对数据做什么。
'当您输入数据并按下 ENTER 键,或用鼠标单击Hierarchical MSFlexGrid 控件中的另一个单元时,
'焦点将返回此控件。这时 TextBox 中的文本被复制到活动单元中
Private Sub flex1_GotFocus()
If txtEdit.Visible = False Then Exit Sub
flex1 = txtEdit
txtEdit.Visible = False
flex1.TextMatrix(flex1.Row, 5) = Format(flex1.TextMatrix(flex1.Row, 5), "0.00")
End Sub
Private Sub flex1_LeaveCell()
If txtEdit.Visible = False Then Exit Sub
flex1 = txtEdit
txtEdit.Visible = False
End Sub