Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

Normally StackOverflow questions are of the form "I don't know how to do something.", but this one is of the form "I know how to do something, but I don't understand why it works.".
More exactly, I'm clicking on the title column of a browser inside a regular window, and then the MOUSE-SELECT-CLICK event is triggered, causing the corresponding column to be sorted, ascending or descending, as you can see in the following source code:

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.

This is working:
When I click on the title of the column, the column gets sorted. When I click elsewhere in the column, nothing happens.

But WHY does it work? In the source code I have written what to do when I click in the column ANYWHERE, I did not specify that the title column should be clicked, but still it's working.

You can say "Yes, so what? It's working, so what's the big deal?", but I fear that later the customer might ask me to program some behaviour when the column is clicked above a certain tuple and asks me to do something with that particular tuple, and I won't have the smallest idea how to start.

Does anybody have an idea?
Thanks in advance

question from:https://stackoverflow.com/questions/65916272/why-can-i-sort-columns-in-a-browser

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
822 views
Welcome To Ask or Share your Answers For Others

1 Answer

To see what is being executed, you can make use of the log-manager with entry type 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.

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...