1 &ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r12 GUI
6 &Scoped-define WINDOW-NAME CURRENT-WINDOW
7 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS V-table-Win
8 /*------------------------------------------------------------------------
9 ------------------------------------------------------------------------*/
13 /* *************************** Definitions
************************** */
15 DEF VAR mode
AS CHAR NO-UNDO.
17 /* _UIB-CODE-BLOCK-END
*/
21 &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
23 /* ******************** Preprocessor Definitions
******************** */
25 &Scoped-define PROCEDURE-TYPE SmartViewer
27 &Scoped-define ADM-SUPPORTED-LINKS Record-Source,Record-Target,TableIO-Target
29 /* Name of first Frame and
/or Browse and
/or first Query
*/
30 &Scoped-define FRAME-NAME F-Main
33 &Scoped-define EXTERNAL-TABLES Office
34 &Scoped-define FIRST-EXTERNAL-TABLE Office
37 /* Need to scope the external tables to this procedure
*/
38 DEFINE QUERY external_tables
FOR Office.
39 /* Standard List Definitions
*/
40 &Scoped-Define ENABLED-FIELDS Office.OfficeCode Office.ThisOffice ~
41 Office.Name Office.StreetAddress Office.GST Office.GSTNo
42 &Scoped-define FIELD-PAIRS~
43 ~
{&FP1}OfficeCode ~{&FP2}OfficeCode ~{&FP3}~
44 ~
{&FP1}Name ~{&FP2}Name ~{&FP3}~
45 ~
{&FP1}GST ~{&FP2}GST ~{&FP3}~
46 ~
{&FP1}GSTNo ~{&FP2}GSTNo ~{&FP3}
47 &Scoped-define ENABLED-TABLES Office
48 &Scoped-define FIRST-ENABLED-TABLE Office
49 &Scoped-Define ENABLED-OBJECTS RECT-24
50 &Scoped-Define DISPLAYED-FIELDS Office.OfficeCode Office.ThisOffice ~
51 Office.Name Office.StreetAddress Office.GST Office.GSTNo
53 /* Custom List Definitions
*/
54 /* ADM-CREATE-FIELDS
,ADM-ASSIGN-FIELDS
,List-3
,List-4
,List-5
,List-6
*/
56 /* _UIB-PREPROCESSOR-BLOCK-END
*/
60 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _XFTR "Foreign Keys" V-table-Win _INLINE
61 /* Actions
: ? adm
/support
/keyedit.w ? ? ?
*/
67 OfficeCode|y|y|ttpl.Office.OfficeCode
70 **************************
71 * Set attributes related to FOREIGN
KEYS
73 RUN set-attribute-list
(
74 'Keys-Accepted
= "OfficeCode",
75 Keys-Supplied
= "OfficeCode"'
:U
).
76 /**************************
78 /* _UIB-CODE-BLOCK-END
*/
82 /* *********************** Control Definitions
********************** */
85 /* Definitions of the field level widgets
*/
86 DEFINE RECTANGLE RECT-24
87 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL
91 /* ************************ Frame Definitions
*********************** */
94 Office.OfficeCode
AT ROW 1.2 COL 8.72 COLON-ALIGNED
97 Office.ThisOffice
AT ROW 1.2 COL 22.72
101 Office.Name
AT ROW 2.2 COL 8.72 COLON-ALIGNED
104 Office.StreetAddress
AT ROW 4.2 COL 10.72 NO-LABEL
105 VIEW-AS EDITOR SCROLLBAR-VERTICAL
107 Office.GST
AT ROW 9.4 COL 8.72 COLON-ALIGNED
111 Office.GSTNo
AT ROW 9.4 COL 31.57 COLON-ALIGNED
112 LABEL "Primary GST No" FORMAT "999999999999"
115 RECT-24
AT ROW 1 COL 1
116 "Address:" VIEW-AS TEXT
117 SIZE 6.14 BY .6 AT ROW 4.2 COL 4.43
119 WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY
120 SIDE-LABELS NO-UNDERLINE THREE-D
121 AT COL 1 ROW 1 SCROLLABLE
125 /* *********************** Procedure Settings
************************ */
127 &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
128 /* Settings for
THIS-PROCEDURE
130 External Tables
: ttpl.Office
131 Allow
: Basic
,DB-Fields
133 Add Fields to
: EXTERNAL-TABLES
134 Other Settings
: PERSISTENT-ONLY
COMPILE
137 /* This procedure should always be
RUN PERSISTENT. Report the error
, */
138 /* then cleanup and return.
*/
139 IF NOT THIS-PROCEDURE:PERSISTENT THEN DO:
140 MESSAGE "{&FILE-NAME} should only be RUN PERSISTENT."
141 VIEW-AS ALERT-BOX ERROR BUTTONS OK.
145 &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
147 /* ************************* Create Window
************************** */
149 &ANALYZE-SUSPEND _CREATE-WINDOW
150 /* DESIGN Window definition
(used by the UIB
)
151 CREATE WINDOW V-table-Win
ASSIGN
154 /* END WINDOW DEFINITION
*/
159 /* *************** Runtime Attributes and UIB Settings
************** */
161 &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
162 /* SETTINGS
FOR WINDOW V-table-Win
163 VISIBLE,,RUN-PERSISTENT
*/
164 /* SETTINGS
FOR FRAME F-Main
165 NOT-VISIBLE Size-to-Fit
*/
167 FRAME F-Main
:SCROLLABLE = FALSE
168 FRAME F-Main
:HIDDEN = TRUE.
170 /* SETTINGS
FOR FILL-IN Office.GST
IN FRAME F-Main
172 /* SETTINGS
FOR FILL-IN Office.GSTNo
IN FRAME F-Main
173 EXP-LABEL EXP-FORMAT
*/
174 /* SETTINGS
FOR TOGGLE-BOX Office.ThisOffice
IN FRAME F-Main
176 /* _RUN-TIME-ATTRIBUTES-END
*/
180 /* Setting information for Queries and Browse Widgets fields
*/
182 &ANALYZE-SUSPEND _QUERY-BLOCK FRAME F-Main
183 /* Query rebuild information for
FRAME F-Main
186 */ /* FRAME F-Main
*/
192 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB V-table-Win
193 /* ************************* Included-Libraries
*********************** */
195 {src
/adm
/method
/viewer.i
}
196 {inc
/method
/m-mntvwr.i
}
198 /* _UIB-CODE-BLOCK-END
*/
203 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK V-table-Win
206 /* *************************** Main Block
*************************** */
208 /* _UIB-CODE-BLOCK-END
*/
212 /* ********************** Internal Procedures
*********************** */
214 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-find-using-key V-table-Win adm/support/_key-fnd.p
215 PROCEDURE adm-find-using-key
:
216 /*------------------------------------------------------------------------------
217 Purpose
: Finds the current record using the contents of
218 the 'Key-Name' and 'Key-Value' attributes.
220 ------------------------------------------------------------------------------*/
221 DEF VAR key-value
AS CHAR NO-UNDO.
222 DEF VAR row-avail-enabled
AS LOGICAL NO-UNDO.
224 /* LOCK status on the find depends on FIELDS-ENABLED.
*/
225 RUN get-attribute
('FIELDS-ENABLED'
:U
).
226 row-avail-enabled
= (RETURN-VALUE eq 'yes'
:U
).
227 /* Look up the current key-value.
*/
228 RUN get-attribute
('Key-Value'
:U
).
229 key-value
= RETURN-VALUE.
231 /* Find the current record using the current Key-Name.
*/
232 RUN get-attribute
('Key-Name'
:U
).
234 WHEN 'OfficeCode'
:U
THEN
235 {src
/adm
/template
/find-tbl.i
237 &WHERE = "WHERE Office.OfficeCode eq key-value"
243 /* _UIB-CODE-BLOCK-END
*/
247 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-row-available V-table-Win _ADM-ROW-AVAILABLE
248 PROCEDURE adm-row-available
:
249 /*------------------------------------------------------------------------------
250 Purpose
: Dispatched to this procedure when the Record-
251 Source has a new row available. This procedure
252 tries to get the new row
(or foriegn keys
) from
253 the Record-Source and process it.
255 ------------------------------------------------------------------------------*/
257 /* Define variables needed by this internal procedure.
*/
258 {src
/adm
/template
/row-head.i
}
260 /* Create a list of all the tables that we need to get.
*/
261 {src
/adm
/template
/row-list.i
"Office"}
263 /* Get the record
ROWID's from the RECORD-SOURCE.
*/
264 {src
/adm
/template
/row-get.i
}
266 /* FIND each record specified by the RECORD-SOURCE.
*/
267 {src
/adm
/template
/row-find.i
"Office"}
269 /* Process the newly available records
(i.e. display fields
,
270 open queries
, and
/or pass records on to any RECORD-TARGETS
).
*/
271 {src
/adm
/template
/row-end.i
}
275 /* _UIB-CODE-BLOCK-END
*/
279 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE cancel-changes V-table-Win
280 PROCEDURE cancel-changes
:
281 /*------------------------------------------------------------------------------
283 ------------------------------------------------------------------------------*/
284 RUN check-modified
( 'clear'
:U
).
285 RUN dispatch
( 'exit'
:U
).
288 /* _UIB-CODE-BLOCK-END
*/
292 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE confirm-changes V-table-Win
293 PROCEDURE confirm-changes
:
294 /*------------------------------------------------------------------------------
296 ------------------------------------------------------------------------------*/
298 IF RETURN-VALUE = "FAIL" THEN RETURN.
300 RUN dispatch
( 'update-record'
:U
).
301 IF mode
= "Add" THEN RUN notify
( 'open-query
,record-source'
:U
).
302 RUN dispatch
( 'exit'
:U
).
305 /* _UIB-CODE-BLOCK-END
*/
309 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI V-table-Win _DEFAULT-DISABLE
310 PROCEDURE disable_UI
:
311 /*------------------------------------------------------------------------------
312 Purpose
: DISABLE the User Interface
314 Notes
: Here we clean-up the user-interface by deleting
315 dynamic widgets we have created and
/or hide
316 frames. This procedure is usually called when
317 we are ready to
"clean-up" after running.
318 ------------------------------------------------------------------------------*/
319 /* Hide all frames.
*/
321 IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
324 /* _UIB-CODE-BLOCK-END
*/
328 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE inst-assign-statement V-table-Win
329 PROCEDURE inst-assign-statement
:
330 /*------------------------------------------------------------------------------
332 ------------------------------------------------------------------------------*/
333 FIND OfficeSettings
OF Office
WHERE OfficeSettings.SetName
= "GST-Number" EXCLUSIVE-LOCK NO-ERROR.
334 IF NOT AVAILABLE(OfficeSettings
) THEN DO:
335 CREATE OfficeSettings.
336 ASSIGN OfficeSettings.OfficeCode
= Office.OfficeCode
337 OfficeSettings.SetName
= "GST-Number"
338 OfficeSettings.SetValue
= REPLACE( STRING( Office.GSTNo
, ">99,999,999"),",","-") .
341 FIND OfficeSettings
OF Office
WHERE OfficeSettings.SetName
= "GST-Rate" EXCLUSIVE-LOCK NO-ERROR.
342 IF NOT AVAILABLE(OfficeSettings
) THEN CREATE OfficeSettings.
343 ASSIGN OfficeSettings.OfficeCode
= Office.OfficeCode
344 OfficeSettings.SetName
= "GST-Rate"
345 OfficeSettings.SetValue
= STRING( Office.GST
).
347 /* unlock the record
*/
348 FIND FIRST OfficeSettings
OF Office
NO-LOCK NO-ERROR.
352 /* _UIB-CODE-BLOCK-END
*/
356 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE inst-enable-fields V-table-Win
357 PROCEDURE inst-enable-fields
:
358 /*------------------------------------------------------------------------------
360 ------------------------------------------------------------------------------*/
361 DO WITH FRAME {&FRAME-NAME}:
363 Office.OfficeCode
:SENSITIVE = (Mode
= "Add").
364 /* Office.StreetAddress
:READ-ONLY = No.
*/
365 Office.GSTNo
:HIDDEN = (Mode
<> "Add").
370 /* _UIB-CODE-BLOCK-END
*/
374 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE inst-initialize V-table-Win
375 PROCEDURE inst-initialize
:
376 /*------------------------------------------------------------------------------
378 ------------------------------------------------------------------------------*/
379 IF mode
= "Add" THEN DO:
381 RUN dispatch
( 'add-record'
:U
).
384 RUN dispatch
( 'enable-fields'
:U
).
388 /* _UIB-CODE-BLOCK-END
*/
392 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE override-add-record V-table-Win
393 PROCEDURE override-add-record
:
394 /*------------------------------------------------------------------------------
398 ------------------------------------------------------------------------------*/
399 FIND Office
WHERE Office.OfficeCode
= "" EXCLUSIVE-LOCK NO-ERROR.
400 IF NOT AVAILABLE( Office
) THEN CREATE Office.
402 RUN dispatch
( 'display-fields'
:U
).
403 RUN dispatch
( 'enable-fields'
:U
).
405 CURRENT-WINDOW:TITLE = "Adding New Office".
409 /* _UIB-CODE-BLOCK-END
*/
413 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE pre-destroy V-table-Win
414 PROCEDURE pre-destroy
:
415 /*------------------------------------------------------------------------------
417 ------------------------------------------------------------------------------*/
418 RUN check-modified
( 'clear'
:U
).
421 /* _UIB-CODE-BLOCK-END
*/
425 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-key V-table-Win adm/support/_key-snd.p
427 /*------------------------------------------------------------------------------
428 Purpose
: Sends a requested
KEY value back to the calling
430 Parameters
: <see adm
/template
/sndkytop.i
>
431 ------------------------------------------------------------------------------*/
433 /* Define variables needed by this internal procedure.
*/
434 {src
/adm
/template
/sndkytop.i
}
436 /* Return the key value associated with each key case.
*/
437 {src
/adm
/template
/sndkycas.i
"OfficeCode" "Office" "OfficeCode"}
439 /* Close the
CASE statement and end the procedure.
*/
440 {src
/adm
/template
/sndkyend.i
}
444 /* _UIB-CODE-BLOCK-END
*/
448 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-records V-table-Win _ADM-SEND-RECORDS
449 PROCEDURE send-records
:
450 /*------------------------------------------------------------------------------
451 Purpose
: Send record
ROWID's for all tables used by
453 Parameters
: see template
/snd-head.i
454 ------------------------------------------------------------------------------*/
456 /* Define variables needed by this internal procedure.
*/
457 {src
/adm
/template
/snd-head.i
}
459 /* For each requested table
, put it's
ROWID in the output list.
*/
460 {src
/adm
/template
/snd-list.i
"Office"}
462 /* Deal with any unexpected table requests before closing.
*/
463 {src
/adm
/template
/snd-end.i
}
467 /* _UIB-CODE-BLOCK-END
*/
471 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE state-changed V-table-Win
472 PROCEDURE state-changed
:
473 /* -----------------------------------------------------------
477 -------------------------------------------------------------*/
478 DEFINE INPUT PARAMETER p-issuer-hdl
AS HANDLE NO-UNDO.
479 DEFINE INPUT PARAMETER p-state
AS CHARACTER NO-UNDO.
482 /* Object instance CASEs can go here to replace standard behavior
484 {src
/adm
/template
/vstates.i
}
488 /* _UIB-CODE-BLOCK-END
*/
492 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE use-mode V-table-Win
494 /*------------------------------------------------------------------------------
496 ------------------------------------------------------------------------------*/
497 DEF INPUT PARAMETER new-mode
AS CHAR NO-UNDO.
501 /* _UIB-CODE-BLOCK-END
*/
505 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE verify-office V-table-Win
506 PROCEDURE verify-office
:
507 /*------------------------------------------------------------------------------
509 ------------------------------------------------------------------------------*/
510 /* does nothing yet
*/
513 /* _UIB-CODE-BLOCK-END
*/