f-feldbrowser.w 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430
  1. &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2
  2. &ANALYZE-RESUME
  3. /* Connected Databases
  4. */
  5. &Scoped-define WINDOW-NAME CURRENT-WINDOW
  6. {adecomm/appserv.i}
  7. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS fFrameWin
  8. /*------------------------------------------------------------------------
  9. File:
  10. Description: from cntnrfrm.w - ADM2 SmartFrame Template
  11. Input Parameters:
  12. <none>
  13. Output Parameters:
  14. <none>
  15. ------------------------------------------------------------------------*/
  16. /* This .W file was created with the Progress AppBuilder. */
  17. /*----------------------------------------------------------------------*/
  18. /* Create an unnamed pool to store all the widgets created
  19. by this procedure. This is a good default which assures
  20. that this procedure's triggers and internal procedures
  21. will execute in this procedure's storage, and that proper
  22. cleanup will occur on deletion of the procedure. */
  23. CREATE WIDGET-POOL.
  24. /* *************************** Definitions ************************** */
  25. /* Parameters Definitions --- */
  26. /* Local Variable Definitions --- */
  27. {src/adm2/widgetprto.i}
  28. DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.
  29. DEFINE VARIABLE cFirma AS CHARACTER NO-UNDO.
  30. DEFINE VARIABLE cBenutzer AS CHARACTER NO-UNDO.
  31. DEFINE VARIABLE cProgramm AS CHARACTER NO-UNDO.
  32. DEFINE VARIABLE cTabelle AS CHARACTER NO-UNDO.
  33. DEFINE TEMP-TABLE ttFelder NO-UNDO
  34. FIELD cName AS CHARACTER
  35. FIELD cType AS CHARACTER
  36. FIELD cFormat AS CHARACTER
  37. FIELD cView-As AS CHARACTER
  38. .
  39. /* _UIB-CODE-BLOCK-END */
  40. &ANALYZE-RESUME
  41. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  42. /* ******************** Preprocessor Definitions ******************** */
  43. &Scoped-define PROCEDURE-TYPE SmartFrame
  44. &Scoped-define DB-AWARE no
  45. &Scoped-define ADM-CONTAINER FRAME
  46. &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Data-Source,Page-Target,Update-Source,Update-Target
  47. /* Name of designated FRAME-NAME and/or first browse and/or first query */
  48. &Scoped-define FRAME-NAME fMain
  49. &Scoped-define BROWSE-NAME Br_Felder
  50. /* Internal Tables (found by Frame, Query & Browse Queries) */
  51. &Scoped-define INTERNAL-TABLES ttFelder
  52. /* Definitions for BROWSE Br_Felder */
  53. &Scoped-define FIELDS-IN-QUERY-Br_Felder cName cType cFormat cView-as
  54. &Scoped-define ENABLED-FIELDS-IN-QUERY-Br_Felder
  55. &Scoped-define SELF-NAME Br_Felder
  56. &Scoped-define QUERY-STRING-Br_Felder FOR EACH ttFelder
  57. &Scoped-define OPEN-QUERY-Br_Felder OPEN QUERY hQuery FOR EACH ttFelder.
  58. &Scoped-define TABLES-IN-QUERY-Br_Felder ttFelder
  59. &Scoped-define FIRST-TABLE-IN-QUERY-Br_Felder ttFelder
  60. /* Definitions for FRAME fMain */
  61. &Scoped-define OPEN-BROWSERS-IN-QUERY-fMain ~
  62. ~{&OPEN-QUERY-Br_Felder}
  63. /* Standard List Definitions */
  64. &Scoped-Define ENABLED-OBJECTS RECT-7 Br_Felder
  65. /* Custom List Definitions */
  66. /* List-1,List-2,List-3,List-4,List-5,List-6 */
  67. /* _UIB-PREPROCESSOR-BLOCK-END */
  68. &ANALYZE-RESUME
  69. /* *********************** Control Definitions ********************** */
  70. /* Definitions of the field level widgets */
  71. DEFINE RECTANGLE RECT-7
  72. EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL
  73. SIZE 76 BY 13.33.
  74. /* Query definitions */
  75. &ANALYZE-SUSPEND
  76. DEFINE QUERY Br_Felder FOR
  77. ttFelder SCROLLING.
  78. &ANALYZE-RESUME
  79. /* Browse definitions */
  80. DEFINE BROWSE Br_Felder
  81. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS Br_Felder fFrameWin _FREEFORM
  82. QUERY Br_Felder DISPLAY
  83. cName FORMAT "x(20)" LABEL 'Name'
  84. cType FORMAT "x(12)" LABEL 'Typ'
  85. cFormat FORMAT "x(12)" LABEL 'FORMAT'
  86. cView-as FORMAT "x(20)" LABEL 'VIEW AS'
  87. /* _UIB-CODE-BLOCK-END */
  88. &ANALYZE-RESUME
  89. WITH NO-ROW-MARKERS SEPARATORS SIZE 74 BY 12.86.
  90. /* ************************ Frame Definitions *********************** */
  91. DEFINE FRAME fMain
  92. Br_Felder AT ROW 1.48 COL 3 WIDGET-ID 200
  93. RECT-7 AT ROW 1.24 COL 2 WIDGET-ID 2
  94. WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY
  95. SIDE-LABELS NO-UNDERLINE THREE-D
  96. AT COL 1 ROW 1
  97. SIZE 78 BY 13.81 WIDGET-ID 100.
  98. /* *********************** Procedure Settings ************************ */
  99. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  100. /* Settings for THIS-PROCEDURE
  101. Type: SmartFrame
  102. Allow: Basic,Browse,DB-Fields,Query,Smart
  103. Container Links: Data-Target,Data-Source,Page-Target,Update-Source,Update-Target
  104. Other Settings: PERSISTENT-ONLY APPSERVER
  105. */
  106. /* This procedure should always be RUN PERSISTENT. Report the error, */
  107. /* then cleanup and return. */
  108. IF NOT THIS-PROCEDURE:PERSISTENT THEN
  109. DO:
  110. MESSAGE "{&FILE-NAME} should only be RUN PERSISTENT.":U
  111. VIEW-AS ALERT-BOX ERROR BUTTONS OK.
  112. RETURN.
  113. END.
  114. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  115. /* ************************* Create Window ************************** */
  116. &ANALYZE-SUSPEND _CREATE-WINDOW
  117. /* DESIGN Window definition (used by the UIB)
  118. CREATE WINDOW fFrameWin ASSIGN
  119. HEIGHT = 13.86
  120. WIDTH = 78.4.
  121. /* END WINDOW DEFINITION */
  122. */
  123. &ANALYZE-RESUME
  124. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB fFrameWin
  125. /* ************************* Included-Libraries *********************** */
  126. {src/adm2/containr.i}
  127. /* _UIB-CODE-BLOCK-END */
  128. &ANALYZE-RESUME
  129. /* *********** Runtime Attributes and AppBuilder Settings *********** */
  130. &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
  131. /* SETTINGS FOR WINDOW fFrameWin
  132. VISIBLE,,RUN-PERSISTENT */
  133. /* SETTINGS FOR FRAME fMain
  134. NOT-VISIBLE FRAME-NAME */
  135. /* BROWSE-TAB Br_Felder RECT-7 fMain */
  136. ASSIGN
  137. FRAME fMain:HIDDEN = TRUE.
  138. /* _RUN-TIME-ATTRIBUTES-END */
  139. &ANALYZE-RESUME
  140. /* Setting information for Queries and Browse Widgets fields */
  141. &ANALYZE-SUSPEND _QUERY-BLOCK BROWSE Br_Felder
  142. /* Query rebuild information for BROWSE Br_Felder
  143. _START_FREEFORM
  144. OPEN QUERY hQuery FOR EACH ttFelder
  145. _END_FREEFORM
  146. _Query is OPENED
  147. */ /* BROWSE Br_Felder */
  148. &ANALYZE-RESUME
  149. &ANALYZE-SUSPEND _QUERY-BLOCK FRAME fMain
  150. /* Query rebuild information for FRAME fMain
  151. _Options = ""
  152. _Query is NOT OPENED
  153. */ /* FRAME fMain */
  154. &ANALYZE-RESUME
  155. /* ************************ Control Triggers ************************ */
  156. &Scoped-define BROWSE-NAME Br_Felder
  157. &Scoped-define SELF-NAME Br_Felder
  158. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Br_Felder fFrameWin
  159. ON LEFT-MOUSE-DBLCLICK OF Br_Felder IN FRAME fMain
  160. DO:
  161. Br_Felder:FETCH-SELECTED-ROW(1).
  162. RUN ADD_FIELD ( ttFelder.cName ).
  163. Br_Felder:DELETE-SELECTED-ROW(1).
  164. END.
  165. /* _UIB-CODE-BLOCK-END */
  166. &ANALYZE-RESUME
  167. &UNDEFINE SELF-NAME
  168. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK fFrameWin
  169. /* *************************** Main Block *************************** */
  170. SUBSCRIBE 'ANZEIGE_FELDER' ANYWHERE RUN-PROCEDURE 'CREATE_BROWSER'.
  171. cFirma = DYNAMIC-FUNCTION('getMandant':U) NO-ERROR.
  172. &IF DEFINED(UIB_IS_RUNNING) <> 0 &THEN
  173. /* Now enable the interface if in test mode - otherwise this happens when
  174. the object is explicitly initialized from its container. */
  175. RUN initializeObject.
  176. &ENDIF
  177. /* _UIB-CODE-BLOCK-END */
  178. &ANALYZE-RESUME
  179. /* ********************** Internal Procedures *********************** */
  180. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ADD_FIELD fFrameWin
  181. PROCEDURE ADD_FIELD :
  182. /*------------------------------------------------------------------------------
  183. Purpose:
  184. Parameters: <none>
  185. Notes:
  186. ------------------------------------------------------------------------------*/
  187. DEFINE INPUT PARAMETER ipcFeld AS CHARACTER NO-UNDO.
  188. DEFINE VARIABLE iPrior AS INTEGER NO-UNDO.
  189. DEFINE BUFFER bttFelder FOR ttFelder.
  190. FOR EACH browser_ze NO-LOCK
  191. WHERE browser_ze.mandant = cFirma
  192. AND browser_ze.benutzer = cBenutzer
  193. AND browser_ze.program = cProgramm
  194. AND browser_ze.tabelle = cTabelle
  195. BY browser_ze.prior DESCENDING:
  196. iPrior = browser_ze.prior + 10.
  197. LEAVE.
  198. END.
  199. FIND FIRST bttFelder NO-LOCK WHERE bttFelder.cName = ipcFeld.
  200. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  201. CREATE browser_ze.
  202. ASSIGN
  203. browser_ze.mandant = cFirma
  204. browser_ze.benutzer = cBenutzer
  205. browser_ze.program = cProgramm
  206. browser_ze.tabelle = cTabelle
  207. browser_ze.feld = ipcFeld
  208. browser_ze.feldtype = bttFelder.cType
  209. browser_ze.prior = iPrior.
  210. RELEASE browser_ze.
  211. LEAVE.
  212. END.
  213. PUBLISH 'OPENQUERY_BROWSER_ZE'.
  214. END PROCEDURE.
  215. /* _UIB-CODE-BLOCK-END */
  216. &ANALYZE-RESUME
  217. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects fFrameWin _ADM-CREATE-OBJECTS
  218. PROCEDURE adm-create-objects :
  219. /*------------------------------------------------------------------------------
  220. Purpose: Create handles for all SmartObjects used in this procedure.
  221. After SmartObjects are initialized, then SmartLinks are added.
  222. Parameters: <none>
  223. ------------------------------------------------------------------------------*/
  224. END PROCEDURE.
  225. /* _UIB-CODE-BLOCK-END */
  226. &ANALYZE-RESUME
  227. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE CREATE_BROWSER fFrameWin
  228. PROCEDURE CREATE_BROWSER :
  229. /*------------------------------------------------------------------------------
  230. Purpose:
  231. Parameters: <none>
  232. Notes:
  233. ------------------------------------------------------------------------------*/
  234. DEFINE INPUT PARAMETER ipcBenutzer AS CHARACTER NO-UNDO.
  235. DEFINE INPUT PARAMETER ipcProgramm AS CHARACTER NO-UNDO.
  236. DEFINE INPUT PARAMETER ipcTabelle AS CHARACTER NO-UNDO.
  237. cBenutzer = ipcBenutzer.
  238. cProgramm = ipcProgramm.
  239. cTabelle = ipcTabelle .
  240. DEFINE VARIABLE httTabelle AS HANDLE NO-UNDO.
  241. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  242. DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO.
  243. DEFINE BUFFER bbrowser_ze FOR browser_ze.
  244. EMPTY TEMP-TABLE ttFelder.
  245. CREATE BUFFER httTabelle FOR TABLE ipcTabelle.
  246. DO ii = 1 TO httTabelle:NUM-FIELDS:
  247. cFeld = httTabelle:BUFFER-FIELD(ii):NAME.
  248. FIND FIRST bbrowser_ze NO-LOCK
  249. WHERE bbrowser_ze.mandant = cFirma
  250. AND bbrowser_ze.tabelle = ipctabelle
  251. AND bbrowser_ze.feld = cFeld NO-ERROR.
  252. IF AVAILABLE bbrowser_ze THEN NEXT.
  253. CREATE ttFelder.
  254. ASSIGN
  255. ttFelder.cName = httTabelle:BUFFER-FIELD(ii):NAME
  256. ttFelder.cType = httTabelle:BUFFER-FIELD(ii):DATA-TYPE
  257. ttFelder.cFormat = httTabelle:BUFFER-FIELD(ii):FORMAT
  258. ttFelder.cView-As = httTabelle:BUFFER-FIELD(ii):VIEW-AS.
  259. END.
  260. DELETE OBJECT httTabelle NO-ERROR.
  261. DO WITH FRAME {&FRAME-NAME}:
  262. hQuery:QUERY-OPEN().
  263. END.
  264. END PROCEDURE.
  265. /* _UIB-CODE-BLOCK-END */
  266. &ANALYZE-RESUME
  267. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI fFrameWin _DEFAULT-DISABLE
  268. PROCEDURE disable_UI :
  269. /*------------------------------------------------------------------------------
  270. Purpose: DISABLE the User Interface
  271. Parameters: <none>
  272. Notes: Here we clean-up the user-interface by deleting
  273. dynamic widgets we have created and/or hide
  274. frames. This procedure is usually called when
  275. we are ready to "clean-up" after running.
  276. ------------------------------------------------------------------------------*/
  277. /* Hide all frames. */
  278. HIDE FRAME fMain.
  279. IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
  280. END PROCEDURE.
  281. /* _UIB-CODE-BLOCK-END */
  282. &ANALYZE-RESUME
  283. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject fFrameWin
  284. PROCEDURE enableObject :
  285. /*------------------------------------------------------------------------------
  286. Purpose: Super Override
  287. Parameters:
  288. Notes:
  289. ------------------------------------------------------------------------------*/
  290. DO WITH FRAME {&FRAME-NAME}:
  291. hQuery = Br_Felder:QUERY.
  292. hQuery:QUERY-PREPARE('FOR EACH ttFelder NO-LOCK').
  293. END.
  294. RUN SUPER.
  295. /* Code placed here will execute AFTER standard behavior. */
  296. END PROCEDURE.
  297. /* _UIB-CODE-BLOCK-END */
  298. &ANALYZE-RESUME
  299. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI fFrameWin _DEFAULT-ENABLE
  300. PROCEDURE enable_UI :
  301. /*------------------------------------------------------------------------------
  302. Purpose: ENABLE the User Interface
  303. Parameters: <none>
  304. Notes: Here we display/view/enable the widgets in the
  305. user-interface. In addition, OPEN all queries
  306. associated with each FRAME and BROWSE.
  307. These statements here are based on the "Other
  308. Settings" section of the widget Property Sheets.
  309. ------------------------------------------------------------------------------*/
  310. ENABLE RECT-7 Br_Felder
  311. WITH FRAME fMain.
  312. {&OPEN-BROWSERS-IN-QUERY-fMain}
  313. END PROCEDURE.
  314. /* _UIB-CODE-BLOCK-END */
  315. &ANALYZE-RESUME