1 &ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r12 GUI
6 &Scoped-define WINDOW-NAME CURRENT-WINDOW
7 &Scoped-define FRAME-NAME D-Dialog
8 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS D-Dialog
9 /*------------------------------------------------------------------------
12 Author
: Andrew McMillan
15 ------------------------------------------------------------------------*/
16 DEF INPUT PARAMETER group-name
LIKE UsrGroup.GroupName
NO-UNDO.
17 DEF INPUT PARAMETER node-code
LIKE LinkNode.NodeCode
NO-UNDO.
18 DEF INPUT PARAMETER link-code
LIKE ProgramLink.LinkCode
NO-UNDO.
22 /* *************************** Definitions
************************** */
24 DEF VAR delim
AS CHAR NO-UNDO INITIAL "|".
26 DEF VAR ret-value
AS CHAR NO-UNDO INITIAL "".
28 /* _UIB-CODE-BLOCK-END
*/
32 &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
34 /* ******************** Preprocessor Definitions
******************** */
36 &Scoped-define PROCEDURE-TYPE SmartDialog
38 &Scoped-define ADM-CONTAINER DIALOG-BOX
40 /* Name of first Frame and
/or Browse and
/or first Query
*/
41 &Scoped-define FRAME-NAME D-Dialog
43 /* Internal Tables
(found by Frame
, Query
& Browse Queries) */
44 &Scoped-define INTERNAL-TABLES UsrGroupMenuItem
46 /* Definitions for
DIALOG-BOX D-Dialog
*/
47 &Scoped-define FIELDS-IN-QUERY-D-Dialog UsrGroupMenuItem.MenuName ~
48 UsrGroupMenuItem.ButtonLabel UsrGroupMenuItem.LinkCode ~
49 UsrGroupMenuItem.SequenceCode
50 &Scoped-define OPEN-QUERY-D-Dialog OPEN QUERY D-Dialog FOR EACH UsrGroupMenuItem SHARE-LOCK.
51 &Scoped-define TABLES-IN-QUERY-D-Dialog UsrGroupMenuItem
52 &Scoped-define FIRST-TABLE-IN-QUERY-D-Dialog UsrGroupMenuItem
55 /* Standard List Definitions
*/
56 &Scoped-Define ENABLED-OBJECTS RECT-1 cmb_GroupName Btn_OK Btn_Cancel
57 &Scoped-Define DISPLAYED-FIELDS UsrGroupMenuItem.MenuName ~
58 UsrGroupMenuItem.ButtonLabel UsrGroupMenuItem.LinkCode ~
59 UsrGroupMenuItem.SequenceCode
60 &Scoped-Define DISPLAYED-OBJECTS cmb_GroupName
62 /* Custom List Definitions
*/
63 /* List-1
,List-2
,List-3
,List-4
,List-5
,List-6
*/
65 /* _UIB-PREPROCESSOR-BLOCK-END
*/
70 /* *********************** Control Definitions
********************** */
72 /* Define a dialog box
*/
74 /* Definitions of the field level widgets
*/
75 DEFINE BUTTON Btn_Cancel
AUTO-END-KEY
80 DEFINE BUTTON Btn_OK
AUTO-GO DEFAULT
85 DEFINE VARIABLE cmb_GroupName
AS CHARACTER FORMAT "X(256)":U
87 VIEW-AS COMBO-BOX INNER-LINES 20
92 DEFINE RECTANGLE RECT-1
93 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL
96 /* Query definitions
*/
98 DEFINE QUERY D-Dialog
FOR
99 UsrGroupMenuItem
SCROLLING.
102 /* ************************ Frame Definitions
*********************** */
104 DEFINE FRAME D-Dialog
105 UsrGroupMenuItem.MenuName
AT ROW 1.4 COL 5.29 COLON-ALIGNED
109 UsrGroupMenuItem.ButtonLabel
AT ROW 1.4 COL 51.57 COLON-ALIGNED
113 UsrGroupMenuItem.LinkCode
AT ROW 2.6 COL 5.29 COLON-ALIGNED
117 UsrGroupMenuItem.SequenceCode
AT ROW 2.6 COL 35 COLON-ALIGNED
121 cmb_GroupName
AT ROW 3.8 COL 5.29 COLON-ALIGNED
122 Btn_OK
AT ROW 5.2 COL 1.57
123 Btn_Cancel
AT ROW 5.2 COL 11.29
124 RECT-1
AT ROW 1.2 COL 1.57
125 SPACE(0.14) SKIP(1.24)
126 WITH VIEW-AS DIALOG-BOX KEEP-TAB-ORDER
127 SIDE-LABELS NO-UNDERLINE THREE-D SCROLLABLE
129 TITLE "Move ProgramLink"
130 DEFAULT-BUTTON Btn_OK
CANCEL-BUTTON Btn_Cancel.
133 /* *********************** Procedure Settings
************************ */
135 &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
136 /* Settings for
THIS-PROCEDURE
138 Allow
: Basic
,Browse
,DB-Fields
,Query
,Smart
139 Other Settings
: COMPILE
141 &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
144 /* *************** Runtime Attributes and UIB Settings
************** */
146 &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
147 /* SETTINGS
FOR DIALOG-BOX D-Dialog
150 FRAME D-Dialog
:SCROLLABLE = FALSE
151 FRAME D-Dialog
:HIDDEN = TRUE.
153 /* SETTINGS
FOR FILL-IN UsrGroupMenuItem.ButtonLabel
IN FRAME D-Dialog
154 NO-ENABLE EXP-LABEL
*/
155 /* SETTINGS
FOR FILL-IN UsrGroupMenuItem.LinkCode
IN FRAME D-Dialog
156 NO-ENABLE EXP-LABEL
*/
157 /* SETTINGS
FOR FILL-IN UsrGroupMenuItem.MenuName
IN FRAME D-Dialog
158 NO-ENABLE EXP-LABEL
*/
159 /* SETTINGS
FOR FILL-IN UsrGroupMenuItem.SequenceCode
IN FRAME D-Dialog
160 NO-ENABLE EXP-LABEL
*/
161 /* _RUN-TIME-ATTRIBUTES-END
*/
165 /* Setting information for Queries and Browse Widgets fields
*/
167 &ANALYZE-SUSPEND _QUERY-BLOCK DIALOG-BOX D-Dialog
168 /* Query rebuild information for
DIALOG-BOX D-Dialog
169 _TblList
= "TTPL.UsrGroupMenuItem"
170 _Options
= "SHARE-LOCK"
172 */ /* DIALOG-BOX D-Dialog
*/
178 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB D-Dialog
179 /* ************************* Included-Libraries
*********************** */
181 {src
/adm
/method
/containr.i
}
183 /* _UIB-CODE-BLOCK-END
*/
189 /* ************************ Control Triggers
************************ */
191 &Scoped-define SELF-NAME D-Dialog
192 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL D-Dialog D-Dialog
193 ON WINDOW-CLOSE
OF FRAME D-Dialog
/* Move ProgramLink
*/
195 /* Add Trigger to equate WINDOW-CLOSE to END-ERROR.
*/
196 APPLY "END-ERROR":U
TO SELF.
199 /* _UIB-CODE-BLOCK-END
*/
203 &Scoped-define SELF-NAME Btn_OK
204 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_OK D-Dialog
205 ON CHOOSE OF Btn_OK
IN FRAME D-Dialog
/* OK */
210 /* _UIB-CODE-BLOCK-END
*/
216 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK D-Dialog
219 /* *************************** Main Block
*************************** */
220 FIND UsrGroupMenu
WHERE UsrGroupMenu.GroupName
= group-name
221 AND UsrGroupMenu.NodeCode
= node-code
NO-LOCK.
222 FIND UsrGroupMenuItem
OF UsrGroupMenu
223 WHERE UsrGroupMenuItem.LinkCode
= link-code
NO-LOCK.
227 {src
/adm
/template
/dialogmn.i
}
231 /* _UIB-CODE-BLOCK-END
*/
235 /* ********************** Internal Procedures
*********************** */
237 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects D-Dialog _ADM-CREATE-OBJECTS
238 PROCEDURE adm-create-objects
:
239 /*------------------------------------------------------------------------------
240 Purpose
: Create handles for all SmartObjects used in this procedure.
241 After SmartObjects are initialized
, then SmartLinks are added.
243 ------------------------------------------------------------------------------*/
247 /* _UIB-CODE-BLOCK-END
*/
251 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-row-available D-Dialog _ADM-ROW-AVAILABLE
252 PROCEDURE adm-row-available
:
253 /*------------------------------------------------------------------------------
254 Purpose
: Dispatched to this procedure when the Record-
255 Source has a new row available. This procedure
256 tries to get the new row
(or foriegn keys
) from
257 the Record-Source and process it.
259 ------------------------------------------------------------------------------*/
261 /* Define variables needed by this internal procedure.
*/
262 {src
/adm
/template
/row-head.i
}
264 /* Process the newly available records
(i.e. display fields
,
265 open queries
, and
/or pass records on to any RECORD-TARGETS
).
*/
266 {src
/adm
/template
/row-end.i
}
270 /* _UIB-CODE-BLOCK-END
*/
274 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE assign-changes D-Dialog
275 PROCEDURE assign-changes
:
276 /*------------------------------------------------------------------------------
278 ------------------------------------------------------------------------------*/
279 DEF VAR new-group
AS CHAR NO-UNDO.
281 DO WITH FRAME {&FRAME-NAME}:
283 new-group
= ENTRY( cmb_GroupName
:LOOKUP(cmb_GroupName
:SCREEN-VALUE),
284 cmb_GroupName
:PRIVATE-DATA).
286 IF AVAILABLE(UsrGroupMenuItem
) AND group-name
<> new-group
THEN DO TRANSACTION:
287 FIND CURRENT UsrGroupMenuItem
EXCLUSIVE-LOCK.
288 UsrGroupMenuItem.GroupName
= new-group.
289 ret-value
= "CHANGED".
290 FIND CURRENT UsrGroupMenuItem
NO-LOCK.
297 /* _UIB-CODE-BLOCK-END
*/
301 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE build-combo D-Dialog
302 PROCEDURE build-combo
:
303 /*------------------------------------------------------------------------------
305 ------------------------------------------------------------------------------*/
306 DEF VAR ug-list
AS CHAR NO-UNDO INITIAL "".
307 DEF VAR pv-list
AS CHAR NO-UNDO INITIAL "".
308 DEF VAR ug-entry
AS CHAR NO-UNDO INITIAL "".
309 DEF VAR scr-val
AS CHAR NO-UNDO INITIAL "".
311 DO WITH FRAME {&FRAME-NAME}:
313 FOR EACH UsrGroup
NO-LOCK:
314 ug-entry
= STRING( UsrGroup.GroupName
, "X(20)") + " - " + UsrGroup.Description.
315 ug-list
= ug-list
+ ug-entry
+ delim.
316 pv-list
= pv-list
+ UsrGroup.GroupName
+ ",".
317 IF UsrGroup.GroupName
= group-name
THEN scr-val
= ug-entry.
320 cmb_GroupName
:DELIMITER = delim.
321 cmb_GroupName
:LIST-ITEMS = TRIM( ug-list
, cmb_GroupName
:DELIMITER).
322 cmb_GroupName
:PRIVATE-DATA = pv-list.
323 IF scr-val
<> "" THEN cmb_GroupName
:SCREEN-VALUE = scr-val.
328 /* _UIB-CODE-BLOCK-END
*/
332 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI D-Dialog _DEFAULT-DISABLE
333 PROCEDURE disable_UI
:
334 /*------------------------------------------------------------------------------
335 Purpose
: DISABLE the User Interface
337 Notes
: Here we clean-up the user-interface by deleting
338 dynamic widgets we have created and
/or hide
339 frames. This procedure is usually called when
340 we are ready to
"clean-up" after running.
341 ------------------------------------------------------------------------------*/
342 /* Hide all frames.
*/
346 /* _UIB-CODE-BLOCK-END
*/
350 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI D-Dialog _DEFAULT-ENABLE
351 PROCEDURE enable_UI
:
352 /*------------------------------------------------------------------------------
353 Purpose
: ENABLE the User Interface
355 Notes
: Here we display
/view
/enable the widgets in the
356 user-interface. In addition
, OPEN all queries
357 associated with each
FRAME and
BROWSE.
358 These statements here are based on the
"Other
359 Settings" section of the widget Property Sheets.
360 ------------------------------------------------------------------------------*/
361 DISPLAY cmb_GroupName
363 IF AVAILABLE UsrGroupMenuItem
THEN
364 DISPLAY UsrGroupMenuItem.MenuName UsrGroupMenuItem.ButtonLabel
365 UsrGroupMenuItem.LinkCode UsrGroupMenuItem.SequenceCode
367 ENABLE RECT-1 cmb_GroupName Btn_OK Btn_Cancel
370 {&OPEN-BROWSERS-IN-QUERY-D-Dialog}
373 /* _UIB-CODE-BLOCK-END
*/
377 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-records D-Dialog _ADM-SEND-RECORDS
378 PROCEDURE send-records
:
379 /*------------------------------------------------------------------------------
380 Purpose
: Send record
ROWID's for all tables used by
382 Parameters
: see template
/snd-head.i
383 ------------------------------------------------------------------------------*/
385 /* Define variables needed by this internal procedure.
*/
386 {src
/adm
/template
/snd-head.i
}
388 /* For each requested table
, put it's
ROWID in the output list.
*/
389 {src
/adm
/template
/snd-list.i
"UsrGroupMenuItem"}
391 /* Deal with any unexpected table requests before closing.
*/
392 {src
/adm
/template
/snd-end.i
}
396 /* _UIB-CODE-BLOCK-END
*/
400 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE state-changed D-Dialog
401 PROCEDURE state-changed
:
402 /* -----------------------------------------------------------
406 -------------------------------------------------------------*/
407 DEFINE INPUT PARAMETER p-issuer-hdl
AS HANDLE NO-UNDO.
408 DEFINE INPUT PARAMETER p-state
AS CHARACTER NO-UNDO.
411 /* _UIB-CODE-BLOCK-END
*/