📄 gracegrid.ctl
字号:
VERSION 5.00
Object = "{86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}#2.0#0"; "mscomct2.ocx"
Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "msflxgrd.ocx"
Begin VB.UserControl graceGrid
ClientHeight = 2505
ClientLeft = 0
ClientTop = 0
ClientWidth = 4800
ScaleHeight = 2505
ScaleWidth = 4800
Begin MSComCtl2.DTPicker DTPicker1
Height = 300
Left = 1440
TabIndex = 3
Top = 1320
Visible = 0 'False
Width = 1095
_ExtentX = 1931
_ExtentY = 529
_Version = 393216
Format = 25493505
CurrentDate = 39232
End
Begin VB.ComboBox Combo1
Height = 300
Left = 1440
TabIndex = 2
Top = 960
Visible = 0 'False
Width = 1215
End
Begin VB.TextBox Text1
Height = 300
Left = 960
TabIndex = 1
Text = "Text1"
Top = 720
Visible = 0 'False
Width = 1095
End
Begin MSFlexGridLib.MSFlexGrid MSFlexGrid1
Height = 2415
Left = 0
TabIndex = 0
Top = 0
Width = 4815
_ExtentX = 8493
_ExtentY = 4260
_Version = 393216
Rows = 19
Cols = 4
RowHeightMin = 300
BackColorFixed = 12171543
ForeColorFixed = 0
BackColorBkg = 12632256
AllowUserResizing= 1
End
End
Attribute VB_Name = "graceGrid"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Public Enum cType
txt = 0
com = 1
dtp = 2
End Enum
Private ComboVal() As String
Private ControlType() As Integer
Private Sub Combo1_Change()
MSFlexGrid1.Text = Combo1.Text
End Sub
Private Sub Combo1_Click()
Combo1.Text = MSFlexGrid1.Text
End Sub
Private Sub Combo1_Validate(Cancel As Boolean)
MSFlexGrid1.Text = Combo1.Text
End Sub
Private Sub DTPicker1_Validate(Cancel As Boolean)
MSFlexGrid1.Text = DTPicker1.Value
End Sub
Private Sub MSFlexGrid1_Click()
Dim i As Long
If MSFlexGrid1.Col < MSFlexGrid1.FixedCols Then Exit Sub
If ControlType(MSFlexGrid1.Col) = txt Then
Combo1.Visible = False
DTPicker1.Visible = False
Text1.Visible = True
Text1.BackColor = MSFlexGrid1.CellBackColor
Text1 = MSFlexGrid1.Text
Text1.Top = MSFlexGrid1.RowPos(MSFlexGrid1.Row) + 30
Text1.Left = MSFlexGrid1.ColPos(MSFlexGrid1.Col) + 30
Text1.Width = MSFlexGrid1.ColWidth(MSFlexGrid1.Col)
Text1.Height = MSFlexGrid1.RowHeight(MSFlexGrid1.Row)
Text1.SetFocus
ElseIf ControlType(MSFlexGrid1.Col) = com Then
Text1.Visible = False
DTPicker1.Visible = False
Combo1.Visible = True
Combo1.BackColor = MSFlexGrid1.CellBackColor
Combo1.Top = MSFlexGrid1.RowPos(MSFlexGrid1.Row) + 30
Combo1.Left = MSFlexGrid1.ColPos(MSFlexGrid1.Col) + 30
Combo1.Width = MSFlexGrid1.ColWidth(MSFlexGrid1.Col)
' Combo1.Height = MSFlexGrid1.RowHeight(MSFlexGrid1.Row)
Combo1.Clear
Combo1.Text = MSFlexGrid1.Text
For i = 1 To ComboVal(MSFlexGrid1.Col, 0)
Combo1.AddItem ComboVal(MSFlexGrid1.Col, i)
Next i
Combo1.SetFocus
ElseIf ControlType(MSFlexGrid1.Col) = dtp Then
On Error Resume Next
Text1.Visible = False
Combo1.Visible = False
DTPicker1.Visible = True
' DTPicker1.CalendarBackColor = MSFlexGrid1.CellBackColor
DTPicker1.Value = CDate(MSFlexGrid1.Text)
DTPicker1.Top = MSFlexGrid1.RowPos(MSFlexGrid1.Row) + 30
DTPicker1.Left = MSFlexGrid1.ColPos(MSFlexGrid1.Col) + 30
DTPicker1.Width = MSFlexGrid1.ColWidth(MSFlexGrid1.Col)
DTPicker1.Height = MSFlexGrid1.RowHeight(MSFlexGrid1.Row)
DTPicker1.SetFocus
End If
End Sub
Private Sub Text1_Change()
MSFlexGrid1.Text = Text1
End Sub
Private Sub UserControl_Resize()
MSFlexGrid1.Width = UserControl.Width
MSFlexGrid1.Height = UserControl.Height
Dim i As Long
For i = 0 To MSFlexGrid1.Cols - 1
MSFlexGrid1.ColWidth(i) = MSFlexGrid1.Width / MSFlexGrid1.Cols - 100
Next i
SetBackColor
ReDim Preserve ControlType(0 To MSFlexGrid1.Cols - 1) As Integer
End Sub
Public Property Let Row(r As Long)
'设置表格当前行
MSFlexGrid1.Row = r
End Property
Public Property Get Row() As Long
'获取表格当前行
Row = MSFlexGrid1.Row
End Property
Public Property Let Rows(r As Long)
'设置表格行数
MSFlexGrid1.Rows = r
SetBackColor
End Property
Public Property Get Rows() As Long
'获取表格行数
Rows = MSFlexGrid1.Rows
End Property
Public Property Let FixedRows(r As Long)
'设置表格固定行数
MSFlexGrid1.FixedRows = r
SetBackColor
End Property
Public Property Get FixedRows() As Long
'获取表格固定行行数
FixedRows = MSFlexGrid1.FixedRows
End Property
Public Property Let Col(c As Long)
'设置表格当前列
MSFlexGrid1.Col = c
End Property
Public Property Get Col() As Long
'获取表格当前列
Col = MSFlexGrid1.Col
End Property
Public Property Let Cols(c As Long)
'设置表格列数
ReDim Preserve ControlType(0 To c - 1) As Integer
ReDim Preserve ComboVal(0 To c - 1, 0 To 100) As String
MSFlexGrid1.Cols = c
SetBackColor
End Property
Public Property Get Cols() As Long
'获取表格列数
Cols = MSFlexGrid1.Cols
End Property
Public Property Let FixedCols(c As Long)
'设置表格固定列列数
MSFlexGrid1.FixedCols = c
SetBackColor
End Property
Public Property Get FixedCols() As Long
'获取表格固定列列数
FixedCols = MSFlexGrid1.FixedCols
End Property
Public Property Let ColWidth(c As Long, w As Long)
'设置表格列宽
MSFlexGrid1.ColWidth(c) = w
End Property
Public Property Let ColControlType(c As Long, t As cType)
'设置列修改控件;c:列;t:类型(0-text型,1-combo型,2-dtpicker型
ControlType(c) = t
End Property
Public Function ClearComboData(c As Long)
'清除列表框数据
ComboVal(c, 0) = 0
End Function
Public Function AddComboItem(c As Long, sData As String)
'设置列表框数据
ComboVal(c, 0) = ComboVal(c, 0) + 1
ComboVal(c, ComboVal(c, 0)) = sData
End Function
Public Property Get CellData(r As Long, c As Long) As String
'获取单元格数据
If r < 0 Or r > MSFlexGrid1.Rows Then Exit Property
If c < 0 Or c > MSFlexGrid1.Cols Then Exit Property
MSFlexGrid1.Row = r
MSFlexGrid1.Col = c
CellData = MSFlexGrid1.Text
End Property
Public Property Let CellData(r As Long, c As Long, data As String)
'设置单元格数据
If r < 0 Or r > MSFlexGrid1.Rows Then Exit Property
If c < 0 Or c > MSFlexGrid1.Cols Then Exit Property
MSFlexGrid1.Row = r
MSFlexGrid1.Col = c
MSFlexGrid1.Text = data
End Property
Public Property Get CurCellData() As String
'获取当前单元格数据
CurCellData = MSFlexGrid1.Text
End Property
Public Property Let CurCellData(data As String)
'设置当前单元格数据
On Error Resume Next
MSFlexGrid1.Text = data
Text1.Text = data
Combo1.Text = data
DTPicker1.Value = data
End Property
Public Property Get UseRows()
'获取使用行数
Dim i As Long
Dim cNum As Long
cNum = 0
For i = 1 To MSFlexGrid1.Rows - 1
MSFlexGrid1.Row = i
MSFlexGrid1.Col = 0
If MSFlexGrid1.Text = "" Then
Exit For
Else
cNum = cNum + 1
End If
Next i
UseRows = cNum
End Property
Public Function ClearCellText()
'清除表格内容,表头除外
Dim i As Long
Dim j As Long
For i = 1 To MSFlexGrid1.Rows - 1
MSFlexGrid1.Row = i
For j = 0 To MSFlexGrid1.Cols - 1
MSFlexGrid1.Col = j
MSFlexGrid1.Text = ""
Next j
Next i
End Function
Private Sub SetBackColor()
'设置表格背景颜色
Dim i As Long
Dim j As Long
MSFlexGrid1.BackColorFixed = RGB(176, 204, 188)
' MSFlexGrid1.BackColorBkg = RGB(176, 204, 188)
For i = MSFlexGrid1.FixedRows To MSFlexGrid1.Rows - 1
MSFlexGrid1.Row = i
If i Mod 2 = 0 Then
For j = 0 To MSFlexGrid1.Cols - 1
MSFlexGrid1.Col = j
MSFlexGrid1.CellBackColor = RGB(225, 236, 255)
Next j
Else
For j = 0 To MSFlexGrid1.Cols - 1
MSFlexGrid1.Col = j
MSFlexGrid1.CellBackColor = RGB(255, 255, 255)
Next j
End If
Next i
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -