在静态浏览器中获取列的名称

问题描述

每当用户单击静态浏览器的可编辑单元格时,我都需要禁用 2 个按钮。这需要发生在 4 列中(还有其他不可编辑的列)。为此,我需要获取列名。我尝试将代码放在浏览器的 ROW-ENTRY 触发器中,这很有效,除了我第一次单击可编辑单元格时,当我收到 10068 错误链接属性表达式中的加载属性(a:b: c) 必须是类型句柄或用户定义的类型并且有效 9not UNKNowN)。我尝试使用句柄而不是浏览器名称,但没有任何区别。在第一次之后,代码可以工作,我可以毫无错误获取列的名称

ROW-ENTRY 触发器内部的代码如下:

IF br-people:CURRENT-COLUMN:LABEL = "Name"    OR
   br-people:CURRENT-COLUMN:LABEL = "Surname" OR
   br-people:CURRENT-COLUMN:LABEL = "Age"     OR
   br-people:CURRENT-COLUMN:LABEL = "Gender" THEN DO:
       
        bUp:SENSITIVE = FALSE.
        bDown:SENSITIVE = FALSE.
END.

我使用的是 OpenEdge 11.4。任何见解将不胜感激。

解决方法

不幸的是,我没有安装它进行测试,但尝试在其他条件之前测试 VALID-HANDLE(br-people:CURRENT-COLUMN)。如果我没记错的话,这会触发多次,其中一个可能没有填满。

,

您还可以使用浏览单元格的 ENTRY 事件:

ON ENTRY OF <table>.<field1> BROWSE <browse-name> 
OR ENTRY OF <table>.<field2> BROWSE <browse-name> 
OR ENTRY OF <table>.<field3> BROWSE <browse-name> 
OR ENTRY OF <table>.<field4> BROWSE <browse-name> 
DO:

END.

根据您的要求(您提到“点击”),您还可以使用 MOUSE-SELECT-CLICK 事件。每当用户点击单元格时都会触发 - 无论该字段是否已经具有焦点。