Project

General

Profile

combo_dialog.p

Hynek Cihlar, 06/16/2026 07:09 AM

Download (2.55 KB)

 
1
/*------------------------------------------------------------------------
2
  combo_dialog.p  -  Branch 11343a verification: VALUE-CHANGED (fired while
3
  the DROP-DOWN-LIST is open, via arrow keys) opens a full modal DIALOG-BOX
4
  (a frame dialog with widgets + OK/Cancel), rather than an ALERT-BOX.
5

    
6
  A frame dialog-box runs its own nested WAIT-FOR loop (different from the
7
  alert-box modal loop), so this exercises a separate path of the fix.
8

    
9
  Expected (matching OpenEdge): the drop-down list closes when the dialog
10
  opens, the combo keeps the selected value (203), the dialog is modal, and
11
  after the dialog is dismissed the app returns cleanly with no freeze.
12
 ------------------------------------------------------------------------*/
13

    
14
DEFINE VARIABLE cb AS CHARACTER
15
   VIEW-AS COMBO-BOX
16
      INNER-LINES 8
17
      LIST-ITEMS "100","203","300","400","500"
18
      DROP-DOWN-LIST
19
   SIZE 24 BY 1.
20

    
21
DEFINE BUTTON btnQuit LABEL "Quit" SIZE 12 BY 1.
22

    
23
DEFINE FRAME f
24
   cb      AT ROW 2 COL 5 LABEL "Pick"
25
   btnQuit AT ROW 5 COL 5
26
   WITH SIDE-LABELS THREE-D SIZE 60 BY 8 TITLE "combo -> DIALOG-BOX (#11343a)".
27

    
28
DEFINE STREAM sout.
29
DEFINE VARIABLE seq AS INTEGER NO-UNDO.
30

    
31
PROCEDURE logline:
32
   DEFINE INPUT PARAMETER txt AS CHARACTER NO-UNDO.
33
   OUTPUT STREAM sout TO "combo_dialog.out" APPEND.
34
   PUT STREAM sout UNFORMATTED txt SKIP.
35
   OUTPUT STREAM sout CLOSE.
36
END PROCEDURE.
37

    
38
PROCEDURE showDialog:
39
   DEFINE VARIABLE note AS CHARACTER NO-UNDO VIEW-AS FILL-IN SIZE 28 BY 1.
40
   DEFINE BUTTON bOk     LABEL "OK"     AUTO-GO     SIZE 12 BY 1.
41
   DEFINE BUTTON bCancel LABEL "Cancel" AUTO-ENDKEY SIZE 12 BY 1.
42
   DEFINE FRAME dlg
43
      note    AT ROW 2 COL 3 LABEL "Note"
44
      bOk     AT ROW 4 COL 3
45
      bCancel AT ROW 4 COL 18
46
      WITH VIEW-AS DIALOG-BOX THREE-D SIZE 50 BY 7 TITLE "Details for 203".
47

    
48
   RUN logline("  >> DIALOG-BOX opening").
49
   ENABLE note bOk bCancel WITH FRAME dlg.
50
   WAIT-FOR GO OF FRAME dlg.
51
   RUN logline("  << DIALOG-BOX closed").
52
END PROCEDURE.
53

    
54
ON VALUE-CHANGED OF cb IN FRAME f
55
DO:
56
   seq = seq + 1.
57
   RUN logline(STRING(seq) + " VALUE-CHANGED screen=[" + cb:SCREEN-VALUE IN FRAME f + "]").
58
   IF cb:SCREEN-VALUE IN FRAME f = "203" THEN
59
      RUN showDialog.
60
END.
61

    
62
ON CHOOSE OF btnQuit IN FRAME f
63
DO:
64
   RUN logline("Quit chosen").
65
   APPLY "CLOSE" TO THIS-PROCEDURE.
66
END.
67

    
68
OUTPUT STREAM sout TO "combo_dialog.out".
69
PUT STREAM sout UNFORMATTED "=== run start ===" SKIP.
70
OUTPUT STREAM sout CLOSE.
71

    
72
ENABLE cb btnQuit WITH FRAME f.
73
cb:SCREEN-VALUE IN FRAME f = "100".
74

    
75
RUN logline("entering WAIT-FOR").
76
WAIT-FOR CLOSE OF THIS-PROCEDURE.
77
RUN logline("exited WAIT-FOR").
78

    
79
QUIT.