懂MSHFLEXGRID控件的高手请进!!小弟急用!!!!

anmshl 2004-07-26 11:38:29
怎样实现在mshflexgrid的控件中的单元格中的进行修改数据啊!我现在只能在单元格中显示数据,无法在里面进行数据的修改啊!


请给位高手帮帮忙啊!!!!
...全文
170 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovebeethoven 2004-08-09
  • 打赏
  • 举报
回复
上面打错一个地方 ,
TEXT1。TEXT=GRID。TEXTMATRIX(GRID。ROW,GRID。COL)
lovebeethoven 2004-08-09
  • 打赏
  • 举报
回复
当点击一个格子时,会触发ENTERCELL事件,我是这样用的,
点击表格,TEXT1的位置调整大小调整和这个格子一样,
TEXT1。TEXT=GRID。TEXTMSRIX(GRID。ROW,GRID。COL)
在TEXT1中编辑数据,当离开这个格子时会触发LEAVECELL事件
然后再 GRID。TEXT=TEXT1。TEXT就OK啦,
如果你要把结果保存到数据库,就一行一行保存就可以了
希望对你有帮助
yj838317 2004-08-06
  • 打赏
  • 举报
回复
捕捉键盘事件啊,一个一个字符往上敲,否则建议换个控件吧.
射天狼 2004-08-05
  • 打赏
  • 举报
回复
Private Sub Form_Load()

Text1.BorderStyle = 0
Text1.Visible = False
End Sub

Private Sub MSFlexGrid1_Click()
With MSFlexGrid1
'If .Col <> 2 Then Exit Sub '只能编辑第二列
Text1.Visible = True
Text1.Move .CellLeft + .Left, .CellTop + .Top, .CellWidth, .CellHeight
Text1.Text = .Text
Text1.SetFocus
End With
'MsgBox MSFlexGrid1.TextMatrix(10, 2)
End Sub

Private Sub MSFlexGrid1_Scroll()
With MSFlexGrid1
If .ColIsVisible(.Col) And .RowIsVisible(.Row) Then
Text1.Visible = True
Text1.Move .CellLeft + .Left, .CellTop + .Top, .CellWidth, .CellHeight
Text1.SetFocus
Else
Text1.Visible = False
End If
End With
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
'在此根据主键更新数据库
cn.Execute "UPDATE TABLENAME SET FIELD = '" & Text1.Text & "' WHERE ID = ...."
MSFlexGrid1.Text = Text1.Text
Text1.Visible = False
MSFlexGrid1.SetFocus
End If
End Sub
xzhy80 2004-08-05
  • 打赏
  • 举报
回复
up
Ejnstein 2004-08-05
  • 打赏
  • 举报
回复
1.用Text控件覆盖,楼上已经说了。
2.用KeyDown事件,结合ScreenToClient函数定位Cell,然后再更新Cell的内容。
tztz520 2004-08-05
  • 打赏
  • 举报
回复
你的数据库表中要有一个ID号(自动编号),你填入数据的时候,在mshflexgrid中加多一列,列宽为0(隐藏),把ID号填到这个列里,这样你修改数据的时候就知道是修改数据库里的相应的哪一条记录了.修改的时候用TEXT控件显示在你想修改的地方,这样就可以修改了.
hn123 2004-08-05
  • 打赏
  • 举报
回复
Public Sub msfTxt(mshflex As MSHFlexGrid, txtM As TextBox)

With mshflex
txtM.Visible = False
txtM.Appearance = 0
'txtm.
'txtM.BackColor =
txtM.Appearance = 0
txtM.BackColor = vbInfoBackground
txtM.BorderStyle = 0
txtM.Move .Left + .CellLeft, .Top + .CellTop, .CellWidth - 20, .CellHeight - 20
'Text1.Move .Left + .CellLeft, .Top + .CellTop, .CellWidth - 20, .CellHeight - 20
txtM.Text = .Text
'Text1.Text = "XXX"
txtM.Visible = True
txtM.SetFocus
End With

End Sub
guxizhw 2004-07-26
  • 打赏
  • 举报
回复
用一个textbox盖上去
这个例子很经典的
awfikthh 2004-07-26
  • 打赏
  • 举报
回复
首先支持楼上说的,如果不需要修改数据库而只需要对单无格的数据进行修改的话,可对下面的属性进行设置
.TextMatrix(行号,列号)=值
anmshl 2004-07-26
  • 打赏
  • 举报
回复
那如何进行修改啊
饮水需思源 2004-07-26
  • 打赏
  • 举报
回复
mshflexgrid控件与数据库的绑定是只读式的,即使在该控件中修改了数据,在数据库中也不会自动更新,建议楼主使用datagrid控件或在mshflexgrid中修改数据后再手工写对数据库的更新代码

1,451

社区成员

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

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