解决方案 »

  1.   

    看msdn的FlexGrid的帮助和例子也行的,差不多,大同小异。
      

  2.   

    在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编辑过]
      

  3.   

    VSFLEXgrid控件概况】 
     [主要特点] 
    [控件属性一览表]
    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设定单元中的文本是否换行