如何使用MSFlexGrid制作可使用户随时改变内容的表格?谢谢!!!!!!

cerise 2003-03-09 01:32:14
包括增加删除行,修改单个单元格
据说MSFlexGrid结合TextBox可完成这些功能
不知如何使用,望指教
...全文
132 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
baoyuanzhi 2003-03-10
  • 打赏
  • 举报
回复
seeze() 方法正确,我也曾经用MSFlexGrid结合TextBox完成此功能
cerise 2003-03-10
  • 打赏
  • 举报
回复
to:xinshou1979330
差不多解决了,基本上是按照seeze和sky9705的思路写的
aspvbjava把源码都贴出来了,我大致看了一下,大概也就是这些
少了删除部分,不过很简单,用下面的事件就可以了
Private Sub MSHFlexGrid1_KeyDown(KeyCode As Integer, Shift As Integer)
happybeyond 2003-03-10
  • 打赏
  • 举报
回复
用MSFlexGrid1的entercell事件
wxqjl007 2003-03-10
  • 打赏
  • 举报
回复
思路同seeze()
xinshou1979330 2003-03-10
  • 打赏
  • 举报
回复
关注我也在找此类问题的答案

楼主解决了可以告诉我么???
谢谢
aspvbjava 2003-03-10
  • 打赏
  • 举报
回复
'显示文本框
Sub ShowTextBox()
With MSFlexGrid1
'隐藏文本框,设置高度和宽度
Text1.Visible = False
Text1.Height = .RowHeight(.Row) - (Screen.TwipsPerPixelY) * 2
Text1.Width = .ColWidth(.Col)
' 计算文本框左坐标
Text1.Left = .CellLeft + .Left
Text1.Top = .CellTop + .Top
Text1.Visible = True
Text1.SetFocus
End With
End Sub

Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
Dim char As String
If KeyAscii = 13 Then
Text1.Text = MSFlexGrid1.Text
Text1.SelStart = Len(Text1.Text)
Else
char = Chr$(KeyAscii)
Text1.Text = char
Text1.SelStart = 1
End If
ShowTextBox
KeyAscii = 0
End Sub

'离开网格时,进行处理. 如果第一列有内容,就自动加一行
Private Sub MSFlexGrid1_LeaveCell()
MSFlexGrid1.Text = Text1.Text
If MSFlexGrid1.Col = 0 And MSFlexGrid1.Row <> 0 And MSFlexGrid1.Row = MSFlexGrid1.Rows - 1 And MSFlexGrid1.Text <> "" Then
MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
End If
End Sub


Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Text1.Visible = False
End Sub

Private Sub MSFlexGrid1_RowColChange()
Text1.Text = MSFlexGrid1.Text
End Sub

Private Sub MSFlexGrid1_DblClick() '双击可以对网格中内容进行编辑
If MSFlexGrid1.Row > 0 And MSFlexGrid1.Col > 0 Then MSFlexGrid1_KeyPress 13
End Sub

'Text1是输入框,起模拟网格的作用,其实输入到文本框后,经过处理送到网格中
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
MSFlexGrid1.Text = Text1.Text
Text1.Visible = False
MSFlexGrid1.SetFocus
'输入完后如果按回车,若不是最后一列,自动到下一列
If MSFlexGrid1.Col < (MSFlexGrid1.Cols - 1) Then
MSFlexGrid1.Col = MSFlexGrid1.Col + 1
'若为最后一列,跳转到下一行的第一列
ElseIf MSFlexGrid1.Row < MSFlexGrid1.Rows - 1 Then
MSFlexGrid1.Row = MSFlexGrid1.Row + 1
MSFlexGrid1.Col = 0
End If
KeyAscii = 0
End If
End Sub
sky9705 2003-03-10
  • 打赏
  • 举报
回复
Private Sub MSFlexGrid1_Click()
Dim x As Integer, y As Integer

x = MSFlexGrid1.MouseCol
y = MSFlexGrid1.MouseRow
If x > 0 And y > 0 Then
m_nCurColNo = x
m_nCurRowNo = y
Text2.SetFocus
End If
End Sub
有关这个例子网站上很多的
cerise 2003-03-10
  • 打赏
  • 举报
回复
可是这个方法没有传递参数,我怎么知道用户点击的是哪个单元格?
Zedee 2003-03-10
  • 打赏
  • 举报
回复
MSHFlexGrid_click
cerise 2003-03-10
  • 打赏
  • 举报
回复
谢谢!
但是如果我要修改某一单元格的内容,应该触发哪个事件呢?
zhenxizhou 2003-03-09
  • 打赏
  • 举报
回复
http://www.csdn.net/cnshare/soft/14/14847.shtm
Girl1983 2003-03-09
  • 打赏
  • 举报
回复
http://www.vbgood.com有现成的代码
Zedee 2003-03-09
  • 打赏
  • 举报
回复
放一个visible=false的textbox
sub MSFlexGrid_click()
with text1
.width=MSFlexGrid.cellwidth
.height=MSFlexGrid.cellheight
.top=MSFlexGrid.top+MSFlexGrid.celltop
.left=MSFlexGrid.left+MSFlexGrid.cellleft
.visible=true
.setfocus
end with
end sub
然后在text1_lostfocus或text1_keypress里传递
MSFlexGrid.textmatrix(MSFlexGrid.row,MSFlexGrid.col)=text1.text
text1.visible=false
大致就是这个思路了

1,453

社区成员

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

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