大哥们帮忙了!

viking7 2004-03-17 09:32:54
恩,我想在form上创建一个表格,可以列出数据库里数据,但不用datagrid,然后用按钮来控制添加和删除,谁能给代码啊?
...全文
42 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lilaclone 2004-03-19
  • 打赏
  • 举报
回复
例:网格-结构的实现
Option Explicit
'定义结构类型
Private Type 天气信息
气温 As Single
风向 As String
凤力 As Single
End Type

Private Sub Form_Click()
Dim udtA(9) As 天气信息 '声明结构数据
Dim intI As Integer, intJ As Integer
'为结构赋网格数据值
For intI = 0 To 9
udtA(intI).气温 = MSFlexGrid1.TextMatrix(intI + 1, 1)
udtA(intI).风向 = MSFlexGrid1.TextMatrix(intI + 1, 2)
udtA(intI).凤力 = MSFlexGrid1.TextMatrix(intI + 1, 3)
Next intI
'在立即窗口打印赋值结果
Debug.Print "城市", "气温", "风向", "风力"
For intI = 0 To 9
Debug.Print "城市" & intI + 1, _
udtA(intI).气温, udtA(intI).风向, udtA(intI).凤力
Next intI
End Sub

Private Sub Form_Load()
Dim intI As Integer
'设定网格的行数和列数
MSFlexGrid1.Cols = 4 '3种天气信息
MSFlexGrid1.Rows = 11 '10个城市
'建立说明列
'属性MSFlexGrid1.FixedRows可设置或返回固定行总数,缺省为1
'属性MSFlexGrid1.TextArray可设置或返回网格文本的内容
For intI = MSFlexGrid1.FixedRows To MSFlexGrid1.Rows - 1
MSFlexGrid1.TextArray(MSFlexGrid1.Cols * intI) = _
"城市" & intI
Next intI
'建立说明行
'属性MSFlexGrid1.FixedCols可设置或返回固定列总数,缺省为1
For intI = MSFlexGrid1.FixedCols To MSFlexGrid1.Cols - 1
'将单元格的宽度增加100twip
MSFlexGrid1.ColWidth(intI) = MSFlexGrid1.ColWidth(intI) + 100
MSFlexGrid1.TextArray(intI) = "测试项目" & intI
Next intI
MSFlexGrid1.Row = 1 '设定当前行
MSFlexGrid1.Col = 1 '设定当前列
Label1 = "城市1:测试项目1"
End Sub

'用户选择编辑单元时,将该单元内容复制到文本框控件
'然后可以进行编辑
Private Sub MSFlexGrid1_EnterCell()
'将当前说明列和当前说明行赋予标签
Label1 = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) & ":" _
& MSFlexGrid1.TextMatrix(0, MSFlexGrid1.Col)
'将当前单元格内容赋予文本框
Text1.Text = MSFlexGrid1.Text
Text1.SetFocus '文本框取得焦点
'选中文本框内的全部字符,即将其涂成蓝色
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End Sub

'文本框数据处理,按Enter键结束一个网格数据的录入
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim intRow As Integer, intCol As Integer
If KeyAscii = 13 Then '13为Enter键
MSFlexGrid1.Text = Text1.Text '文本框数据送入网格
intRow = MSFlexGrid1.Row + 1 '焦点移到同列的下一个单元
intCol = MSFlexGrid1.ColSel '单元格返回当前列
If intRow = MSFlexGrid1.Rows Then '如果到了最后一行
intRow = MSFlexGrid1.FixedCols 'intRow=1,FixedCols的缺省设置
'如果intCol没有到边界列则取下一列
If intCol < MSFlexGrid1.Cols - MSFlexGrid1.FixedCols Then _
intCol = intCol + 1
End If
MSFlexGrid1.Row = intRow '新的当前行
MSFlexGrid1.Col = intCol '新的当前列
MSFlexGrid1.RowSel = intRow '为单元格设置的当前行
Text1.Text = MSFlexGrid1.Text '单元格数据赋予文本框
Text1.SetFocus '文本框取得焦点
End If
End Sub

lilaclone 2004-03-19
  • 打赏
  • 举报
回复
网格控件MSFlexGrid使用的例子,粘贴于程序中可直接运行
加载 Project-Components-Microsoft FlexGrid Control 6.0

Option Explicit
Private Sub Form_Click()
'打印选定的网格区域数据
'在选择所有单元格的情况下可实现所有网格数据打印
'单击网格最左上角说明行列交叉部位可以选择所有单元格
Printer.Print ""; MSFlexGrid1.Clip
Printer.EndDoc
End Sub
Private Sub Form_Load()
Dim intI As Integer
'MSFlexGrid1.Cols为网格总列数
'MSFlexGrid1.Rows为网格总行数
'建立说明列
For intI = 1 To MSFlexGrid1.Cols - 1
MSFlexGrid1.Row = 0 '设定当前行
MSFlexGrid1.Col = intI '设定当前列
MSFlexGrid1.Text = Str(1990 + intI) '设定当前行、列的值
Next intI
'建立说明行
For intI = 1 To MSFlexGrid1.Rows - 1
MSFlexGrid1.Col = 0 '设定当前列
MSFlexGrid1.Row = intI '设定当前行
If intI = MSFlexGrid1.Rows - 1 Then
MSFlexGrid1.Text = "年总和"
Else
MSFlexGrid1.Text = MonthName(intI) '设定当前行、列的值
End If
Next intI
End Sub
'清除单元格数据,然后可以重新录入
Private Sub MSFlexGrid1_DblClick()
Dim intR As Integer
Dim sngSum As Single
'用单击来设置网格的Row和Col属性
'将键入的数值加入网格
MSFlexGrid1.Text = ""
sngSum = 0
'每次KeyPress事件都对当前列的12行数据求和
For intR = 1 To MSFlexGrid1.Rows - 2
MSFlexGrid1.Row = intR
sngSum = sngSum + Val(MSFlexGrid1.Text)
Next intR
'和数显示在最后一行
MSFlexGrid1.Row = MSFlexGrid1.Rows - 1
MSFlexGrid1.Text = Str(sngSum)
End Sub
'对单元格录入数据
Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
Dim intR As Integer
Dim sngSum As Single
Dim intOldRow As Integer, intOldCol As Integer
'用单击来设置网格的Row和Col属性
'将键入的数值加入网格
MSFlexGrid1.Text = MSFlexGrid1.Text + Chr(KeyAscii)
'保存当前行和列
intOldRow = MSFlexGrid1.Row
intOldCol = MSFlexGrid1.Col
sngSum = 0
'每次KeyPress事件都对当前列的12行数据求和
For intR = 1 To MSFlexGrid1.Rows - 2
MSFlexGrid1.Row = intR
sngSum = sngSum + Val(MSFlexGrid1.Text)
Next intR
'和数显示在最后一行
MSFlexGrid1.Row = MSFlexGrid1.Rows - 1
MSFlexGrid1.Text = Str(sngSum)
'恢复当前行和列
MSFlexGrid1.Row = intOldRow
MSFlexGrid1.Col = intOldCol
End Sub


happywqw 2004-03-18
  • 打赏
  • 举报
回复
用“外接程序向导”中的“VB数据窗体向导”自动生成!
qiqunet 2004-03-17
  • 打赏
  • 举报
回复
在From中自画表格:

Private Sub Command1_Click()
'删表格中的内容
i = 2
j = 3
Me.Line (i * 20, j * 10)-(i * 20 + 20, j * 10 + 10), Me.BackColor, BF
Me.Line (i * 20, j * 10)-(i * 20 + 20, j * 10 + 10), , B
End Sub

Private Sub Form_Click()
'画表格
For i = 0 To 10
Me.Line (0, 10 * i)-(100, 10 * i)
Next
For i = 0 To 5
Me.Line (20 * i, 0)-(20 * i, 100)
Next

'填表格
For i = 0 To 5
For j = 0 To 10
Me.CurrentX = i * 20 + 2
Me.CurrentY = j * 10 + 2
Me.Print "(" & i & "," & j & ")"
Next
Next
End Sub

Private Sub Form_Load()
'定义坐标系统
Me.Scale (0, 0)-(100, 100)
End Sub
rainstormmaster 2004-03-17
  • 打赏
  • 举报
回复
//能不能给点相关的资料啊,书上都没有的说,大哥!

添加一个数据窗体,跟着向导一步步做下去,最后看看代码就可以了
nofound007 2004-03-17
  • 打赏
  • 举报
回复
我觉得用MSHFLEXGRID可能比较好一点
hcj2002 2004-03-17
  • 打赏
  • 举报
回复
用google搜以下
viking7 2004-03-17
  • 打赏
  • 举报
回复
能不能给点相关的资料啊,书上都没有的说,大哥!
华芸智森 2004-03-17
  • 打赏
  • 举报
回复
你也可以用MSHFLEXGRID.


7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧