f-feldviewer.w 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576
  1. &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2
  2. &ANALYZE-RESUME
  3. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DECLARATIONS Procedure
  4. USING System.Runtime.InteropServices._FieldBuilder FROM ASSEMBLY.
  5. &ANALYZE-RESUME
  6. /* Connected Databases
  7. */
  8. &Scoped-define WINDOW-NAME CURRENT-WINDOW
  9. {adecomm/appserv.i}
  10. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS fFrameWin
  11. /*------------------------------------------------------------------------
  12. File:
  13. Description: from cntnrfrm.w - ADM2 SmartFrame Template
  14. Input Parameters:
  15. <none>
  16. Output Parameters:
  17. <none>
  18. ------------------------------------------------------------------------*/
  19. /* This .W file was created with the Progress AppBuilder. */
  20. /*----------------------------------------------------------------------*/
  21. /* Create an unnamed pool to store all the widgets created
  22. by this procedure. This is a good default which assures
  23. that this procedure's triggers and internal procedures
  24. will execute in this procedure's storage, and that proper
  25. cleanup will occur on deletion of the procedure. */
  26. CREATE WIDGET-POOL.
  27. /* *************************** Definitions ************************** */
  28. /* Parameters Definitions --- */
  29. /* Local Variable Definitions --- */
  30. {src/adm2/widgetprto.i}
  31. DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.
  32. DEFINE VARIABLE cFirma AS CHARACTER NO-UNDO.
  33. DEFINE VARIABLE cBenutzer AS CHARACTER NO-UNDO.
  34. DEFINE VARIABLE cProgramm AS CHARACTER NO-UNDO.
  35. DEFINE VARIABLE cTabelle AS CHARACTER NO-UNDO.
  36. DEFINE VARIABLE cView-as-Feld AS CHARACTER NO-UNDO.
  37. DEFINE VARIABLE cView-inhalt AS CHARACTER NO-UNDO.
  38. DEFINE VARIABLE cComboArt AS CHARACTER NO-UNDO.
  39. DEFINE VARIABLE cComboWert AS CHARACTER NO-UNDO EXTENT.
  40. DEFINE VARIABLE cComboText AS CHARACTER NO-UNDO EXTENT.
  41. DEFINE TEMP-TABLE ttFelder NO-UNDO
  42. FIELD cFileName AS CHARACTER
  43. FIELD cName AS CHARACTER
  44. FIELD cType AS CHARACTER
  45. FIELD cFormat AS CHARACTER
  46. FIELD cView-As AS CHARACTER
  47. FIELD cView-Wert AS CHARACTER
  48. FIELD cView-Text AS CHARACTER
  49. .
  50. DEFINE TEMP-TABLE tviewer_ze LIKE viewer_ze.
  51. DEFINE VARIABLE htviewer AS HANDLE NO-UNDO.
  52. htviewer = TEMP-TABLE tviewer_ze:DEFAULT-BUFFER-HANDLE.
  53. /* _UIB-CODE-BLOCK-END */
  54. &ANALYZE-RESUME
  55. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  56. /* ******************** Preprocessor Definitions ******************** */
  57. &Scoped-define PROCEDURE-TYPE SmartFrame
  58. &Scoped-define DB-AWARE no
  59. &Scoped-define ADM-CONTAINER FRAME
  60. &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Data-Source,Page-Target,Update-Source,Update-Target
  61. /* Name of designated FRAME-NAME and/or first browse and/or first query */
  62. &Scoped-define FRAME-NAME fMain
  63. &Scoped-define BROWSE-NAME Br_Felder
  64. /* Internal Tables (found by Frame, Query & Browse Queries) */
  65. &Scoped-define INTERNAL-TABLES ttFelder
  66. /* Definitions for BROWSE Br_Felder */
  67. &Scoped-define FIELDS-IN-QUERY-Br_Felder cName cType cFormat cView-as
  68. &Scoped-define ENABLED-FIELDS-IN-QUERY-Br_Felder
  69. &Scoped-define SELF-NAME Br_Felder
  70. &Scoped-define QUERY-STRING-Br_Felder FOR EACH ttFelder
  71. &Scoped-define OPEN-QUERY-Br_Felder OPEN QUERY hQuery FOR EACH ttFelder.
  72. &Scoped-define TABLES-IN-QUERY-Br_Felder ttFelder
  73. &Scoped-define FIRST-TABLE-IN-QUERY-Br_Felder ttFelder
  74. /* Definitions for FRAME fMain */
  75. &Scoped-define OPEN-BROWSERS-IN-QUERY-fMain ~
  76. ~{&OPEN-QUERY-Br_Felder}
  77. /* Standard List Definitions */
  78. &Scoped-Define ENABLED-OBJECTS RECT-7 Br_Felder
  79. /* Custom List Definitions */
  80. /* List-1,List-2,List-3,List-4,List-5,List-6 */
  81. /* _UIB-PREPROCESSOR-BLOCK-END */
  82. &ANALYZE-RESUME
  83. /* ************************ Function Prototypes ********************** */
  84. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD createSelectionlist fFrameWin
  85. FUNCTION createSelectionlist RETURNS LOGICAL
  86. ( ipcView-as AS CHARACTER ) FORWARD.
  87. /* _UIB-CODE-BLOCK-END */
  88. &ANALYZE-RESUME
  89. /* *********************** Control Definitions ********************** */
  90. /* Definitions of the field level widgets */
  91. DEFINE RECTANGLE RECT-7
  92. EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL
  93. SIZE 76 BY 13.33.
  94. /* Query definitions */
  95. &ANALYZE-SUSPEND
  96. DEFINE QUERY Br_Felder FOR
  97. ttFelder SCROLLING.
  98. &ANALYZE-RESUME
  99. /* Browse definitions */
  100. DEFINE BROWSE Br_Felder
  101. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS Br_Felder fFrameWin _FREEFORM
  102. QUERY Br_Felder DISPLAY
  103. cName FORMAT "x(20)" LABEL 'Name'
  104. cType FORMAT "x(12)" LABEL 'Typ'
  105. cFormat FORMAT "x(12)" LABEL 'FORMAT'
  106. cView-as FORMAT "x(20)" LABEL 'VIEW AS'
  107. /* _UIB-CODE-BLOCK-END */
  108. &ANALYZE-RESUME
  109. WITH NO-ROW-MARKERS SEPARATORS SIZE 74 BY 12.86.
  110. /* ************************ Frame Definitions *********************** */
  111. DEFINE FRAME fMain
  112. Br_Felder AT ROW 1.48 COL 3 WIDGET-ID 200
  113. RECT-7 AT ROW 1.24 COL 2 WIDGET-ID 2
  114. WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY
  115. SIDE-LABELS NO-UNDERLINE THREE-D
  116. AT COL 1 ROW 1
  117. SIZE 78 BY 13.81 WIDGET-ID 100.
  118. /* *********************** Procedure Settings ************************ */
  119. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  120. /* Settings for THIS-PROCEDURE
  121. Type: SmartFrame
  122. Allow: Basic,Browse,DB-Fields,Query,Smart
  123. Container Links: Data-Target,Data-Source,Page-Target,Update-Source,Update-Target
  124. Other Settings: PERSISTENT-ONLY APPSERVER
  125. */
  126. /* This procedure should always be RUN PERSISTENT. Report the error, */
  127. /* then cleanup and return. */
  128. IF NOT THIS-PROCEDURE:PERSISTENT THEN
  129. DO:
  130. MESSAGE "{&FILE-NAME} should only be RUN PERSISTENT.":U
  131. VIEW-AS ALERT-BOX ERROR BUTTONS OK.
  132. RETURN.
  133. END.
  134. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  135. /* ************************* Create Window ************************** */
  136. &ANALYZE-SUSPEND _CREATE-WINDOW
  137. /* DESIGN Window definition (used by the UIB)
  138. CREATE WINDOW fFrameWin ASSIGN
  139. HEIGHT = 13.86
  140. WIDTH = 78.4.
  141. /* END WINDOW DEFINITION */
  142. */
  143. &ANALYZE-RESUME
  144. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB fFrameWin
  145. /* ************************* Included-Libraries *********************** */
  146. {src/adm2/containr.i}
  147. /* _UIB-CODE-BLOCK-END */
  148. &ANALYZE-RESUME
  149. /* *********** Runtime Attributes and AppBuilder Settings *********** */
  150. &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
  151. /* SETTINGS FOR WINDOW fFrameWin
  152. VISIBLE,,RUN-PERSISTENT */
  153. /* SETTINGS FOR FRAME fMain
  154. NOT-VISIBLE FRAME-NAME */
  155. /* BROWSE-TAB Br_Felder RECT-7 fMain */
  156. ASSIGN
  157. FRAME fMain:HIDDEN = TRUE.
  158. /* _RUN-TIME-ATTRIBUTES-END */
  159. &ANALYZE-RESUME
  160. /* Setting information for Queries and Browse Widgets fields */
  161. &ANALYZE-SUSPEND _QUERY-BLOCK BROWSE Br_Felder
  162. /* Query rebuild information for BROWSE Br_Felder
  163. _START_FREEFORM
  164. OPEN QUERY hQuery FOR EACH ttFelder
  165. _END_FREEFORM
  166. _Query is OPENED
  167. */ /* BROWSE Br_Felder */
  168. &ANALYZE-RESUME
  169. &ANALYZE-SUSPEND _QUERY-BLOCK FRAME fMain
  170. /* Query rebuild information for FRAME fMain
  171. _Options = ""
  172. _Query is NOT OPENED
  173. */ /* FRAME fMain */
  174. &ANALYZE-RESUME
  175. /* ************************ Control Triggers ************************ */
  176. &Scoped-define BROWSE-NAME Br_Felder
  177. &Scoped-define SELF-NAME Br_Felder
  178. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Br_Felder fFrameWin
  179. ON LEFT-MOUSE-DBLCLICK OF Br_Felder IN FRAME fMain
  180. DO:
  181. Br_Felder:FETCH-SELECTED-ROW(1).
  182. RUN ADD_FIELD ( ttFelder.cName ).
  183. Br_Felder:DELETE-SELECTED-ROW(1).
  184. END.
  185. /* _UIB-CODE-BLOCK-END */
  186. &ANALYZE-RESUME
  187. &UNDEFINE SELF-NAME
  188. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK fFrameWin
  189. /* *************************** Main Block *************************** */
  190. SUBSCRIBE 'ANZEIGE_FELDER' ANYWHERE RUN-PROCEDURE 'CREATE_BROWSER'.
  191. cFirma = DYNAMIC-FUNCTION('getMandant':U) NO-ERROR.
  192. &IF DEFINED(UIB_IS_RUNNING) <> 0 &THEN
  193. /* Now enable the interface if in test mode - otherwise this happens when
  194. the object is explicitly initialized from its container. */
  195. RUN initializeObject.
  196. &ENDIF
  197. /* _UIB-CODE-BLOCK-END */
  198. &ANALYZE-RESUME
  199. /* ********************** Internal Procedures *********************** */
  200. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ADD_FIELD fFrameWin
  201. PROCEDURE ADD_FIELD :
  202. /*------------------------------------------------------------------------------*/
  203. /* Purpose: Super Override */
  204. /* Parameters: */
  205. /* Notes: */
  206. /*------------------------------------------------------------------------------*/
  207. DEFINE INPUT PARAMETER ipcFeld AS CHARACTER NO-UNDO.
  208. DEFINE VARIABLE iPrior AS INTEGER NO-UNDO.
  209. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  210. DEFINE VARIABLE cType AS CHARACTER NO-UNDO.
  211. DEFINE VARIABLE cRowid AS CHARACTER NO-UNDO.
  212. DEFINE BUFFER bttFelder FOR ttFelder.
  213. FIND FIRST bttFelder NO-LOCK WHERE bttFelder.cName = ipcFeld.
  214. FIND AnaDat._File NO-LOCK
  215. WHERE AnaDat._File._File-Name = cTabelle.
  216. FIND AnaDat._Field NO-LOCK OF AnaDat._File
  217. WHERE AnaDat._Field._Field-name = ipcFeld.
  218. EMPTY TEMP-TABLE tviewer_ze.
  219. CREATE tviewer_ze.
  220. ASSIGN
  221. tviewer_ze.mandant = cFirma
  222. tviewer_ze.benutzer = cBenutzer
  223. tviewer_ze.program = cProgramm
  224. tviewer_ze.tabelle = cTabelle
  225. tviewer_ze.feld = ipcFeld.
  226. RUN ADD_VIEWER_FIELD ( INPUT-OUTPUT htviewer ).
  227. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  228. FIND FIRST tviewer_ze.
  229. CREATE viewer_ze.
  230. BUFFER-COPY tviewer_ze TO viewer_ze.
  231. cRowid = STRING(ROWID(viewer_ze)).
  232. RELEASE viewer_ze.
  233. LEAVE.
  234. END.
  235. PUBLISH 'OPENQUERY_viewer_ze' (INPUT cRowid).
  236. END PROCEDURE.
  237. /* _UIB-CODE-BLOCK-END */
  238. &ANALYZE-RESUME
  239. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects fFrameWin _ADM-CREATE-OBJECTS
  240. PROCEDURE adm-create-objects :
  241. /*------------------------------------------------------------------------------
  242. Purpose: Create handles for all SmartObjects used in this procedure.
  243. After SmartObjects are initialized, then SmartLinks are added.
  244. Parameters: <none>
  245. ------------------------------------------------------------------------------*/
  246. END PROCEDURE.
  247. /* _UIB-CODE-BLOCK-END */
  248. &ANALYZE-RESUME
  249. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE CREATE_BROWSER fFrameWin
  250. PROCEDURE CREATE_BROWSER :
  251. /*------------------------------------------------------------------------------
  252. Purpose:
  253. Parameters: <none>
  254. Notes:
  255. ------------------------------------------------------------------------------*/
  256. DEFINE INPUT PARAMETER ipcBenutzer AS CHARACTER NO-UNDO.
  257. DEFINE INPUT PARAMETER ipcProgramm AS CHARACTER NO-UNDO.
  258. DEFINE INPUT PARAMETER ipcTabelle AS CHARACTER NO-UNDO.
  259. cBenutzer = ipcBenutzer.
  260. cProgramm = ipcProgramm.
  261. cTabelle = ipcTabelle .
  262. DEFINE VARIABLE httTabelle AS HANDLE NO-UNDO.
  263. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  264. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  265. DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO.
  266. DEFINE VARIABLE hFeld AS HANDLE NO-UNDO.
  267. DEFINE VARIABLE cView-as AS CHARACTER NO-UNDO.
  268. DEFINE BUFFER bviewer_ze FOR viewer_ze.
  269. FIND AnaDat._File NO-LOCK
  270. WHERE AnaDat._File._File-Name = cTabelle.
  271. EMPTY TEMP-TABLE ttFelder.
  272. CREATE BUFFER httTabelle FOR TABLE cTabelle.
  273. DO ii = 1 TO httTabelle:NUM-FIELDS:
  274. cFeld = httTabelle:BUFFER-FIELD(ii):NAME.
  275. FIND FIRST bviewer_ze NO-LOCK
  276. WHERE bviewer_ze.mandant = cFirma
  277. AND bviewer_ze.Benutzer = ipcBenutzer
  278. AND bviewer_ze.Program = ipcProgramm
  279. AND bviewer_ze.tabelle = ipctabelle
  280. AND bviewer_ze.feld = cFeld NO-ERROR.
  281. IF AVAILABLE bviewer_ze THEN NEXT.
  282. hFeld = httTabelle:BUFFER-FIELD(cFeld) NO-ERROR.
  283. FIND AnaDat._Field OF AnaDat._File
  284. WHERE AnaDat._Field._Field-name = cFeld.
  285. cView-As = AnaDat._Field._View-as.
  286. IF cView-as = ? THEN hFeld:VIEW-AS.
  287. IF INDEX(cView-as, 'COMBO-BOX') > 0 THEN
  288. DO:
  289. DYNAMIC-FUNCTION ('createSelectionList':U, cView-as).
  290. cView-as = 'COMBO-BOX'.
  291. END.
  292. CREATE ttFelder.
  293. ASSIGN
  294. ttFelder.cName = _Field._Field-Name
  295. ttFelder.cType = _Field._DATA-TYPE
  296. ttFelder.cFormat = _Field._Format
  297. ttFelder.cView-As = cView-as
  298. .
  299. CASE ttFelder.cView-As:
  300. WHEN 'COMBO-BOX' THEN
  301. DO:
  302. DO i1 = 1 TO EXTENT(cComboWert):
  303. ttFelder.cView-Wert = ttFelder.cView-Wert
  304. + (IF ttFelder.cView-Wert = '' THEN '' ELSE ';')
  305. + cComboWert[i1].
  306. ttFelder.cView-Text = ttFelder.cView-Text
  307. + (IF ttFelder.cView-Text = '' THEN '' ELSE ';')
  308. + cComboText[i1].
  309. END.
  310. END.
  311. END CASE.
  312. END.
  313. DELETE OBJECT httTabelle NO-ERROR.
  314. DO WITH FRAME {&FRAME-NAME}:
  315. hQuery:QUERY-OPEN().
  316. END.
  317. END PROCEDURE.
  318. /* _UIB-CODE-BLOCK-END */
  319. &ANALYZE-RESUME
  320. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI fFrameWin _DEFAULT-DISABLE
  321. PROCEDURE disable_UI :
  322. /*------------------------------------------------------------------------------
  323. Purpose: DISABLE the User Interface
  324. Parameters: <none>
  325. Notes: Here we clean-up the user-interface by deleting
  326. dynamic widgets we have created and/or hide
  327. frames. This procedure is usually called when
  328. we are ready to "clean-up" after running.
  329. ------------------------------------------------------------------------------*/
  330. /* Hide all frames. */
  331. HIDE FRAME fMain.
  332. IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
  333. END PROCEDURE.
  334. /* _UIB-CODE-BLOCK-END */
  335. &ANALYZE-RESUME
  336. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject fFrameWin
  337. PROCEDURE enableObject :
  338. /*------------------------------------------------------------------------------
  339. Purpose: Super Override
  340. Parameters:
  341. Notes:
  342. ------------------------------------------------------------------------------*/
  343. DO WITH FRAME {&FRAME-NAME}:
  344. hQuery = Br_Felder:QUERY.
  345. hQuery:QUERY-PREPARE('FOR EACH ttFelder NO-LOCK').
  346. END.
  347. RUN SUPER.
  348. /* Code placed here will execute AFTER standard behavior. */
  349. END PROCEDURE.
  350. /* _UIB-CODE-BLOCK-END */
  351. &ANALYZE-RESUME
  352. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI fFrameWin _DEFAULT-ENABLE
  353. PROCEDURE enable_UI :
  354. /*------------------------------------------------------------------------------
  355. Purpose: ENABLE the User Interface
  356. Parameters: <none>
  357. Notes: Here we display/view/enable the widgets in the
  358. user-interface. In addition, OPEN all queries
  359. associated with each FRAME and BROWSE.
  360. These statements here are based on the "Other
  361. Settings" section of the widget Property Sheets.
  362. ------------------------------------------------------------------------------*/
  363. ENABLE RECT-7 Br_Felder
  364. WITH FRAME fMain.
  365. {&OPEN-BROWSERS-IN-QUERY-fMain}
  366. END PROCEDURE.
  367. /* _UIB-CODE-BLOCK-END */
  368. &ANALYZE-RESUME
  369. /* ************************ Function Implementations ***************** */
  370. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION createSelectionlist fFrameWin
  371. FUNCTION createSelectionlist RETURNS LOGICAL
  372. ( ipcView-as AS CHARACTER ):
  373. /*------------------------------------------------------------------------------
  374. Purpose:
  375. Notes:
  376. ------------------------------------------------------------------------------*/
  377. DEFINE VARIABLE cViewas AS CHARACTER NO-UNDO.
  378. DEFINE VARIABLE cItemList AS CHARACTER NO-UNDO.
  379. DEFINE VARIABLE lPairs AS LOGICAL NO-UNDO INIT FALSE.
  380. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  381. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  382. DEFINE VARIABLE i2 AS INTEGER NO-UNDO.
  383. cViewas = TRIM(REPLACE(ipcView-as, 'VIEW-AS' , '')).
  384. cViewas = TRIM(REPLACE(cViewas , 'COMBO-BOX', '')).
  385. ii = INDEX(cViewas, 'SIZE').
  386. IF ii > 0 THEN cViewas = TRIM(SUBSTRING(cViewas,01,ii - 1)).
  387. IF INDEX(cViewas, 'LIST-ITEM-PAIRS') > 0 THEN
  388. DO:
  389. lPairs = TRUE.
  390. cItemList = TRIM(REPLACE(cviewas, 'LIST-ITEM-PAIRS', '')).
  391. END.
  392. ELSE
  393. DO:
  394. lPairs = FALSE.
  395. cItemList = TRIM(REPLACE(cviewas, 'LIST-ITEMS' , '')).
  396. END.
  397. DO WHILE SUBSTRING(cItemList, 01, 01) < CHR(32):
  398. cItemList = SUBSTRING(cItemList,02).
  399. END.
  400. DO WHILE TRUE:
  401. ii = LENGTH(cItemList).
  402. IF SUBSTRING(cItemList,ii) > CHR(32) THEN LEAVE.
  403. cItemList = SUBSTRING(cItemList,ii - 1).
  404. END.
  405. cItemList = REPLACE(cItemList, ',' , ';').
  406. cItemList = REPLACE(cItemList, CHR(10), ';').
  407. i1 = NUM-ENTRIES(cItemList, ';').
  408. EXTENT(cComboText) = ?.
  409. EXTENT(cComboWert) = ?.
  410. i2 = 0.
  411. IF lPairs THEN
  412. DO:
  413. ii = i1 / 2.
  414. EXTENT(cComboWert) = ii.
  415. EXTENT(cComboText) = ii.
  416. DO ii = 1 TO i1 BY 2:
  417. i2 = i2 + 1.
  418. cComboText[i2] = REPLACE(REPLACE(ENTRY(ii , cItemList, ';'), '"', ''), "'", '').
  419. cComboWert[i2] = REPLACE(REPLACE(ENTRY(ii + 1, cItemList, ';'), '"', ''), "'", '').
  420. END.
  421. END.
  422. ELSE
  423. DO:
  424. EXTENT(cComboWert) = i1.
  425. EXTENT(cComboText) = i1.
  426. DO ii = 1 TO i1 BY 1:
  427. i2 = i2 + 1.
  428. cComboText[i2] = REPLACE(REPLACE(ENTRY(ii, cItemList, ';'), '"', ''), "'", '').
  429. cComboWert[i2] = REPLACE(REPLACE(ENTRY(ii, cItemList, ';'), '"', ''), "'", '').
  430. END.
  431. END.
  432. RETURN TRUE.
  433. END FUNCTION.
  434. /* _UIB-CODE-BLOCK-END */
  435. &ANALYZE-RESUME