-
Notifications
You must be signed in to change notification settings - Fork 24
/
wDataDigger.w
12702 lines (9976 loc) · 411 KB
/
wDataDigger.w
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
&ANALYZE-SUSPEND _VERSION-NUMBER UIB_v9r12 GUI
&ANALYZE-RESUME
/* Connected Databases
*/
&Scoped-define WINDOW-NAME wDataDigger
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS wDataDigger
/*
* Main program for DataDigger
*/
/* Parameter tells if we are in read-only mode */
&IF "{&uib_is_running}" = "" &THEN
DEFINE INPUT PARAMETER plReadOnlyDigger AS LOGICAL NO-UNDO.
&ELSE
DEFINE VARIABLE plReadOnlyDigger AS LOGICAL INITIAL FALSE NO-UNDO.
&ENDIF
CREATE WIDGET-POOL.
/* *************************** Definitions ************************** */
/* Buildnr, temp-tables and forward defs */
{ DataDigger.i }
{ resizable_dict.i } /* thanks to Sebastien Lacroix */
/* Constants for page numbers */
&GLOBAL-DEFINE PAGE-TABLES 1
&GLOBAL-DEFINE PAGE-FAVOURITES 2
&GLOBAL-DEFINE PAGE-FIELDS 3
&GLOBAL-DEFINE PAGE-INDEXES 4
/* Constants for arrows in hint frame */
&GLOBAL-DEFINE ARROW-NONE 0
&GLOBAL-DEFINE ARROW-LEFT-UP 1
&GLOBAL-DEFINE ARROW-RIGHT-UP 2
&GLOBAL-DEFINE ARROW-RIGHT-DOWN 3
&GLOBAL-DEFINE ARROW-LEFT-DOWN 4
/* TT for the generic timer OCX */
DEFINE TEMP-TABLE ttTimer NO-UNDO
FIELD cProc AS CHARACTER
FIELD iTime AS INTEGER
FIELD tNext AS DATETIME
INDEX idxNext IS PRIMARY tNext
INDEX idxProc cProc.
/* TT for showing record in a new window */
DEFINE TEMP-TABLE ttView NO-UNDO
FIELD iHor AS INTEGER
FIELD iVer AS INTEGER
FIELD cValue AS CHARACTER FORMAT 'x(20)'
.
/* TT to save widths of columns for ttView */
DEFINE TEMP-TABLE ttColumnWidth NO-UNDO
FIELD iHor AS INTEGER
FIELD iWidth AS INTEGER
.
/* TT for fonts, used in checkFonts */
DEFINE TEMP-TABLE ttFont NO-UNDO
FIELD iFontNr AS INTEGER
FIELD cFontName AS CHARACTER
.
/* TT for sorting combo box */
DEFINE TEMP-TABLE ttItem NO-UNDO
FIELD cItem AS CHARACTER
INDEX iPrim IS PRIMARY cItem
.
DEFINE TEMP-TABLE ttColumnHandle NO-UNDO
FIELD hBrowse AS HANDLE
FIELD hColumn AS HANDLE
FIELD cColumn AS CHARACTER
INDEX iPrim IS PRIMARY hBrowse
.
/* Local Variable Definitions --- */
DEFINE VARIABLE gcDataBrowseColumnNames AS CHARACTER NO-UNDO.
DEFINE VARIABLE gcDataBrowseColumns AS CHARACTER NO-UNDO.
DEFINE VARIABLE gcDatabase AS CHARACTER NO-UNDO.
DEFINE VARIABLE gcFavouriteTables AS CHARACTER NO-UNDO.
DEFINE VARIABLE gcFieldFilterHandles AS CHARACTER NO-UNDO. /* To save Handles to the filter widgets */
DEFINE VARIABLE gcFieldFilterList AS CHARACTER NO-UNDO.
DEFINE VARIABLE gcPreviousValues AS CHARACTER NO-UNDO. /* used in DataRowDisplay for row coloring */
DEFINE VARIABLE gcRecordMode AS CHARACTER NO-UNDO.
DEFINE VARIABLE gcTable AS CHARACTER NO-UNDO.
DEFINE VARIABLE ghDataBrowse AS HANDLE NO-UNDO.
DEFINE VARIABLE ghDataBuffer AS HANDLE NO-UNDO.
DEFINE VARIABLE ghDataQuery AS HANDLE NO-UNDO.
DEFINE VARIABLE ghFieldBrowse AS HANDLE NO-UNDO.
DEFINE VARIABLE ghFieldMenu AS HANDLE NO-UNDO. /* Popup menu on brFields */
DEFINE VARIABLE ghLastFilterField AS HANDLE NO-UNDO.
DEFINE VARIABLE ghLastIndexFilter AS HANDLE NO-UNDO.
DEFINE VARIABLE ghLockTable AS HANDLE NO-UNDO.
DEFINE VARIABLE ghTableBuffer AS HANDLE NO-UNDO.
DEFINE VARIABLE ghTableQuery AS HANDLE NO-UNDO.
DEFINE VARIABLE giCurrentPage AS INTEGER NO-UNDO. /* 1=fields 2=indexes */
DEFINE VARIABLE giDataEvenRowColor AS INTEGER NO-UNDO EXTENT 2.
DEFINE VARIABLE giDataOddRowColor AS INTEGER NO-UNDO EXTENT 2.
DEFINE VARIABLE giDefaultFont AS INTEGER NO-UNDO.
DEFINE VARIABLE giFixedFont AS INTEGER NO-UNDO.
DEFINE VARIABLE giLastDataColumnX AS INTEGER NO-UNDO.
DEFINE VARIABLE giMaxColumns AS INTEGER NO-UNDO.
DEFINE VARIABLE giMaxExtent AS INTEGER NO-UNDO.
DEFINE VARIABLE giMaxFilterHistory AS INTEGER NO-UNDO.
DEFINE VARIABLE giMaxQueryTime AS INTEGER NO-UNDO.
DEFINE VARIABLE giQueryPointer AS INTEGER NO-UNDO.
DEFINE VARIABLE glDebugMode AS LOGICAL NO-UNDO.
DEFINE VARIABLE glFormatChanged AS LOGICAL NO-UNDO. /* When user changes a format */
DEFINE VARIABLE glHintCancelled AS LOGICAL NO-UNDO. /* When user presses ESC during hint */
DEFINE VARIABLE glInitializing AS LOGICAL NO-UNDO. /* to indicate init is running */
DEFINE VARIABLE glReadOnlyDigger AS LOGICAL NO-UNDO. /* org value of plReadOnlyDigger */
DEFINE VARIABLE glRowEditActive AS LOGICAL NO-UNDO.
DEFINE VARIABLE glShowFavourites AS LOGICAL NO-UNDO. /* show table list of Favourite tables */
DEFINE VARIABLE glShowTour AS LOGICAL NO-UNDO. /* to override 'ShowHints=no' setting */
DEFINE VARIABLE glUseEvenRowColorSet AS LOGICAL NO-UNDO. /* used in DataRowDisplay for row coloring */
DEFINE VARIABLE glUseTimer AS LOGICAL NO-UNDO. /* use PSTimer? */
/* Vars to keep the values for the colors */
DEFINE VARIABLE giColorFieldFilterFG AS INTEGER NO-UNDO.
DEFINE VARIABLE giColorFieldFilterBG AS INTEGER NO-UNDO.
DEFINE VARIABLE giColorPrimIndexFG AS INTEGER NO-UNDO.
DEFINE VARIABLE giColorPrimIndexBG AS INTEGER NO-UNDO.
DEFINE VARIABLE giColorCustomFormatFG AS INTEGER NO-UNDO.
DEFINE VARIABLE giColorCustomFormatBG AS INTEGER NO-UNDO.
DEFINE VARIABLE giColorCustomOrderFG AS INTEGER NO-UNDO.
DEFINE VARIABLE giColorCustomOrderBG AS INTEGER NO-UNDO.
DEFINE VARIABLE giColorIndexInactivFG AS INTEGER NO-UNDO.
DEFINE VARIABLE giColorIndexInactiveBG AS INTEGER NO-UNDO.
DEFINE VARIABLE giColorFavouriteTableFG AS INTEGER NO-UNDO.
DEFINE VARIABLE giColorFavouriteTableBG AS INTEGER NO-UNDO.
DEFINE VARIABLE glUseColorsFavouriteTable AS LOGICAL NO-UNDO.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
/* ******************** Preprocessor Definitions ******************** */
&Scoped-define PROCEDURE-TYPE Window
&Scoped-define DB-AWARE no
/* Name of designated FRAME-NAME and/or first browse and/or first query */
&Scoped-define FRAME-NAME frMain
&Scoped-define BROWSE-NAME brFields
/* Internal Tables (found by Frame, Query & Browse Queries) */
&Scoped-define INTERNAL-TABLES ttField ttIndex ttTable
/* Definitions for BROWSE brFields */
&Scoped-define FIELDS-IN-QUERY-brFields ttField.lShow ttField.iOrder ttField.cFieldName (IF ttField.iExtent > 0 THEN SUBSTITUTE('&1[&2]', ttField.cDataType, ttField.iExtent) ELSE ttField.cDataType ) @ ttField.cDataType ttField.cFormat ttField.cLabel /* Extra fields as per v19 */ ttField.cInitial ttField.cColLabel ttField.lMandatory ttField.iExtent ttField.iDecimals ttField.iFieldRpos ttField.cValExp ttField.cValMsg ttField.cHelp ttField.cDesc ttField.cViewAs
&Scoped-define ENABLED-FIELDS-IN-QUERY-brFields ttField.lShow ttField.cFormat
&Scoped-define ENABLED-TABLES-IN-QUERY-brFields ttField
&Scoped-define FIRST-ENABLED-TABLE-IN-QUERY-brFields ttField
&Scoped-define SELF-NAME brFields
&Scoped-define QUERY-STRING-brFields FOR EACH ttField
&Scoped-define OPEN-QUERY-brFields OPEN QUERY {&SELF-NAME} FOR EACH ttField.
&Scoped-define TABLES-IN-QUERY-brFields ttField
&Scoped-define FIRST-TABLE-IN-QUERY-brFields ttField
/* Definitions for BROWSE brIndexes */
&Scoped-define FIELDS-IN-QUERY-brIndexes ttIndex.cIndexName ttIndex.cIndexFlags ttIndex.cIndexFields
&Scoped-define ENABLED-FIELDS-IN-QUERY-brIndexes
&Scoped-define SELF-NAME brIndexes
&Scoped-define QUERY-STRING-brIndexes FOR EACH ttIndex
&Scoped-define OPEN-QUERY-brIndexes OPEN QUERY {&SELF-NAME} FOR EACH ttIndex.
&Scoped-define TABLES-IN-QUERY-brIndexes ttIndex
&Scoped-define FIRST-TABLE-IN-QUERY-brIndexes ttIndex
/* Definitions for BROWSE brTables */
&Scoped-define FIELDS-IN-QUERY-brTables ttTable.cTableName ttTable.cDatabase ttTable.iNumQueries
&Scoped-define ENABLED-FIELDS-IN-QUERY-brTables
&Scoped-define SELF-NAME brTables
&Scoped-define QUERY-STRING-brTables FOR EACH ttTable
&Scoped-define OPEN-QUERY-brTables OPEN QUERY {&SELF-NAME} FOR EACH ttTable.
&Scoped-define TABLES-IN-QUERY-brTables ttTable
&Scoped-define FIRST-TABLE-IN-QUERY-brTables ttTable
/* Definitions for FRAME frMain */
&Scoped-define OPEN-BROWSERS-IN-QUERY-frMain ~
~{&OPEN-QUERY-brFields}~
~{&OPEN-QUERY-brIndexes}
/* Standard List Definitions */
&Scoped-Define ENABLED-OBJECTS rctQuery rctEdit btnWhere fiTableFilter ~
cbDatabaseFilter tgSelAll fiIndexNameFilter fiFlagsFilter fiFieldsFilter ~
btnClearIndexFilter brTables btnFavourite brFields brIndexes tgDebugMode ~
fiTableDesc btnClearTableFilter cbFavouriteGroup ficWhere btnTableFilter ~
btnAddFavGroup btnQueries btnView btnTools btnTabTables btnClear ~
btnClearFieldFilter btnClipboard btnMoveBottom btnMoveDown btnMoveTop ~
btnMoveUp btnReset btnTabFavourites btnTabFields btnTabIndexes btnNextQuery ~
btnPrevQuery btnDump btnLoad btnDelete btnResizeVer btnClone btnAdd btnEdit ~
fiFeedback
&Scoped-Define DISPLAYED-OBJECTS fiTableFilter cbDatabaseFilter tgSelAll ~
fiIndexNameFilter fiFlagsFilter fiFieldsFilter fiTableDesc cbFavouriteGroup ~
ficWhere fiFeedback
/* Custom List Definitions */
/* List-1,List-2,List-3,List-4,List-5,List-6 */
&Scoped-define List-2 rcFieldFilter tgSelAll brFields btnClearFieldFilter ~
btnMoveBottom btnMoveDown btnMoveTop btnMoveUp btnReset
&Scoped-define List-3 rcIndexFilter fiIndexNameFilter fiFlagsFilter ~
fiFieldsFilter btnClearIndexFilter brIndexes
/* _UIB-PREPROCESSOR-BLOCK-END */
&ANALYZE-RESUME
/* ************************ Function Prototypes ********************** */
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD createMenu wDataDigger
FUNCTION createMenu RETURNS HANDLE
( phParent AS HANDLE ) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD createMenuItem wDataDigger
FUNCTION createMenuItem RETURNS HANDLE
( phMenu AS HANDLE
, pcType AS CHARACTER
, pcLabel AS CHARACTER
, pcName AS CHARACTER
) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD FilterModified wDataDigger
FUNCTION FilterModified RETURNS LOGICAL
( phFilterField AS HANDLE
, plModified AS LOGICAL ) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getDroppedFiles wDataDigger
FUNCTION getDroppedFiles RETURNS CHARACTER
( phDropTarget AS HANDLE ) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getFieldList wDataDigger
FUNCTION getFieldList RETURNS CHARACTER
( pcSortBy AS CHARACTER ) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getMatchesValue wDataDigger
FUNCTION getMatchesValue RETURNS CHARACTER
( phFilterField AS HANDLE ) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getQueryFromFields wDataDigger
FUNCTION getQueryFromFields RETURNS CHARACTER
( INPUT pcFieldList AS CHARACTER ) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getSafeFormat wDataDigger
FUNCTION getSafeFormat RETURNS CHARACTER
( pcFormat AS CHARACTER
, pcDataType AS CHARACTER ) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getSelectedFields wDataDigger
FUNCTION getSelectedFields RETURNS CHARACTER
( /* parameter-definitions */ ) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getSelectedText wDataDigger
FUNCTION getSelectedText RETURNS CHARACTER
( INPUT hWidget AS HANDLE ) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getTableFilter wDataDigger
FUNCTION getTableFilter RETURNS CHARACTER
( /* parameter-definitions */ ) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD killMenu wDataDigger
FUNCTION killMenu RETURNS LOGICAL
( phMenu AS HANDLE ) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD saveSelectedFields wDataDigger
FUNCTION saveSelectedFields RETURNS CHARACTER
( /* parameter-definitions */ ) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD setDebugMode wDataDigger
FUNCTION setDebugMode RETURNS LOGICAL
( plDebugMode AS LOGICAL ) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD setFilterFieldColor wDataDigger
FUNCTION setFilterFieldColor RETURNS LOGICAL
( phWidget AS HANDLE ) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD setQuery wDataDigger
FUNCTION setQuery RETURNS LOGICAL
( piPointerChange AS INTEGER ) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD setRegistry wDataDigger
FUNCTION setRegistry RETURNS CHARACTER
( pcSection AS CHARACTER
, pcKey AS CHARACTER
, pcValue AS CHARACTER
) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD setUpdatePanel wDataDigger
FUNCTION setUpdatePanel RETURNS LOGICAL
( INPUT pcMode AS CHARACTER ) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD setWindowFreeze wDataDigger
FUNCTION setWindowFreeze RETURNS LOGICAL
( plWindowsLocked AS LOGICAL ) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD trimList wDataDigger
FUNCTION trimList RETURNS CHARACTER
( pcList AS CHARACTER
, pcSep AS CHARACTER
, piItems AS INTEGER
) FORWARD.
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
/* *********************** Control Definitions ********************** */
/* Define the widget handle for the window */
DEFINE VAR wDataDigger AS WIDGET-HANDLE NO-UNDO.
/* Menu Definitions */
DEFINE MENU POPUP-MENU-btnHelp
MENU-ITEM m_Introduction_DataDigger LABEL "&Introduction to DataDigger"
MENU-ITEM m_New_in_this_version LABEL "&New in this version"
RULE
MENU-ITEM m_DataDigger_blog LABEL "&Blog on wordpress.com"
MENU-ITEM m_DataDigger_on_GitHub LABEL "&Source code on GitHub"
MENU-ITEM m_DataDigger_Wiki LABEL "&Wiki with How-To and docu"
RULE
MENU-ITEM m_Create_an_issue_on_GitHub LABEL "Create an &issue on GitHub"
MENU-ITEM m_questions_and_feedback LABEL "&Questions and feedback".
DEFINE MENU POPUP-MENU-btnView
MENU-ITEM m_View_as_text LABEL "View as TEXT"
MENU-ITEM m_View_as_HTML LABEL "View as HTML"
MENU-ITEM m_View_as_Excel LABEL "View as Excel" .
/* Definitions of handles for OCX Containers */
DEFINE VARIABLE CtrlFrame AS WIDGET-HANDLE NO-UNDO.
DEFINE VARIABLE chCtrlFrame AS COMPONENT-HANDLE NO-UNDO.
/* Definitions of the field level widgets */
DEFINE BUTTON btnClearDataFilter NO-FOCUS FLAT-BUTTON
LABEL "C"
SIZE-PIXELS 20 BY 21 TOOLTIP "clear all filters #(SHIFT-DEL)".
DEFINE BUTTON btnDataSort NO-FOCUS FLAT-BUTTON
LABEL "S"
SIZE-PIXELS 15 BY 21 TOOLTIP "set sorting".
DEFINE VARIABLE fiNumRecords AS CHARACTER FORMAT "X(256)":U
VIEW-AS TEXT
SIZE-PIXELS 90 BY 13 TOOLTIP "nr of results of the query, double click to fetch all records" NO-UNDO.
DEFINE VARIABLE fiNumSelected AS CHARACTER FORMAT "X(256)":U
VIEW-AS TEXT
SIZE-PIXELS 29 BY 13 TOOLTIP "nr of selected rows" NO-UNDO.
DEFINE RECTANGLE rctData
EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL
SIZE-PIXELS 785 BY 205
BGCOLOR 17 .
DEFINE RECTANGLE rctDataFilter
EDGE-PIXELS 2 GRAPHIC-EDGE
SIZE-PIXELS 783 BY 28
BGCOLOR 12 .
DEFINE BUTTON btGotIt
LABEL "I &Got it"
SIZE-PIXELS 75 BY 24.
DEFINE VARIABLE edHint AS CHARACTER
VIEW-AS EDITOR NO-BOX
SIZE-PIXELS 235 BY 101
BGCOLOR 14 FGCOLOR 9 FONT 0 NO-UNDO.
DEFINE IMAGE imgArrow
FILENAME "adeicon/blank":U TRANSPARENT
SIZE-PIXELS 32 BY 32.
DEFINE BUTTON btnAdd NO-FOCUS FLAT-BUTTON
LABEL "&Add"
SIZE-PIXELS 25 BY 23 TOOLTIP "add a record #(INS)".
DEFINE BUTTON btnAddFavGroup NO-FOCUS FLAT-BUTTON
LABEL "+"
SIZE-PIXELS 17 BY 21 TOOLTIP "add favourites group".
DEFINE BUTTON btnClear NO-FOCUS FLAT-BUTTON
LABEL "&C"
SIZE-PIXELS 20 BY 23 TOOLTIP "clear the where field #(SHIFT-DEL)".
DEFINE BUTTON btnClearFieldFilter NO-FOCUS FLAT-BUTTON
LABEL "C"
CONTEXT-HELP-ID 280
SIZE-PIXELS 20 BY 21 TOOLTIP "clear all filters #(SHIFT-DEL)".
DEFINE BUTTON btnClearIndexFilter
LABEL "C"
CONTEXT-HELP-ID 960
SIZE-PIXELS 20 BY 21 TOOLTIP "clear all filters #(SHIFT-DEL)".
DEFINE BUTTON btnClearTableFilter NO-FOCUS FLAT-BUTTON
LABEL "C"
CONTEXT-HELP-ID 950
SIZE-PIXELS 20 BY 19 TOOLTIP "clear all filters #(SHIFT-DEL)".
DEFINE BUTTON btnClipboard NO-FOCUS FLAT-BUTTON
LABEL "Cp"
SIZE-PIXELS 20 BY 23 TOOLTIP "copy the expression to the clipboard #(CTRL-C)".
DEFINE BUTTON btnClone NO-FOCUS FLAT-BUTTON
LABEL "Cl&one"
SIZE-PIXELS 25 BY 23 TOOLTIP "clone focused record and edit #(ALT-O)".
DEFINE BUTTON btnDelete NO-FOCUS FLAT-BUTTON
LABEL "Del"
SIZE-PIXELS 25 BY 23 TOOLTIP "delete the selected records #(DEL)".
DEFINE BUTTON btnDump NO-FOCUS FLAT-BUTTON
LABEL "&Save"
SIZE-PIXELS 25 BY 23 TOOLTIP "save data to disk #(CTRL-S)".
DEFINE BUTTON btnEdit NO-FOCUS FLAT-BUTTON
LABEL "&Edit"
SIZE-PIXELS 25 BY 23 TOOLTIP "edit the selected records #(ALT-E)".
DEFINE BUTTON btnFavourite NO-FOCUS FLAT-BUTTON
LABEL "F"
SIZE-PIXELS 19 BY 21 TOOLTIP "set/unset as favourite".
DEFINE BUTTON btnLoad NO-FOCUS FLAT-BUTTON
LABEL "&Load"
SIZE-PIXELS 25 BY 23 TOOLTIP "load data #(CTRL-L)".
DEFINE BUTTON btnMoveBottom NO-FOCUS FLAT-BUTTON
LABEL "Btm"
SIZE-PIXELS 23 BY 23 TOOLTIP "move selected field to bottom #(CTRL-SHIFT-DOWN)".
DEFINE BUTTON btnMoveDown NO-FOCUS FLAT-BUTTON
LABEL "Dn"
SIZE-PIXELS 23 BY 23 TOOLTIP "move selected field down #(CTRL-DOWN)".
DEFINE BUTTON btnMoveTop NO-FOCUS FLAT-BUTTON
LABEL "Top"
SIZE-PIXELS 23 BY 23 TOOLTIP "move selected field to top #(CTRL-SHIFT-UP)".
DEFINE BUTTON btnMoveUp NO-FOCUS FLAT-BUTTON
LABEL "Up"
SIZE-PIXELS 23 BY 23 TOOLTIP "move selected field up #(CTRL-UP)".
DEFINE BUTTON btnNextQuery NO-FOCUS FLAT-BUTTON
LABEL "->"
SIZE-PIXELS 20 BY 23 TOOLTIP "next query".
DEFINE BUTTON btnPrevQuery NO-FOCUS FLAT-BUTTON
LABEL "<-"
SIZE-PIXELS 20 BY 23 TOOLTIP "previous query".
DEFINE BUTTON btnQueries NO-FOCUS FLAT-BUTTON
LABEL "&PQ"
SIZE-PIXELS 20 BY 23 TOOLTIP "previous queries #(CTRL-SHIFT-P)".
DEFINE BUTTON btnReset NO-FOCUS FLAT-BUTTON
LABEL "R"
SIZE-PIXELS 23 BY 23 TOOLTIP "reset default ordering #(CTRL-SHIFT-HOME)".
DEFINE BUTTON btnResizeVer NO-FOCUS FLAT-BUTTON
LABEL "||||||||||||||||||||||||||"
SIZE 156 BY .24 TOOLTIP "drag me up, Scotty (and down)".
DEFINE BUTTON btnTabFavourites NO-FOCUS FLAT-BUTTON
LABEL "Fav"
CONTEXT-HELP-ID 270
SIZE-PIXELS 23 BY 77 TOOLTIP "show favorites #(CTRL-2)".
DEFINE BUTTON btnTabFields NO-FOCUS FLAT-BUTTON
LABEL "Fld"
CONTEXT-HELP-ID 270
SIZE-PIXELS 23 BY 77 TOOLTIP "show fields #(CTRL-3)".
DEFINE BUTTON btnTabIndexes NO-FOCUS FLAT-BUTTON
LABEL "Idx"
CONTEXT-HELP-ID 270
SIZE-PIXELS 23 BY 77 TOOLTIP "show indexes #(CTRL-4)".
DEFINE BUTTON btnTableFilter NO-FOCUS FLAT-BUTTON
LABEL "Y"
CONTEXT-HELP-ID 950
SIZE-PIXELS 20 BY 19 TOOLTIP "press arrow-down for extra filter options #(CTRL-DOWN)".
DEFINE BUTTON btnTabTables NO-FOCUS FLAT-BUTTON
LABEL "Tbl"
CONTEXT-HELP-ID 270
SIZE-PIXELS 23 BY 77 TOOLTIP "show tables #(CTRL-1)".
DEFINE BUTTON btnTools NO-FOCUS FLAT-BUTTON
LABEL "Tools"
SIZE-PIXELS 30 BY 30 TOOLTIP "tools and settings #(CTRL-T) = jump to #(CTRL-SHIFT-T) = show/hide".
DEFINE BUTTON btnView NO-FOCUS FLAT-BUTTON
LABEL "&View"
SIZE-PIXELS 25 BY 23 TOOLTIP "view selected records #(SHIFT-ENTER) #right click to set type of view".
DEFINE BUTTON btnViewData NO-FOCUS FLAT-BUTTON
LABEL "->"
SIZE-PIXELS 20 BY 23 TOOLTIP "execute the query #(CTRL-ENTER)".
DEFINE BUTTON btnWhere NO-FOCUS FLAT-BUTTON
LABEL "&Where"
SIZE-PIXELS 20 BY 23 TOOLTIP "show expanded query editor #(ALT-CURSOR-DOWN)".
DEFINE VARIABLE cbDatabaseFilter AS CHARACTER FORMAT "X(256)":U
CONTEXT-HELP-ID 950
VIEW-AS COMBO-BOX SORT INNER-LINES 15
LIST-ITEMS "Item 1"
DROP-DOWN-LIST
SIZE-PIXELS 59 BY 21 TOOLTIP "filter on database" NO-UNDO.
DEFINE VARIABLE cbFavouriteGroup AS CHARACTER FORMAT "X(256)":U
VIEW-AS COMBO-BOX SORT INNER-LINES 10
DROP-DOWN-LIST
SIZE-PIXELS 155 BY 21 NO-UNDO.
DEFINE VARIABLE ficWhere AS CHARACTER
CONTEXT-HELP-ID 110
VIEW-AS EDITOR NO-WORD-WRAP
SIZE-PIXELS 595 BY 21 TOOLTIP "query on your table #(ALT-CURSOR-DOWN)"
FONT 2 NO-UNDO.
DEFINE VARIABLE fiFeedback AS CHARACTER FORMAT "X(256)":U INITIAL "Got a question or feedback?"
VIEW-AS TEXT
SIZE-PIXELS 204 BY 13 TOOLTIP "click me!"
FGCOLOR 7 NO-UNDO.
DEFINE VARIABLE fiFieldsFilter AS CHARACTER FORMAT "X(256)":U INITIAL "Fields"
CONTEXT-HELP-ID 960
VIEW-AS FILL-IN
SIZE-PIXELS 140 BY 21 TOOLTIP "filter indexes on used fields"
FGCOLOR 7 NO-UNDO.
DEFINE VARIABLE fiFlagsFilter AS CHARACTER FORMAT "X(256)":U INITIAL "Flags"
CONTEXT-HELP-ID 960
VIEW-AS FILL-IN
SIZE-PIXELS 55 BY 21 TOOLTIP "filter indexes on index flags"
FGCOLOR 7 NO-UNDO.
DEFINE VARIABLE fiIndexNameFilter AS CHARACTER FORMAT "X(256)":U INITIAL "Index Name"
CONTEXT-HELP-ID 960
VIEW-AS FILL-IN
SIZE-PIXELS 75 BY 21 TOOLTIP "filter indexes on name"
FGCOLOR 7 NO-UNDO.
DEFINE VARIABLE fiTableDesc AS CHARACTER FORMAT "X(256)":U
VIEW-AS FILL-IN
SIZE-PIXELS 188 BY 21 NO-UNDO.
DEFINE VARIABLE fiTableFilter AS CHARACTER FORMAT "X(256)":U INITIAL "Table filter"
CONTEXT-HELP-ID 950
VIEW-AS FILL-IN
SIZE-PIXELS 70 BY 21 TOOLTIP "filter on table names #(ALT-T)"
FGCOLOR 7 NO-UNDO.
DEFINE VARIABLE fiWarning AS CHARACTER FORMAT "X(256)":U
VIEW-AS FILL-IN
SIZE-PIXELS 45 BY 21
BGCOLOR 14 FGCOLOR 12 NO-UNDO.
DEFINE RECTANGLE rcFieldFilter
EDGE-PIXELS 2 GRAPHIC-EDGE
SIZE-PIXELS 466 BY 237
BGCOLOR 12 FGCOLOR 12 .
DEFINE RECTANGLE rcIndexFilter
EDGE-PIXELS 2 GRAPHIC-EDGE
SIZE-PIXELS 315 BY 141
BGCOLOR 12 FGCOLOR 12 .
DEFINE RECTANGLE rcTableFilter
EDGE-PIXELS 2 GRAPHIC-EDGE
SIZE-PIXELS 240 BY 236
BGCOLOR 12 .
DEFINE RECTANGLE rctEdit
EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL
SIZE-PIXELS 265 BY 35.
DEFINE RECTANGLE rctQuery
EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL ROUNDED
SIZE-PIXELS 789 BY 289.
DEFINE VARIABLE tgDebugMode AS LOGICAL INITIAL yes
LABEL ""
VIEW-AS TOGGLE-BOX
SIZE-PIXELS 15 BY 13 TOOLTIP "disable timers (for debugging)".
DEFINE VARIABLE tgSelAll AS LOGICAL INITIAL yes
LABEL ""
CONTEXT-HELP-ID 280
VIEW-AS TOGGLE-BOX
SIZE-PIXELS 14 BY 15 TOOLTIP "toggle to (de)select all fields" NO-UNDO.
DEFINE BUTTON btnAbout
LABEL "Info"
SIZE-PIXELS 30 BY 30 TOOLTIP "about the DataDigger #(CTRL-SHIFT-B)".
DEFINE BUTTON btnAbout-txt NO-FOCUS FLAT-BUTTON
LABEL "A&bout"
SIZE-PIXELS 100 BY 30 TOOLTIP "about the DataDigger #(CTRL-SHIFT-B)".
DEFINE BUTTON btnConnections
LABEL "&Con"
SIZE-PIXELS 30 BY 30 TOOLTIP "connections #(CTRL-SHIFT-C)".
DEFINE BUTTON btnConnections-txt NO-FOCUS FLAT-BUTTON
LABEL "&Connections"
SIZE-PIXELS 100 BY 30 TOOLTIP "connections #(CTRL-SHIFT-C)".
DEFINE BUTTON btnDataAdmin
LABEL "&ADM"
SIZE-PIXELS 30 BY 30 TOOLTIP "Data Administration #(CTRL-SHIFT-A)".
DEFINE BUTTON btnDataAdmin-txt NO-FOCUS FLAT-BUTTON
LABEL "Data &Admin"
SIZE-PIXELS 100 BY 30 TOOLTIP "Data Administration #(CTRL-SHIFT-A)".
DEFINE BUTTON btnDataDigger
LABEL "DD"
SIZE-PIXELS 30 BY 30 TOOLTIP "start a new DataDigger window #(CTRL-SHIFT-N)".
DEFINE BUTTON btnDataDigger-txt NO-FOCUS FLAT-BUTTON
LABEL "&New Window"
SIZE-PIXELS 100 BY 30 TOOLTIP "start a new DataDigger window #(CTRL-SHIFT-N)".
DEFINE BUTTON btnDict
LABEL "&Dict"
SIZE-PIXELS 30 BY 30 TOOLTIP "start the Data Dictionary #(CTRL-SHIFT-D)".
DEFINE BUTTON btnDict-txt NO-FOCUS FLAT-BUTTON
LABEL "Data &Dictionary"
SIZE-PIXELS 100 BY 30 TOOLTIP "start the Data Dictionary #(CTRL-SHIFT-D)".
DEFINE BUTTON btnEditor
LABEL "&Ed"
SIZE-PIXELS 30 BY 30 TOOLTIP "start a Procedure Editor #(CTRL-SHIFT-E)".
DEFINE BUTTON btnEditor-txt NO-FOCUS FLAT-BUTTON
LABEL "&Editor"
SIZE-PIXELS 100 BY 30 TOOLTIP "start a Procedure Editor #(CTRL-SHIFT-E)".
DEFINE BUTTON btnExpand NO-FOCUS FLAT-BUTTON
LABEL "< >"
SIZE-PIXELS 30 BY 30 TOOLTIP "expand or collapse the toolbar #(CTRL-ALT-T)".
DEFINE BUTTON btnExpand-txt NO-FOCUS FLAT-BUTTON
LABEL "Expand/Collapse"
SIZE-PIXELS 100 BY 30 TOOLTIP "expand or collapse the toolbar #(CTRL-ALT-T)".
DEFINE BUTTON btnHelp
LABEL "Help"
SIZE-PIXELS 30 BY 30 TOOLTIP "help on DataDigger".
DEFINE BUTTON btnHelp-txt NO-FOCUS FLAT-BUTTON
LABEL "&Welcome"
SIZE-PIXELS 100 BY 30 TOOLTIP "show quick intro #(CTRL-SHIFT-W)".
DEFINE BUTTON btnQueries-3
LABEL "&PQ"
SIZE-PIXELS 30 BY 30 TOOLTIP "previous queries #(CTRL-SHIFT-P)".
DEFINE BUTTON btnQueries-txt NO-FOCUS FLAT-BUTTON
LABEL "&Previous Queries"
SIZE-PIXELS 100 BY 30 TOOLTIP "previous queries #(CTRL-SHIFT-P)".
DEFINE BUTTON btnQueryTester
LABEL "&Q"
SIZE-PIXELS 30 BY 30 TOOLTIP "start MCF's Query Tester #(CTRL-SHIFT-Q)".
DEFINE BUTTON btnQueryTester-txt NO-FOCUS FLAT-BUTTON
LABEL "&Query Tester"
SIZE-PIXELS 100 BY 30 TOOLTIP "start MCF's Query Tester #(CTRL-SHIFT-Q)".
DEFINE BUTTON btnSettings
LABEL "&Set"
SIZE-PIXELS 30 BY 30 TOOLTIP "edit your settings file #(CTRL-SHIFT-S)".
DEFINE BUTTON btnSettings-txt NO-FOCUS FLAT-BUTTON
LABEL "&Settings"
SIZE-PIXELS 100 BY 30 TOOLTIP "edit your settings file #(CTRL-SHIFT-S)".
DEFINE BUTTON btnTools-2 NO-FOCUS FLAT-BUTTON
LABEL "Tools"
SIZE-PIXELS 30 BY 30 TOOLTIP "tools and settings #(CTRL-T) = jump to #(CTRL-SHIFT-T) = show/hide".
DEFINE BUTTON btnTools-txt NO-FOCUS FLAT-BUTTON
LABEL "Show / Hide"
SIZE-PIXELS 100 BY 30 TOOLTIP "show or hide the toolbar".
/* Query definitions */
&ANALYZE-SUSPEND
DEFINE QUERY brFields FOR
ttField SCROLLING.
DEFINE QUERY brIndexes FOR
ttIndex SCROLLING.
DEFINE QUERY brTables FOR
ttTable SCROLLING.
&ANALYZE-RESUME
/* Browse definitions */
DEFINE BROWSE brFields
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS brFields wDataDigger _FREEFORM
QUERY brFields DISPLAY
ttField.lShow VIEW-AS TOGGLE-BOX
ttField.iOrder
ttField.cFieldName
(IF ttField.iExtent > 0
THEN SUBSTITUTE('&1[&2]', ttField.cDataType, ttField.iExtent)
ELSE ttField.cDataType ) @ ttField.cDataType
ttField.cFormat
ttField.cLabel
/* Extra fields as per v19 */
ttField.cInitial
ttField.cColLabel
ttField.lMandatory
ttField.iExtent
ttField.iDecimals
ttField.iFieldRpos
ttField.cValExp
ttField.cValMsg
ttField.cHelp
ttField.cDesc
ttField.cViewAs
ENABLE
ttField.lShow
ttField.cFormat
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
WITH NO-ROW-MARKERS SEPARATORS NO-VALIDATE
&IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 92 BY 11
&ELSE SIZE-PIXELS 460 BY 231 &ENDIF FIT-LAST-COLUMN TOOLTIP "fields of selected table"
CONTEXT-HELP-ID 80.
DEFINE BROWSE brIndexes
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS brIndexes wDataDigger _FREEFORM
QUERY brIndexes DISPLAY
ttIndex.cIndexName
ttIndex.cIndexFlags
ttIndex.cIndexFields
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
WITH NO-ROW-MARKERS SEPARATORS NO-VALIDATE
&IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 62 BY 6
&ELSE SIZE-PIXELS 308 BY 132 &ENDIF FIT-LAST-COLUMN TOOLTIP "indexes of the table"
CONTEXT-HELP-ID 90.
DEFINE BROWSE brTables
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS brTables wDataDigger _FREEFORM
QUERY brTables DISPLAY
ttTable.cTableName
ttTable.cDatabase
ttTable.iNumQueries
/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME
WITH NO-ROW-MARKERS
&IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 47 BY 10
&ELSE SIZE-PIXELS 234 BY 210 &ENDIF FIT-LAST-COLUMN TOOLTIP "(F) to set/unset as favourite"
CONTEXT-HELP-ID 70.
/* ************************ Frame Definitions *********************** */
DEFINE FRAME frMain
btnWhere AT Y 265 X 683
fiTableFilter AT Y 3 X 56 NO-LABEL
cbDatabaseFilter AT Y 3 X 117 COLON-ALIGNED NO-LABEL
tgSelAll AT Y 5 X 345
fiIndexNameFilter AT Y 5 X 815 COLON-ALIGNED NO-LABEL
fiFlagsFilter AT Y 5 X 890 COLON-ALIGNED NO-LABEL
fiFieldsFilter AT Y 5 X 945 COLON-ALIGNED NO-LABEL
btnClearIndexFilter AT Y 5 X 1095
brTables AT Y 27 X 56
btnFavourite AT Y 236 X 269
brFields AT Y 27 X 325
brIndexes AT Y 28 X 829
tgDebugMode AT Y 29 X 38 NO-TAB-STOP
fiTableDesc AT Y 236 X 57 NO-LABEL
btnClearTableFilter AT Y 3 X 237
cbFavouriteGroup AT Y 236 X 75 COLON-ALIGNED NO-LABEL
ficWhere AT Y 266 X 80 NO-LABEL
fiWarning AT Y 520 X 480 COLON-ALIGNED NO-LABEL
btnTableFilter AT Y 3 X 257
btnAddFavGroup AT Y 236 X 248
btnQueries AT Y 265 X 745
btnView AT Y 520 X 200
btnTools AT Y 0 X 1
btnTabTables AT Y 45 X 34
btnClear AT Y 265 X 725
btnClearFieldFilter AT Y 5 X 765
btnClipboard AT Y 265 X 765
btnMoveBottom AT Y 143 X 790
btnMoveDown AT Y 121 X 790
btnMoveTop AT Y 55 X 790
btnMoveUp AT Y 77 X 790
btnReset AT Y 99 X 790
btnViewData AT Y 265 X 705
btnTabFavourites AT Y 122 X 33
btnTabFields AT Y 45 X 303
btnTabIndexes AT Y 122 X 303
btnNextQuery AT Y 265 X 57
btnPrevQuery AT Y 265 X 36
btnDump AT Y 520 X 175
btnLoad AT Y 520 X 225
btnDelete AT Y 520 X 280
btnResizeVer AT ROW 13.38 COL 7.6
btnClone AT Y 520 X 80
btnAdd AT Y 520 X 55
btnEdit AT Y 520 X 105
fiFeedback AT Y 520 X 605 COLON-ALIGNED NO-LABEL
rctQuery AT Y 1 X 30
rctEdit AT Y 515 X 50
rcTableFilter AT Y 24 X 53
rcFieldFilter AT Y 24 X 322
rcIndexFilter AT Y 24 X 825
WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY
SIDE-LABELS NO-UNDERLINE THREE-D
AT X 0 Y 0
SIZE-PIXELS 1498 BY 560 DROP-TARGET.
DEFINE FRAME frData
btnClearDataFilter AT Y 5 X 761
btnDataSort AT Y 4 X 5
fiNumSelected AT Y 198 X 636 COLON-ALIGNED NO-LABEL
fiNumRecords AT Y 198 X 665 COLON-ALIGNED NO-LABEL
rctData AT Y 0 X 0
rctDataFilter AT Y 1 X 0
WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY
SIDE-LABELS NO-UNDERLINE THREE-D
AT COL 7 ROW 15.05
SIZE 158 BY 10.24.
DEFINE FRAME frHint
edHint AT Y 4 X 35 NO-LABEL
btGotIt AT Y 110 X 104
imgArrow AT Y 0 X 0
WITH 1 DOWN KEEP-TAB-ORDER OVERLAY
SIDE-LABELS TOP-ONLY NO-UNDERLINE THREE-D
AT X 1150 Y 15
SIZE-PIXELS 285 BY 140
BGCOLOR 14 .
DEFINE FRAME frSettings
btnQueries-txt AT Y 175 X 37
btnDataDigger AT Y 35 X 1
btnSettings AT Y 70 X 1
btnDict AT Y 105 X 1
btnDataAdmin AT Y 140 X 1
btnQueries-3 AT Y 175 X 1
btnQueryTester AT Y 210 X 1
btnConnections AT Y 245 X 1
btnEditor AT Y 280 X 1
btnHelp AT Y 315 X 1
btnAbout AT Y 350 X 1
btnExpand AT Y 485 X 1
btnExpand-txt AT Y 485 X 35
btnEditor-txt AT Y 280 X 37
btnQueryTester-txt AT Y 210 X 37
btnAbout-txt AT Y 350 X 37
btnConnections-txt AT Y 245 X 37
btnDataAdmin-txt AT Y 140 X 37
btnDataDigger-txt AT Y 35 X 37
btnHelp-txt AT Y 315 X 37
btnSettings-txt AT Y 70 X 37
btnTools-2 AT Y 0 X 1
btnDict-txt AT Y 105 X 37
btnTools-txt AT Y 0 X 35
WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY
SIDE-LABELS NO-UNDERLINE
AT COL 1 ROW 2.43
SIZE 28 BY 24.76
BGCOLOR 15 .
/* *********************** Procedure Settings ************************ */
&ANALYZE-SUSPEND _PROCEDURE-SETTINGS
/* Settings for THIS-PROCEDURE
Type: Window
Allow: Basic,Browse,DB-Fields,Window,Query
Other Settings: COMPILE
*/
&ANALYZE-RESUME _END-PROCEDURE-SETTINGS
/* ************************* Create Window ************************** */
&ANALYZE-SUSPEND _CREATE-WINDOW
IF SESSION:DISPLAY-TYPE = "GUI":U THEN
CREATE WINDOW wDataDigger ASSIGN
HIDDEN = YES
TITLE = "DataDigger"
HEIGHT-P = 559
WIDTH-P = 1280
MAX-HEIGHT-P = 1134
MAX-WIDTH-P = 1920
VIRTUAL-HEIGHT-P = 1134
VIRTUAL-WIDTH-P = 1920
RESIZE = yes
SCROLL-BARS = no
STATUS-AREA = no
BGCOLOR = ?
FGCOLOR = ?
KEEP-FRAME-Z-ORDER = yes
THREE-D = yes
MESSAGE-AREA = no
SENSITIVE = yes.
ELSE {&WINDOW-NAME} = CURRENT-WINDOW.
/* END WINDOW DEFINITION */
&ANALYZE-RESUME
/* *********** Runtime Attributes and AppBuilder Settings *********** */
&ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
/* SETTINGS FOR WINDOW wDataDigger
NOT-VISIBLE,,RUN-PERSISTENT */
/* REPARENT FRAME */
ASSIGN FRAME frData:FRAME = FRAME frMain:HANDLE
FRAME frHint:FRAME = FRAME frMain:HANDLE
FRAME frSettings:FRAME = FRAME frMain:HANDLE.
/* SETTINGS FOR FRAME frData
*/
ASSIGN
btnClearDataFilter:HIDDEN IN FRAME frData = TRUE.
ASSIGN
btnDataSort:HIDDEN IN FRAME frData = TRUE.
/* SETTINGS FOR RECTANGLE rctDataFilter IN FRAME frData