【问题标题】:Why can I sort columns in a browser?为什么我可以在浏览器中对列进行排序?
【发布时间】:2021-05-01 02:49:55
【问题描述】:

通常 StackOverflow 问题的形式是“我不知道如何做某事。”,但这个问题的形式是“我知道如何做某事,但我不明白它为什么有效。”。
更准确地说,我是在常规窗口中点击浏览器的标题栏,然后触发MOUSE-SELECT-CLICK事件,使对应的栏目进行排序,升序或降序,如下面的源码:

DEFINE BROWSE browser-object
  QUERY browser-object DISPLAY
    temp_table.Field1 FORMAT ... COLUMN-LABEL "Label1"    
    temp_table.Field2 FORMAT ... COLUMN-LABEL "Label2"
    ...

DEFINE VARIABLE L-logical-Field1 AS LOGICAL INITIAL TRUE.
DEFINE VARIABLE L-logical-Field2 AS LOGICAL INITIAL TRUE.
...

ON MOUSE-SELECT-CLICK OF temp_table.Field1 IN BROWSE browser-object
DO:
    IF L-logical-Field1
    THEN OPEN QUERY browser-object FOR EACH temp_table BY temp_table.Field1.
    ELSE OPEN QUERY browser-object FOR EACH temp_table BY temp_table.Field1 DESC.
    L-logical-Field1 = NOT L-logical-Field1.
END.
ON MOUSE-SELECT-CLICK OF temp_table.Field2 IN BROWSE browser-object
DO:
    IF L-logical-Field2
    THEN OPEN QUERY browser-object FOR EACH temp_table BY temp_table.Field2.
    ELSE OPEN QUERY browser-object FOR EACH temp_table BY temp_table.Field2 DESC.
    L-logical-Field2 = NOT L-logical-Field2.
END.

这是有效的:
当我单击列的标题时,该列会被排序。当我单击列中的其他位置时,没有任何反应。

但是为什么它会起作用?在源代码中我已经写了当我点击 ANYWHERE 列时要做什么,我没有指定应该点击标题列,但它仍然可以工作。

您可以说“是的,那又怎样?它工作正常,有什么大不了的?”,但我担心以后当在某个元组上方单击列时客户可能会要求我编写一些行为并要求我用那个特定的元组做点什么,我不知道如何开始。

有人有想法吗?

【问题讨论】:

  • 通常基于 START-SEARCH 事件实现列排序。你确定,这个事件没有在某个地方实现,也许是一个包含文件? knowledgebase.progress.com/articles/Knowledge/P73465
  • @MikeFechner:感谢您的快速回复。我之前没有听说过START-SEARCH 事件,我会看看这个。但是,我的代码,不是基于 START-SEARCH 似乎可以工作,但我担心未来的兼容性。

标签: openedge progress-4gl


【解决方案1】:

要查看正在执行的内容,您可以使用 log-manager 条目类型为 4glTrace

ON ALT-CTRL-H ANYWHERE DO:

   IF LOG-MANAGER:LOGFILE-NAME = ? THEN DO:
      LOG-MANAGER:LOGFILE-NAME = "4gltrace.log".
      LOG-MANAGER:LOG-ENTRY-TYPES = "4GLTRACE:2".
      MESSAGE "Started logging. Press Ctrl+Alt+H again to stop.":u VIEW-AS ALERT-BOX.
   END.
   ELSE DO:
      LOG-MANAGER:CLOSE-LOG().
      OS-COMMAND NO-WAIT VALUE( "4gltrace.log" ).
   END.
   RETURN NO-APPLY.

END.

【讨论】:

    猜你喜欢
    • 2017-08-18
    • 2014-03-13
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多