在vsflexgrid中单元格输入完毕后,设置按回车键跳到同一行的下一个单元 Private Sub VSFlexGrid1_AfterEdit(ByVal Row As Long, ByVal Col As Long) With VSFlexGrid1 If .Col = .Cols - 1 Then ''''如果到了最右边的列就跳到下一行第一个可非固定列 .Row = Row + 1 .Col = .FixedCols Else ''''向右移动一列 .Col = Col + 1 End If End With End SubvsflexGrid 如何只能让某些特定列可编辑 ''''修改前看到是否需要修改 Private Sub Grid_BeforeEdit(ByVal Row As Long, ByVal Col As Long, Cancel As Boolean) ''''On Error GoTo err If UiI10101.valueInt > 2 Then ''''*************定义允许修改的状态,需修改 Cancel = True Exit Sub End If If Grid.Col = Grid.cols - 8 Or Grid.Col = Grid.cols - 7 Then ''''*************定义可以修改的列,需修改 Cancel = False ''''使其有效 Else Cancel = True ''''使其无效为真 End If Exit Sub Err: RaiseErr "frmY005-Grid_MouseDown()" End Sub''''修改后判断是否合法 ''''cancel=true 取消修改的 Private Sub Grid_ValidateEdit(ByVal Row As Long, ByVal Col As Long, Cancel As Boolean) On Error Resume Next If Not IsNumeric(Grid.EditText) Then MsgBox "输入不合法,应输入一个数值", vbInformation, "提示" Cancel = True Exit Sub End If
End Sub ''''修改后来更改别的一些数据 Private Sub Grid_AfterEdit(ByVal Row As Long, ByVal Col As Long) On Error Resume Next ''''进货数量=包装数量 * 整装数量 + 零装数量 Grid.TextMatrix(Row, Grid.cols - 6) = Grid.TextMatrix(Row, Grid.cols - 9) * Grid.TextMatrix(Row, Grid.cols - 8) + Grid.TextMatrix(Row, Grid.cols - 7) End SubVSFLEXGRID7 中文输入法自动关闭问题提示 同种数据类型的单元格之间变换不要重启输入法..... 还有可以看看这代码 Private Declare Function GetKeyboardLayoutList Lib "user32" (ByVal nBuff As Long, _ lpList As Long) As Long Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" _ (ByVal pwszKLID As String) As Long Private Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long Private Declare Function ImmGetDescription Lib "imm32.dll" Alias "ImmGetDescriptionA" (ByVal _ hkl As Long, ByVal lpsz As String, ByVal uBufLen As Long) As Long Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal hkl As Long, ByVal _ flags As Long) As Long
Const IME_CONFIG_GENERAL = 1 Const KLF_REORDER = &H8 Const KLF_ACTIVATE = &H1 Dim la(1 To 16) As Long ''''输入法列表 Dim ActIme As Long ''''当前输入法 Dim X% ''''当单前输入法数量 Private Sub Form_Load() X = GetKeyboardLayoutList(32, la(1)) end sub Private Sub vs1_AfterEdit(ByVal Row As Long, ByVal Col As long) ''''vsflexgrid 控件存在输入问题? 以下为避免方法 Dim colNumber As Long Dim i As Long Dim strName$ if col=1 then ActivateKeyboardLayout la(1), 1 else ActivateKeyboardLayout la(2), 2 end if end Sub 用.AddItem在最后一行显示数据 Rst_Hj.Open HjSQL, Cnn_Zl, adOpenDynamic, adLockOptimistic ''RST_hj是合计的记录集 Main_YX.VSFlexGrid1.AddItem vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & "合计" & vbTab & Rst_Hj.Fields(0) & vbTab & Rst_Hj.Fields(1) & vbTab & Rst_Hj.Fields(2) & vbTab & Rst_Hj.Fields(3) ''VBTAB是跳过一格填写 Rst_Hj.Close''删除连续选择的记录 If VSFlexGrid1.Row <> -1 And VSFlexGrid1.RowSel <> -1 Then msg = MsgBox("你真的要删除这些记录吗?", vbYesNo + vbQuestion) Select Case msg Case vbYes For I = VSFlexGrid1.Row To VSFlexGrid1.RowSel Str = Str + VSFlexGrid1.TextMatrix(I, 1) + "," Next Str = Mid(Str, 1, Len(Str) - 1) Cmd_Zl.ActiveConnection = Cnn_Zl Cmd_Zl.CommandText = "delete from zlk where 序号 in (" + Str + ")" Cmd_Zl.Execute Set Cmd_Zl = Nothing Case vbNo Command6.Enabled = True Rst_Zl.Close Exit Sub End Select Else MsgBox "请选择您要删除的记录!!!", vbExclamation Exit Sub End If960521,提供的“如何设置vsflexgrid某行背景色”: VSFlexGrid1.Cell(flexcpBackColor, row1, col1,row2, col2) = vbRed 例:设置第三行北景色为红 VSFlexGrid1.Cell(flexcpBackColor, 3, 1, 3, VSFlexGrid1.Cols - 1) = vbRed [此贴子已经被作者于2003-6-6 22:34:14编辑过]
Private Sub VSFlexGrid1_AfterEdit(ByVal Row As Long, ByVal Col As Long)
With VSFlexGrid1
If .Col = .Cols - 1 Then
''''如果到了最右边的列就跳到下一行第一个可非固定列
.Row = Row + 1
.Col = .FixedCols
Else
''''向右移动一列
.Col = Col + 1
End If
End With
End SubvsflexGrid 如何只能让某些特定列可编辑
''''修改前看到是否需要修改
Private Sub Grid_BeforeEdit(ByVal Row As Long, ByVal Col As Long, Cancel As Boolean)
''''On Error GoTo err
If UiI10101.valueInt > 2 Then ''''*************定义允许修改的状态,需修改
Cancel = True
Exit Sub
End If
If Grid.Col = Grid.cols - 8 Or Grid.Col = Grid.cols - 7 Then ''''*************定义可以修改的列,需修改
Cancel = False ''''使其有效
Else
Cancel = True ''''使其无效为真
End If
Exit Sub
Err:
RaiseErr "frmY005-Grid_MouseDown()"
End Sub''''修改后判断是否合法
''''cancel=true 取消修改的
Private Sub Grid_ValidateEdit(ByVal Row As Long, ByVal Col As Long, Cancel As Boolean)
On Error Resume Next
If Not IsNumeric(Grid.EditText) Then
MsgBox "输入不合法,应输入一个数值", vbInformation, "提示"
Cancel = True
Exit Sub
End If
End Sub
''''修改后来更改别的一些数据
Private Sub Grid_AfterEdit(ByVal Row As Long, ByVal Col As Long)
On Error Resume Next
''''进货数量=包装数量 * 整装数量 + 零装数量
Grid.TextMatrix(Row, Grid.cols - 6) = Grid.TextMatrix(Row, Grid.cols - 9) * Grid.TextMatrix(Row, Grid.cols - 8) + Grid.TextMatrix(Row, Grid.cols - 7)
End SubVSFLEXGRID7 中文输入法自动关闭问题提示
同种数据类型的单元格之间变换不要重启输入法.....
还有可以看看这代码
Private Declare Function GetKeyboardLayoutList Lib "user32" (ByVal nBuff As Long, _
lpList As Long) As Long
Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" _
(ByVal pwszKLID As String) As Long
Private Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
Private Declare Function ImmGetDescription Lib "imm32.dll" Alias "ImmGetDescriptionA" (ByVal _
hkl As Long, ByVal lpsz As String, ByVal uBufLen As Long) As Long
Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal hkl As Long, ByVal _
flags As Long) As Long
Const IME_CONFIG_GENERAL = 1
Const KLF_REORDER = &H8
Const KLF_ACTIVATE = &H1
Dim la(1 To 16) As Long ''''输入法列表
Dim ActIme As Long ''''当前输入法
Dim X% ''''当单前输入法数量
Private Sub Form_Load()
X = GetKeyboardLayoutList(32, la(1))
end sub
Private Sub vs1_AfterEdit(ByVal Row As Long, ByVal Col As long) ''''vsflexgrid 控件存在输入问题? 以下为避免方法
Dim colNumber As Long
Dim i As Long
Dim strName$
if col=1 then
ActivateKeyboardLayout la(1), 1
else
ActivateKeyboardLayout la(2), 2
end if
end Sub
用.AddItem在最后一行显示数据
Rst_Hj.Open HjSQL, Cnn_Zl, adOpenDynamic, adLockOptimistic ''RST_hj是合计的记录集
Main_YX.VSFlexGrid1.AddItem vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & "合计" & vbTab & Rst_Hj.Fields(0) & vbTab & Rst_Hj.Fields(1) & vbTab & Rst_Hj.Fields(2) & vbTab & Rst_Hj.Fields(3) ''VBTAB是跳过一格填写
Rst_Hj.Close''删除连续选择的记录
If VSFlexGrid1.Row <> -1 And VSFlexGrid1.RowSel <> -1 Then
msg = MsgBox("你真的要删除这些记录吗?", vbYesNo + vbQuestion)
Select Case msg
Case vbYes
For I = VSFlexGrid1.Row To VSFlexGrid1.RowSel
Str = Str + VSFlexGrid1.TextMatrix(I, 1) + ","
Next
Str = Mid(Str, 1, Len(Str) - 1)
Cmd_Zl.ActiveConnection = Cnn_Zl
Cmd_Zl.CommandText = "delete from zlk where 序号 in (" + Str + ")"
Cmd_Zl.Execute
Set Cmd_Zl = Nothing
Case vbNo
Command6.Enabled = True
Rst_Zl.Close
Exit Sub
End Select
Else
MsgBox "请选择您要删除的记录!!!", vbExclamation
Exit Sub
End If960521,提供的“如何设置vsflexgrid某行背景色”:
VSFlexGrid1.Cell(flexcpBackColor, row1, col1,row2, col2) = vbRed
例:设置第三行北景色为红
VSFlexGrid1.Cell(flexcpBackColor, 3, 1, 3, VSFlexGrid1.Cols - 1) = vbRed
[此贴子已经被作者于2003-6-6 22:34:14编辑过]
[主要特点]
[控件属性一览表]
FlexString控件属性一览表
Error失败时取得错误信息
MatchCount取得与检索条件相一致的字符串数量
MatchIndex设定与检索条件相一致的字符串的索引
MatchLength取得与检索条件相一致的字符串长度
MatchStart
取得与检索条件相一致的字符串起始位置
MatchString取得与检索条件相一致的字符串
Pattern 设定检索条件
Replace设定置换字符串
SoundexText取得代表当前检索字符的声音代码
TagCount取得与检索条件相一致的标签数量
TagIndex在多个标签情况下,设定/取得与检索条件相一致的标签索引
TagLength取得与检索条件相一致的标签长度
TagStart取得与检索条件相一致的标签起始位置
TagString取得与检索条件相一致的标签的字符串
Text设定成为检索对象
Version取得FlexString的版本号FlexString控件属性一览表
AllowBigSelection设定行列头的选择
AllowUserResizing设定行列大小的设定
BackColor设定FlexArray所有表格的背景颜色
BackColorBkg设定背景颜色
BackColorFixed设定固定行/列的背景颜色
BackColorSel设定选择单元的背景颜色
CellAlignment设定单元里数据的排列方式
CellBackColor设定单元或指定范围的背景颜色
CellFontBold把单元或指定范围的字体设定为黑体字
CellFontItalic把单元或指定范围的字体设定为斜体字
CellFontName设定单元或指定范围的字体
CellFontSize设定单元或指定范围字体的大小
CellFontWidth设定单元或指定范围字体的宽度
CellForeColor设定单元或指定范围字体的颜色
CellHeight返回当前单元的高度
CellLeft返回当前单元的左端位置
CellTop返回当前单元的顶端位置
CellWidth返回当前单元的宽度
CellPicture指定显示在单元或指定范围中的图片
CellPicture
Alingment指定单元或范围中图片的显示位置
CellTextStyle设定单元文本的显示形式
Clip<设定/返回选择范围的内容
Col设定/返回激活单元的列号
ColAlingment( )设定/返回列的排列方式
ColData( )设定/返回一个用户定义信息的长整形数据
ColPosition( )移动列的位置
Cols指定返回列的总数
ColSel指定选择范
ColWidth( )设定所指定列的宽度
FillStyle指定是否改变当前单元或选择范围的内容或单元格式
FixedCols设定固定列的总数
FixedRows设定固定行的总数
FocusRect设定选中单元周围的Focus Rectangle类型
FontWidth设定字体的宽度
ForeColorFixed设定固定单元的文本颜色
ForeColorSel设定选择单元的文本颜色
FormatString在设计过程中设定列宽、排列方式及固定的行/列
GridColor指定网格线的颜色
GridColorFixed设定固定网格线的颜色
GridLines指定网格线的类型
GridLinesFixed指定固定单元的网格线形式
HighLight设定是否突出显示选中单元
LeftCol指定显示在最左边的列
MergeCells设定是否合并内容相同的单元格
MergeCol( )设定指定列的单元合并
MergeRow( )设定指定行的单元合并
MouseCol设定鼠标指向的列号
MouseRow设定鼠标指向的行号
ReDraw设定是否刷新FlexArray控件
Picture返回FlexArray控件的图片
PictureType指定用Picture属性生成的图片类型
Row设定/返回激活单元的行号
RowData( )设定/返回一个用户定义信息的长整形数据
RowHeight( )设定指定行的高度
RowHeightMin设定行高的最小值
RowPosition( )移动行的位置
Rows指定行的总数
RowSel指定行的选择范围
SelectionMode设定行、列或单元的选择方式
ScrollBars设定卷动轴的类型
ScrollTrack设定卷动方式
Sort按照选择的基准重新排列行的顺序
Text设定/取得单元的文本
TextArray( )设定/取得任意单元的文本
TextMatrix( )设定/取得任意单元的文本
TextStyle显示单元中文本的3D效果
TextStyleFixed显示固定行/列中文本的3D效果
TopRow指定显示在最上面的行
Version
FlexArray控件的版本号
WordWrap设定单元中的文本是否换行