标题:表单中grid 控件使用的问题,求指教
只看楼主
huowang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2019-5-17
结帖率:0
已结贴  问题点数:20 回复次数:25 
表单中grid 控件使用的问题,求指教
我的 grid 控件 数据源直接就是一张本地表,我想在grid 控件上单击的时候不切入单元格,只在双击某个单元格的时候可以切入这个单元格进行修改
目前我 把 grid 控件的 allowcellselecion ,设置了.F. ,beforrowcolchange 也设置了allowcellselecion ,设置了.F.,这两个设置好了以后,基本达到我想要的效果,本来我想在dblcick事件中写 allowcellselecion=.T. 就能实现双击进入单元格 ,但我双击后却没有切入单元格,该怎么做呢

搜索更多相关主题的帖子: 单元格 双击 控件 表单 grid 
2022-09-07 13:53
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:4 
allowcellselecion=.T. 时,单元格就没有双击事件了
2022-09-07 14:46
huowang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2019-5-17
得分:0 
那我想实现这个功能该怎么做呢
2022-09-07 17:26
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:4 
简单试了一下,有个问题:第一次双击输入不了,再点击其他行或列后双击就可以输入了?
程序代码:
CREATE CURSOR tt (F1 C(10), F2 C(10), F3 I)
INSERT INTO tt VALUES ("ABC", "123456", 101)
INSERT INTO tt VALUES ("DEF", "654321", 202)
INSERT INTO tt VALUES ("GHI", "456123", 303)
GO TOP 
of = CREATEOBJECT("form1")
of.show(1)
RETURN

DEFINE CLASS form1 as Form
    ADD OBJECT grid1 as myGrid
ENDDEFINE

DEFINE CLASS myGrid as Grid 
    AllowCellSelection = .f.
    PROCEDURE DblClick
        this.AllowCellSelection = .t.
        this.ReadOnly = .f.
    ENDPROC
    PROCEDURE AfterRowColChange(nColIndex)
        IF this.RowColChange != 0
            this.AllowCellSelection = .f.
        ENDIF  
    ENDPROC 
ENDDEFINE
2022-09-07 17:35
huowang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2019-5-17
得分:0 
对,其实我也发现了这个问题,如果我afterrowcolchange 事件中 写 allowcellselecion=.T. ,也是这样 第一次双击输入不了,再点击其他行或列后双击就可以输入,但这不是我想要的效果
2022-09-07 19:30
huowang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2019-5-17
得分:0 
afterrowcolchange 事件中 写 allowcellselecion=.T. 发现也基本可以了,但就是第一次双击无效,不知道怎么解决
2022-09-07 21:13
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:4 
开打调试器的事件跟踪可以看到,Before/AfterRowColChange事件是在click事件之前触发的,所以第一次会无效
2022-09-07 21:22
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:0 
表格的双击事件代码这样试试
PROCEDURE DblClick
    Local oo as TextBox
    Local array aTemp[1]
    this.AllowCellSelection = .T.
    AMouseObj(aTemp)
    oo = aTemp[1]
    oo.SetFocus()
EndProc
上面只是简单的试验一下,没做任何错误判断处理
2022-09-07 21:25
sam_jiang
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:542
专家分:781
注 册:2021-10-13
得分:4 
以下是引用csyx在2022-9-7 21:22:38的发言:

开打调试器的事件跟踪可以看到,Before/AfterRowColChange事件是在click事件之前触发的,所以第一次会无效



2022-09-07 21:27
sam_jiang
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:542
专家分:781
注 册:2021-10-13
得分:0 
cell的单击事件设置为nodefault,或者readonly,或者enable=.f.,双击事件后恢复为.t.,lostfocus再设为.f.,应该就可以了。
2022-09-07 21:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-509967-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.310183 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved