MSHFlexGrid控件中的当Combo1还有焦点时,此时点击MSHFlexGrid控件中的水平滚动条,Combo1会不停的移动?如何解决?

yiyaozjk 2011-12-29 03:40:09

MSHFlexGrid控件中除了第3列是用下拉列表来选择的,其他列是用文本框来选择的...

现在问题

1 如果Combo1还有焦点时,此时点击MSHFlexGrid控件中的水平滚动条,Combo1会不停的移动?如何解决这种现象?
2 使用Text1.Move -10000, -10000, 1, 1后,双击进行文本框内,无法自动选择里面的内容,好象看不到光标在文本框内闪烁的效果,不直观,去除了这句后Text1.Move -10000, -10000, 1, 1 效果又成了不能文本框不会随着点击的地方不同而自动更改?如何解决??


我的代码如下:

Private Sub Combo1_Change() ''加了这个事件就能使得选择完了之后,能让MSHFlexGrid1.Text 的内容为Combo1.Text
MSHFlexGrid1.Text = Combo1.Text
Combo1.Visible = False
End Sub
Private Sub Combo1_LostFocus() '加了这个事件就不会在Combo1控件失去焦点时,还会看Combo控件的影子,
MSHFlexGrid1.Text = Combo1.Text
Combo1.Visible = False
End Sub

Private Sub Form_Load()
Text1.Move -10000, -10000, 1, 1
adoCnn.Open "Provider=sqloledb;server=.;Database=sxcpmc;Uid=sa;Pwd=;"
Rs.CursorLocation = adUseClient
Rs.Open "select * from BOM0 ", adoCnn, adOpenDynamic, adLockBatchOptimistic
Set MSHFlexGrid1.DataSource = Rs
Combo1.Visible = False
End Sub


Private Sub MSHFlexGrid1_Click()
If Combo1.Visible = True Then
Combo1.Visible = False
MSHFlexGrid1.CellBackColor = &H80000005 'white
End If
If MSHFlexGrid1.Col = 3 Then
Combo1.Width = MSHFlexGrid1.CellWidth
Combo1.Left = MSHFlexGrid1.CellLeft + MSHFlexGrid1.Left
Combo1.Top = MSHFlexGrid1.CellTop + MSHFlexGrid1.Top
Combo1.Text = MSHFlexGrid1.Text
Combo1.Visible = True
End If
End Sub

Private Sub MSHFlexGrid1_EnterCell()
MSHFlexGrid1.CellBackColor = vbBlue
MSHFlexGrid1.CellForeColor = vbWhite
Text1.Text = MSHFlexGrid1.Text
Text1.SelStart = 0
Text1.SelLength = Len(MSHFlexGrid1.Text) 'len(text1.text)'
End Sub

Private Sub MSHFlexGrid1_LeaveCell()
MSHFlexGrid1.CellBackColor = vbWhite
MSHFlexGrid1.CellForeColor = vbBlue
If MSHFlexGrid1.Col = 3 Then
MSHFlexGrid1.Text = Trim(Combo1.Text) '' Format$(FlxGd, "#") 'alpha-number format
End If
MSHFlexGrid1.CellBackColor = &H80000005
End Sub
Private Sub MSHFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
If MSHFlexGrid1.Col = 3 Then
Combo1.Text = Combo1.List(1)
Else
Text1.SetFocus
End If
End Sub
'

Private Sub Text1_Change()
MSHFlexGrid1.Text = Text1.Text
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyLeft, vbKeyRight, vbKeyUp, vbKeyDown
KeyCode = 0
End Select
End Sub
...全文
115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssd189 2012-02-14
  • 打赏
  • 举报
回复
好雨知时节当春乃发生
yiyaozjk 2012-02-13
  • 打赏
  • 举报
回复
没人给一把力???
yiyaozjk 2011-12-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yachong 的回复:]
在mshflexgrid控件的scroll事件中处理一下combo1的visible属性
[/Quote]


Private Sub MSHFlexGrid1_Scroll()
Combo1.Visible = False
End Sub
第1个问题是解决了,,但是第2个问题呢??有没有办法??
2 我的代码中使用了Text1.Move -10000, -10000, 1, 1后,
双击进行文本框内,无法自动选择里面的内容,好象看不到光标在文本框内闪烁的效果,不直观,去除了这句后Text1.Move -10000, -10000, 1, 1 效果又成了不能文本框不会随着点击的地方不同而自动更改?
如何更改代码解决??
谢谢!
yachong 2011-12-29
  • 打赏
  • 举报
回复
在mshflexgrid控件的scroll事件中处理一下combo1的visible属性

1,451

社区成员

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

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