乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 139|回复: 8

请mccad进来一下,急盼指导?

[复制链接]

7

主题

18

帖子

2

银币

初来乍到

Rank: 1

铜币
46
发表于 2005-11-8 22:20:00 | 显示全部楼层 |阅读模式
在一个窗体中我引入了mshflexgrid控件,由于mshflexgrid控件不能修改单元格中的内容,于是在窗体中加入textbox,将textbox中的值放到mshflexgrid中,程序如下:
Private Sub MSHFlexGrid1_KeyPress(KeyAscii As Integer)
    If MSHFlexGrid1.Row  MSHFlexGrid1.Rows - 1 Then
        
        ' 移动文本框至当前单元格
        TextBox1.top = MSHFlexGrid1.CellTop + MSHFlexGrid1.top
        TextBox1.Left = MSHFlexGrid1.CellLeft + MSHFlexGrid1.Left
        
        ' 保存当前单元格行和列的位置
        gRow = MSHFlexGrid1.Row
        gCol = MSHFlexGrid1.Col
        
        ' 设置文本框与当前单元格相同大小
        TextBox1.Width = MSHFlexGrid1.CellWidth
        TextBox1.Height = MSHFlexGrid1.CellHeight
        
        '最后一列不能填如数据
        If MSHFlexGrid1.Row  MSHFlexGrid1.Rows - 1 Then
            TextBox1.Text = MSHFlexGrid1.Text
        
            ' 显示文本框
            TextBox1.Visible = True
            TextBox1.ZOrder 0 ' 把 Text1 放到最前面!
            TextBox1.SetFocus
            '重新定位事件至文本框
            If KeyAscii  ASC_ENTER And KeyAscii  ASC_ESC Then
                SendKeys Chr$(KeyAscii)
            End If
        End If      
    End If
End Sub
Private Sub TextBox1_Change()
    MSHFlexGrid1.Text = TextBox1.Text
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = ASC_ENTER Then
        MSHFlexGrid1.SetFocus ' Set focus back to grid, see Text_LostFocus.
        KeyAscii = 0 ' Ignore this KeyPress.
    End If
End Sub
Private Sub TextBox1_LostFocus()
    Dim tmpRow As Integer
    Dim tmpCol As Integer
    ' Save current settings of Grid Row and col. This is needed only if
    ' the focus is set somewhere else in the Grid.
    tmpRow = Grid1.Row
    tmpCol = Grid1.Col
    ' Set Row and Col back to what they were before Text1_LostFocus:
    Grid1.Row = gRow
    Grid1.Col = gCol
    Grid1.Text = TextBox1.Text ' Transfer text back to grid.
    TextBox1.SelStart = 0 ' Return caret to beginning.
    TextBox1.Visible = False ' Disable text box.
    ' Return row and Col contents:
    Grid1.Row = tmpRow
    Grid1.Col = tmpCol
End Sub
用这种方法基本实现了我要的功能要求,但现在的问题是,mshflexgrid无法聚焦,点击mshflexgrid中的单元格,无法看到光标所在的位置,也就是TextBox1_LostFocus()无效,我该怎么样才能使mshflexgrid聚焦?还有没有别的办法?请赐教,谢谢!
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2005-11-8 23:03:00 | 显示全部楼层
在VBA还是VB里?
VB里有现成的代码,
VBA里不好实现,最好在VB里做一个用户控件,在VBA里调用,或者使用第三方控件
回复

使用道具 举报

7

主题

18

帖子

2

银币

初来乍到

Rank: 1

铜币
46
发表于 2005-11-9 08:08:00 | 显示全部楼层
1、是在VBA里做的程序;
2、VBA里不好实现,最好在VB里做一个用户控件,在VBA里调用,或者使用第三方控件?能否说得详细点啊?
回复

使用道具 举报

6

主题

18

帖子

4

银币

初来乍到

Rank: 1

铜币
42
发表于 2005-11-9 17:12:00 | 显示全部楼层
我也正学,所有得表格控件都不能修改单元格里的内容吗?只能靠文本框来修改,难道表格只有显示数据的作用?盼着赶紧回答啊!
回复

使用道具 举报

7

主题

18

帖子

2

银币

初来乍到

Rank: 1

铜币
46
发表于 2005-11-10 22:55:00 | 显示全部楼层
晕,怎么没有人理了咯?
回复

使用道具 举报

6

主题

18

帖子

4

银币

初来乍到

Rank: 1

铜币
42
发表于 2005-11-14 19:20:00 | 显示全部楼层
各位啊,在哪啊?
VBA里用哪个表格控件比较好啊?我想实现数据修改的功能和与数据库里的数据连接的功能。
斑竹啊!
回复

使用道具 举报

21

主题

43

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
127
发表于 2005-11-20 15:43:00 | 显示全部楼层
我就是自己做了个控件,在vba里调用,没有办法。
回复

使用道具 举报

7

主题

18

帖子

2

银币

初来乍到

Rank: 1

铜币
46
发表于 2005-11-21 09:19:00 | 显示全部楼层
能否拿出来共享一下呢?
回复

使用道具 举报

3

主题

24

帖子

1

银币

初来乍到

Rank: 1

铜币
36
发表于 2005-11-21 22:33:00 | 显示全部楼层
也就是用VB做成DLL、OCX等,在VBA里面调用
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-4 18:29 , Processed in 0.639899 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表