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

Getting the name of a column in a static browser

每当用户单击静态浏览器的可编辑单元格时,我都需要禁用 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 事件。每当用户在单元格中单击时都会触发 - 无论该字段是否已获得焦点。