home *** CD-ROM | disk | FTP | other *** search
/ The Developer Connection…ice Driver Kit for OS/2 3 / DEV3-D1.ISO / devtools / dataflex / delqry.src < prev    next >
Encoding:
Text File  |  1993-05-19  |  12.5 KB  |  405 lines

  1. // *********************************************************************
  2. //  System: DataFlex 3.0 System Utilities                              *
  3. // Program: DELQRY.SRC                                                 *
  4. //  Author: James Ricci 6/27/90                                        *
  5. // Purpose: To delete records and files associated with a saved        *
  6. //          query created by DFQuery.                                  *
  7. // *********************************************************************
  8.  
  9.  
  10.  
  11. //***** Include UIMS and package routines. *****//
  12.  
  13. USE UI
  14.  
  15. USE DATA_SET
  16. USE MENU
  17. USE HELP
  18. USE ENTERR
  19.  
  20.  
  21.  
  22.  
  23. //***** Set App_Name for Help. *****//
  24.  
  25. SET APPLICATION_NAME TO "SYSTEM"
  26.  
  27.  
  28. //***** Open files. *****//
  29.  
  30. OPEN QUERY
  31. if lasterr eq 75 abort
  32.  
  33.  
  34.  
  35.  
  36. //***** Object declaration section. *****//
  37.  
  38. // Register the action bar for use by all program objects.
  39. REGISTER_OBJECT Action_Bar
  40. REGISTER_OBJECT File_Pull_Down
  41.  
  42. /Dummy_Img
  43. /*
  44.  
  45.  
  46. /Verify_Delete_Img
  47. ╔═ Verify Deletion ══════════════════════════╗
  48. ║                                            ║
  49. ║ __________________________________________ ║
  50. ║                                            ║
  51. ║                                            ║
  52. ║                     ________   ________    ║
  53. ║                                            ║
  54. ╚════════════════════════════════════════════╝
  55. /*
  56.  
  57. SUB_PAGE Verify_Text_Img     FROM  Verify_Delete_Img  1
  58. SUB_PAGE Verify_Buttons_Img  FROM  Verify_Delete_Img  2 3
  59.  
  60.  
  61. OBJECT Verify_Delete IS A CLIENT Verify_Delete_Img
  62.   
  63.   SET LOCATION           TO  6 16 ABSOLUTE
  64.   SET BLOCK_MOUSE_STATE  TO  TRUE
  65.   SET RING_STATE         TO  TRUE
  66.   
  67.   ON_KEY KCANCEL       SEND MSG_NONE
  68.   ON_KEY KEY_ALT+KEY_F SEND MSG_NONE
  69.   ON_KEY KEY_ALT+KEY_M SEND MSG_NONE
  70.   ON_KEY KEY_ALT+KEY_H SEND MSG_NONE
  71.   
  72.   // Declare buttons.
  73.   OBJECT Verify_Buttons IS A BUTTON Verify_Buttons_Img
  74.     ITEM_LIST
  75.       ON_ITEM '<CANCEL>' SEND MSG_CANCEL
  76.       ON_ITEM '<DELETE>' SEND MSG_OK
  77.     END_ITEM_LIST
  78.   END_OBJECT
  79.   
  80.   
  81.   // Declare text/message.
  82.   OBJECT Verify_Text IS A FORM Verify_Text_Img
  83.     SET FOCUS_MODE TO POINTER_ONLY
  84.     ITEM_LIST
  85.       ON_ITEM "" SEND MSG_NONE
  86.     END_ITEM_LIST 
  87.     SET CENTER_STATE ITEM 0 TO TRUE
  88.     // Display the text.
  89.     PROCEDURE Display_Text STRING @Text
  90.       SET VALUE ITEM 0 TO @Text
  91.     END_PROCEDURE
  92.   END_OBJECT
  93.                                 
  94.   // Call to the object.
  95.   FUNCTION Verify_Del  STRING @Text  RETURNS INTEGER
  96.     SEND Display_Text TO (Verify_Text(CURRENT_OBJECT)) @Text
  97.     UI_ACCEPT CURRENT_OBJECT TO WINDOWINDEX
  98.     FUNCTION_RETURN (WINDOWINDEX EQ MSG_CANCEL) //0 means delete,1 means cancel.
  99.   END_FUNCTION 
  100.   
  101. END_OBJECT
  102.  
  103.  
  104. // Define the DATA_SET for the Query.dat file.
  105. OBJECT Query_Set IS A DATA_SET Dummy_Img MAIN_FILE Query
  106.   SET LOCATION TO 0 0 ABSOLUTE
  107. END_OBJECT
  108.  
  109.  
  110. /Delete_Query_Img
  111. ┌───────────────────────────────────────────────────────────┐
  112. │                      Delete Queries                       │
  113. │                                                           │
  114. │            ┌────────────────────────────────┐             │
  115. │            │ ______________________________ │             │
  116. │            │ ______________________________ │             │
  117. │            │ ______________________________ │             │
  118. │            │ ______________________________ │             │
  119. │            │ ______________________________ │             │
  120. │            └────────────────────────────────┘             │
  121. │                                                           │
  122. │  ┌─────────────────────────────────────────────────────┐  │
  123. │  │ ___________________________________________________ │  │
  124. │  │ ___________________________________________________ │  │
  125. │  │ ___________________________________________________ │  │
  126. │  │ ___________________________________________________ │  │
  127. │  │ ___________________________________________________ │  │
  128. │  └─────────────────────────────────────────────────────┘  │
  129. │                                                           │
  130. │  _________________   _______________   _________________  │
  131. └───────────────────────────────────────────────────────────┘
  132. /*
  133.  
  134. SUB_PAGE File_List_Img    FROM Delete_Query_Img VERTICAL   1  5
  135. SUB_PAGE Query_List_Img   FROM Delete_Query_Img VERTICAL   6  5
  136. SUB_PAGE File_Buttons_Img FROM Delete_Query_Img HORIZONTAL 11 3
  137.  
  138.  
  139. // Display Files and Queries associated with the files.
  140. OBJECT Delete_Query IS A CLIENT Delete_Query_Img RING
  141.  
  142.   SET LOCATION             TO  3 9 ABSOLUTE
  143.   SET ATTACH_PARENT_STATE  TO  TRUE
  144.  
  145.   // Declare accelerator keys.
  146.   ON_KEY KSAVE_RECORD    SEND Select_File
  147.   ON_KEY KDELETE_RECORD  SEND Delete_Queries
  148.   ON_KEY KCLEAR          SEND Select_All
  149.   ON_KEY KCANCEL         SEND ACTIVATE     TO (Action_Bar(DESKTOP))
  150. //  ON_KEY KCANCEL         SEND Request_Exit TO (Action_Bar(DESKTOP))
  151.   ON_KEY KACTION_BAR     SEND ACTIVATE     TO (Action_Bar(DESKTOP))
  152.  
  153.  
  154.   OBJECT File_List IS A LIST File_List_Img
  155.     SET SELECT_MODE  TO  SINGLE_SELECT
  156.  
  157.     ON_KEY KSPACE SEND MSG_NONE
  158.  
  159.     // Return the file number of the selected file.
  160.     FUNCTION Selected_File RETURNS INTEGER
  161.       LOCAL INTEGER @Counter @Max
  162.       MOVE (ITEM_COUNT(CURRENT_OBJECT)-1) TO @Max
  163.       FOR @Counter FROM 0 TO @Max
  164.         IF (SELECT_STATE(CURRENT_OBJECT,@Counter)) EQ 1 ;
  165.                            FUNCTION_RETURN (AUX_VALUE(CURRENT_OBJECT,@Counter))
  166.       LOOP
  167.     END_FUNCTION
  168.  
  169.     // Select the current item and edit the file.
  170.     PROCEDURE Select_File
  171.       SET SELECT_STATE TO TRUE
  172.       SEND Display_Queries (AUX_VALUE(CURRENT_OBJECT,CURRENT))
  173.     END_PROCEDURE
  174.  
  175.     // Fill the list with all current files in the Filelist.CFG file.
  176.     PROCEDURE Fill_List
  177.       LOCAL STRING @User_Name @DF_File_Name
  178.       MOVE 0 TO FILENUMBER
  179.       FILELIST NEXT TO @User_Name @DF_File_Name
  180.       WHILE [FOUND]
  181.         SEND ADD_ITEM MSG_Select_File @User_Name
  182.         SET AUX_VALUE ITEM (ITEM_COUNT(CURRENT_OBJECT) - 1) TO FILENUMBER
  183.         FILELIST NEXT TO @User_Name @DF_File_Name
  184.       END
  185.     END_PROCEDURE
  186.  
  187.     SEND Fill_List // Need only be done once.
  188.  
  189.   END_OBJECT
  190.  
  191.  
  192.   // Display queries to user and allow them to delete.
  193.   OBJECT Query_List IS A LIST Query_List_Img
  194.     SET SELECT_MODE  TO  MULTI_SELECT
  195.     SET FOCUS_MODE   TO  NONFOCUSABLE
  196.  
  197.     // Select all queries if there are any to select.
  198.     PROCEDURE Group_Select INTEGER @State
  199.       LOCAL INTEGER @Item# @Max_Item
  200.       IF (FOCUS_MODE(CURRENT_OBJECT)) EQ FOCUSABLE BEGIN
  201.         MOVE (ITEM_COUNT(CURRENT_OBJECT)-1) TO @Max_Item
  202.         FOR @Item# FROM 0 TO @Max_Item
  203.           SET SELECT_STATE ITEM @Item# TO @State
  204.         LOOP
  205.       END
  206.     END_PROCEDURE
  207.  
  208.     // Delete all selected queries.
  209.     PROCEDURE Delete_Queries
  210.       LOCAL INTEGER @Item# @Max_Item
  211.       IF (FOCUS_MODE(CURRENT_OBJECT)) EQ FOCUSABLE BEGIN
  212.         IF (Verify_Del(Verify_Delete.OBJ,'Are You Sure??')) EQ 1 PROCEDURE_RETURN 0
  213.         MOVE (ITEM_COUNT(CURRENT_OBJECT)-1) TO @Max_Item
  214.         FOR @Item# FROM 0 TO @Max_Item
  215.           IF (SELECT_STATE(CURRENT_OBJECT,@Item#)) BEGIN
  216.             CLEAR Query
  217.             MOVE (AUX_VALUE(CURRENT_OBJECT,@Item#)) TO Query.RECNUM
  218.             FIND EQ Query
  219.             REREAD Query
  220.               ERASEFILE Query.Filename
  221.               DELETE Query
  222.             UNLOCK
  223.           END
  224.         LOOP
  225.         SEND Display_Queries (Selected_File(PARENT(CURRENT_OBJECT)))
  226.       END
  227.     END_PROCEDURE
  228.  
  229.     // Conditionally activate object if there are any queries to delete.
  230.     PROCEDURE Activate_If_Queries
  231.       IF (VALUE(CURRENT_OBJECT,0)) EQ  "No Queries For This File." BEGIN
  232.         SET FOCUS_MODE TO NONFOCUSABLE
  233.         SEND ACTIVATE TO (File_List(CURRENT_OBJECT))
  234.       END
  235.       ELSE BEGIN
  236.         SET FOCUS_MODE TO FOCUSABLE
  237.         SEND ACTIVATE
  238.       END
  239.     END_PROCEDURE
  240.  
  241.     // Fill list with queries associated with selected file.
  242.     PROCEDURE Fill_With_Queries STRING @FNAME
  243.       SEND DELETE_DATA
  244.       CLEAR Query
  245.       MOVE @FName TO Query.Data
  246.       FIND GT Query.Data
  247.       [FOUND] INDICATE FOUND AS (TRIM(Query.Data)) EQ (TRIM(@FName))
  248.       IF [FOUND] BEGIN
  249.         REPEAT
  250.           SEND ADD_ITEM MSG_NONE Query.Description
  251.           SET AUX_VALUE ITEM (ITEM_COUNT(CURRENT_OBJECT)-1) TO Query.RECNUM
  252.           FIND GT Query.Data
  253.           [FOUND] INDICATE FOUND AS (TRIM(Query.Data)) EQ (TRIM(@FName))
  254.         UNTIL [NOT FOUND]
  255.       END
  256.       ELSE BEGIN
  257.         SEND ADD_ITEM MSG_NONE "No Queries For This File."
  258.       END
  259.     END_PROCEDURE
  260.  
  261.     // Display the list of queries.
  262.     PROCEDURE Display_Queries INTEGER @File#
  263.       LOCAL STRING @FName @Dummy
  264.       SET DYNAMIC_UPDATE_STATE TO FALSE
  265.       FILELIST @File# TO @Dummy @FName
  266.       SEND Fill_With_Queries @Fname
  267.       SEND Activate_If_Queries
  268.       SET DYNAMIC_UPDATE_STATE TO TRUE
  269.       SEND REFRESH_SCREEN
  270.     END_PROCEDURE
  271.  
  272.   END_OBJECT
  273.  
  274.  
  275.   // Define user buttons for File_List operations.
  276.   OBJECT File_Buttons IS A BUTTON File_Buttons_Img
  277.     SET FOCUS_MODE  TO  POINTER_ONLY
  278.  
  279.     ITEM_LIST
  280.       ON_ITEM '<F2=Examine File>'      SEND Select_File
  281.       ON_ITEM '<F5=Select All>'        SEND Select_All
  282.       ON_ITEM '<Shift+F2=Delete>'      SEND Delete_Queries
  283.     END_ITEM_LIST
  284.  
  285.   END_OBJECT
  286.  
  287.  
  288.   // Redirect Select_All to Query_List.
  289.   PROCEDURE Select_All
  290.     SEND Group_Select TO (Query_List(CURRENT_OBJECT)) TRUE
  291.   END_PROCEDURE
  292.  
  293.   // Redirect De_Select_All to Query_List.
  294.   PROCEDURE De_Select_All
  295.     SEND Group_Select TO (Query_List(CURRENT_OBJECT)) FALSE
  296.   END_PROCEDURE
  297.  
  298.   // Redirect message to delete all selected queries.
  299.   PROCEDURE Delete_Queries
  300.     SEND Delete_Queries TO (Query_List(CURRENT_OBJECT))
  301.   END_PROCEDURE
  302.  
  303.   // Delete all queries.
  304.   PROCEDURE Delete_All
  305.     SEND Select_All
  306.     SEND Delete_Queries
  307.   END_PROCEDURE
  308.  
  309.   // Redirect request to display queries.
  310.   PROCEDURE Select_File
  311.     SEND Select_File TO (File_List(CURRENT_OBJECT))
  312.   END_PROCEDURE
  313.  
  314.   // Redirect Display_Query message
  315.   PROCEDURE Display_Queries INTEGER @File#
  316.     SEND Display_Queries TO (Query_List(CURRENT_OBJECT)) @File#
  317.   END_PROCEDURE
  318.  
  319.   // Get the selected file.
  320.   FUNCTION Selected_File RETURNS INTEGER
  321.     FUNCTION_RETURN (Selected_File(File_List(CURRENT_OBJECT)))
  322.   END_FUNCTION
  323.  
  324. END_OBJECT
  325.  
  326.  
  327.  
  328. /Action_Bar_Img Resident
  329.   ____  ___________  ____                                                     
  330. /File_Pd_Img Resident
  331. ┌───────────────┐
  332. │ _____________ │
  333. ├───────────────┤
  334. │ _____________ │
  335. └───────────────┘
  336. /Maintenance_Pd_Img Resident
  337. ┌────────────────────────────┐
  338. │ __________________________ │
  339. │ __________________________ │
  340. ├────────────────────────────┤
  341. │ __________________________ │
  342. │ __________________________ │
  343. └────────────────────────────┘
  344. /*
  345.  
  346. // Define the action bar for the program.
  347. CREATE_MENU Action_Bar Action_Bar_Img LOCATION 1 0 ABSOLUTE
  348.  
  349.   ON_KEY KCANCEL SEND EXIT_APPLICATION
  350.  
  351.   ON_ITEM "File" BEGIN_PULL_DOWN File_Pd File_Pd_Img
  352.     ON_ITEM "Open  F2"         SEND Select_File TO Delete_Query
  353.     ON_ITEM "Exit  Alt+F4"     SEND EXIT_APPLICATION
  354.  
  355.     PROCEDURE Request_Exit
  356.       SEND ACTIVATE
  357.       SET CURRENT_ITEM TO 1
  358.     END_PROCEDURE
  359.  
  360.   END_PULL_DOWN
  361.  
  362.   ON_ITEM "Maintenance" BEGIN_PULL_DOWN Maintenance_Pd Maintenance_Pd_Img
  363.     ON_ITEM "Select All     F5"        SEND Select_All     TO Delete_Query
  364.     ON_ITEM "De-Select All    "        SEND De_Select_All  TO Delete_Query
  365.     ON_ITEM "Delete         Shift+F2"  SEND Delete_Queries TO Delete_Query
  366.     ON_ITEM "Delete All"               SEND Delete_All     TO Delete_Query
  367.   END_PULL_DOWN
  368.  
  369.   #INCLUDE HELP_PD.INC
  370.  
  371.   PROCEDURE Request_Exit
  372.     SEND Request_Exit TO (File_Pd(CURRENT_OBJECT))
  373.   END_PROCEDURE
  374.  
  375. END_MENU
  376.  
  377.  
  378. /Title_Img
  379. ________________________________________________________________________________
  380. /*                                                            
  381.  
  382. // Define an object which will act as the title to the program.
  383. OBJECT Delqry_Title IS A MESSAGE Title_Img
  384.   SET LOCATION             TO  0 0 ABSOLUTE
  385.   SET CENTER_STATE ITEM 0  TO  TRUE
  386.   SET VALUE ITEM 0         TO  "DataFlex Kept Query Maintenance Utility"
  387. END_OBJECT
  388.  
  389.  
  390. //***** Define pulldown keys. *****//
  391.  
  392. ON_KEY KEY_ALT+KEY_F SEND ACTIVATE TO (File_Pd(Action_Bar(DESKTOP)))
  393. ON_KEY KEY_ALT+KEY_M SEND ACTIVATE TO (Maintenance_Pd(Action_Bar(DESKTOP)))
  394. ON_KEY KEY_ALT+KEY_H SEND ACTIVATE TO (Help_Pull_Down(Action_Bar(DESKTOP)))
  395.  
  396.  
  397. //***** MAIN PROGRAM SECTION *****//
  398.  
  399. SEND PAGE_OBJECT TO Delqry_Title TRUE
  400. SEND ACTIVATE TO Action_Bar
  401. START_UI Delete_Query
  402.  
  403. CLEARSCREEN
  404. ABORT
  405.