我想用TDBGrid 实现以下功能
   用来做批量录入 
   第一:假设列标题 都已经弄好 ,例如: 学号,姓名,班级
假设,我还有很多的列项,需要通过水平的滚动条才可以看到后面的项,这时在滚动时,我需要“学号”也就是第一列不动,次列即“姓名”..等随滚动条向右而隐藏,隐藏的单位为列,就是说要摸该列显示,要摸隐藏。
   第二:当选种特定列的网格时,譬如为“学号”列下面的网格,在该输入格的 右边出现一个按钮或者图标,可以通过点击它来打开新的窗体从那里获得数据。
   第三:不绑定数据库,要用来接受用户输入数据,当用户点确认后将里面的数据寸入数据库。谢谢!!!

解决方案 »

  1.   

    用下面的模块固定一列:
    Public Sub TDBfix(TDBGrid1 As TDBGrid, fn As Integer)
        Dim s As TrueDBGrid70.Split
        Set s = TDBGrid1.Splits.Add(0)
        Dim C As TrueDBGrid70.Column
        Dim Cols As TrueDBGrid70.Columns
        Set Cols = TDBGrid1.Splits(0).Columns
        For Each C In Cols
            C.Visible = False
        Next C
        For i = 0 To fn
           Cols(i).Visible = True
        Next i
        With TDBGrid1.Splits(0)
             .SizeMode = dbgNumberOfColumns
             .Size = fn + 1
             .AllowSizing = False
        End With
        Set Cols = TDBGrid1.Splits(1).Columns
        For i = 0 To fn
           Cols(i).Visible = False
        Next i
        TDBGrid1.Splits(0).RecordSelectors = True
        TDBGrid1.Splits(1).RecordSelectors = False
    End Sub用以上代码,如果是TDBfix(TDBGrid1, 1)表示固定TDBGrid1的第一列
      

  2.   

    第2个问题:添加listBox控件,以下代码参考一下,不难的。
    Private Sub TDBGrid1_BeforeColEdit(ByVal ColIndex As Integer, ByVal KeyAscii As Integer, Cancel As Integer)
        If TDBGrid1.Columns.Count <> 12 Then Exit Sub
        If ColIndex = 10 Then
            If KeyAscii <> 0 Then Exit Sub
            Cancel = True
            TDBGrid1_ButtonClick (ColIndex)
        End If
    End Sub
    Private Sub TDBGrid1_ButtonClick(ByVal ColIndex As Integer)
        On Error Resume Next
        List1.Left = SSTab1.Left + TDBGrid1.Left + TDBGrid1.Columns(ColIndex).Left
        List1.Top = SSTab1.Top + TDBGrid1.Top + TDBGrid1.RowTop(TDBGrid1.row) + TDBGrid1.RowHeight
        List1.Width = TDBGrid1.Columns(ColIndex).Width
        List1.Visible = True
        List1.SetFocus
    End Sub