home *** CD-ROM | disk | FTP | other *** search
/ Millennium Time Capsule / AC2000.BIN / disks / ac12disk / enchant / address / address.bas next >
BASIC Source File  |  1998-11-05  |  19KB  |  578 lines

  1.  
  2. ' [ADDRESS.BAS]
  3. ' This source document is apart of the ENhanCed Hisoft ApplicatioN toolkiT (ENCHANT)
  4. ' Developed by Matthew Bacon & Paul Jones, © 1997-1998 Matthew Bacon & Paul Jones
  5.  
  6. DEFINT a-z
  7. REM $include address.bh            ' Declare *.BH file created from resource file
  8. REM $include toolbx_a.bas        ' Request the file TOOLBX_A.BAS (i.e. GEM Toolkit)
  9. REM $include bubble.bas            ' Request the file BUBBLE.BAS
  10. REM $include error.bas            ' Request the file ERROR.BAS
  11. REM $include printer.bas        ' Request the file PRINTER.BAS
  12. REM $include st-guide.bas        ' Request the file ST-GUIDE.BAS
  13.  
  14. DECLARE FUNCTION OPEN_BOOK        ' Declare FUNCTION's that appear later
  15. DECLARE FUNCTION SAVE_BOOK
  16. CONST max_records=1000            ' The variable max_records determines the maximum
  17.                                 ' amount of records available
  18.  
  19. HowManyButtons=2 : clicks_enabled=-1    ' See GEM Toolkit manual (ENCHANT)
  20. userclose_enabled=-1                    ' for an explaination of these variables
  21.  
  22. CALL StartProgram (CURDIR$+"\ADDRESS.RSC",FORM_MENU,MENU_QUIT,FORM_ICONIFY)
  23. junk=xdialog (FORM_ABOUT,0,0,1,0)            ' Display dialog
  24. CALL initFORM_MAIN : CALL initFORM_PRINT    ' Call sub-routines to initiate
  25. CALL initFORM_FIND : junk=OPEN_BOOK            ' settings within dialogs
  26. CALL xENCHANTloop                            ' Call program loop
  27. CALL StopProgram
  28.  
  29.  
  30. FUNCTION HandleUserClose(BYVAL WindowHandle)
  31. SHARED main_handle
  32.  
  33. SELECT CASE WindowHandle
  34. CASE main_handle
  35.     HandleUserClose=SAVE_BOOK : main_handle=0
  36. END SELECT
  37. END FUNCTION
  38.  
  39. SUB HandleUserMessages
  40. END SUB
  41.  
  42. SUB HandleUserKeys (ASCII$,key_pressed,kstate)
  43. END SUB
  44.  
  45. SUB HandleUserClicks (clicks,kstate,mx,my)
  46. END SUB
  47.  
  48.  
  49. SUB TextWindLoop (BYVAL key_pressed)    ' These sub-routines are not used, but are required
  50. END SUB                                    ' as they are declared within the GEM Toolkit
  51.  
  52. SUB TextWindArrowed(BYVAL WindowHandle,BYVAL which)
  53. END SUB
  54.  
  55.  
  56. SUB    HandleUserMenu (WindowHandle,item,title)
  57. SHARED MyProgram$
  58. STATIC button
  59.  
  60. SELECT CASE item
  61. CASE MENU_ABOUT : junk=xdialog (FORM_ABOUT,0,0,1,0)
  62. CASE MENU_NEW
  63.     IF allchange<>0 THEN
  64.         button=form_alert(2,"[1][  "+MyProgram$+": |  Create a new Address Book? |  All current entries will |  be lost! ][Continue|Cancel]")
  65.         SELECT CASE button
  66.         CASE 1 : CALL NEW_BOOK
  67.         END SELECT
  68.     ELSE
  69.         CALL NEW_BOOK
  70.     END IF
  71. CASE MENU_OPEN
  72.     IF allchange<>0 THEN
  73.         button=form_alert(2,"[1][  "+MyProgram$+": |  Open an Address Book? |  All current entries will |  be lost! ][Continue|Cancel]")
  74.         SELECT CASE button
  75.         CASE 1 : IF OPEN_BOOK THEN CALL redraw_object(MAIN_BACKDROP)
  76.         END SELECT
  77.     ELSE
  78.         IF OPEN_BOOK THEN CALL redraw_object(MAIN_BACKDROP)
  79.     END IF
  80. CASE MENU_SAVE : junk=SAVE_BOOK
  81. CASE MENU_STG_TITLE : junk=STGuide (CURDIR$+"\ADDRESS.HYP","Title")
  82. CASE MENU_STG_CONTENT : junk=STGuide (CURDIR$+"\ADDRESS.HYP","Contents")
  83. CASE MENU_STG_INDEX : junk=STGuide (CURDIR$+"\ADDRESS.HYP","Index")
  84. END SELECT
  85. END SUB
  86.  
  87.  
  88. SUB initFORM_MAIN
  89. SelectTree FORM_MAIN
  90. setobj_text MAIN_TITLE,""
  91. setobj_text MAIN_FORENAME,""
  92. setobj_text MAIN_SURNAME,""
  93. setobj_text MAIN_STREET,""
  94. setobj_text MAIN_TOWN,""
  95. setobj_text MAIN_COUNTY,""
  96. setobj_text MAIN_POSTCODE,""
  97. setobj_text MAIN_COUNTRY,""
  98. setobj_text MAIN_PHONE,""
  99. setobj_text MAIN_FAX,""
  100. setobj_text MAIN_EMAIL,""
  101. END SUB
  102.  
  103.  
  104. SUB initFORM_PRINT
  105. SelectTree FORM_PRINT
  106. setobj_text PRINT_FROM,""
  107. setobj_text PRINT_TO,""
  108. END SUB
  109.  
  110.  
  111. SUB initFORM_FIND
  112. SelectTree FORM_FIND
  113. setobj_text FIND_SEARCHFOR,""
  114. END SUB
  115.  
  116.  
  117. SUB closeFORM_MAIN
  118. SHARED MyProgram$
  119. STATIC button
  120.  
  121. IF CommonButton=2 THEN    ' If right mouse button clicked
  122. SELECT CASE CommonObj
  123.     CASE MAIN_PRINT : junk=BubbleGEM ("Print a record or entire book to disk or printer")
  124.     CASE MAIN_SEARCH : junk=BubbleGEM ("Search Address Book for a particular record")
  125.     CASE MAIN_SORT : junk=BubbleGEM ("Sort Address Book alphabetically")
  126.     CASE MAIN_DELETE : junk=BubbleGEM ("Delete current record")
  127.     CASE MAIN_BACK : junk=BubbleGEM ("Display previous record")
  128.     CASE MAIN_FORWARD : junk=BubbleGEM ("Display next record")
  129.     CASE MAIN_FIRST : junk=BubbleGEM ("Display record #1")
  130.     CASE MAIN_LAST : junk=BubbleGEM ("Display last rocord")
  131.     CASE MAIN_UPDATE : junk=BubbleGEM ("Update current record to Address Book")
  132.     CASE MAIN_HELP : junk=BubbleGEM ("Displays ST-Guide online help if available")
  133. END SELECT
  134. ELSE
  135. SELECT CASE CommonObj
  136.     CASE MAIN_PRINT : CALL PRINT_BOOK
  137.     CASE MAIN_SEARCH : CALL FIND_RECORD
  138.     CASE MAIN_SORT : CALL SORT_BOOK
  139.     CASE MAIN_DELETE : CALL DELETE_RECORD
  140.     CASE MAIN_FIRST : CALL RECORD_FIRST
  141.     CASE MAIN_LAST : CALL RECORD_LAST
  142.     CASE MAIN_BACK : CALL RECORD_BACK
  143.     CASE MAIN_FORWARD : CALL RECORD_FORWARD
  144.     CASE MAIN_HELP : junk=STGuide (CURDIR$+"\ADDRESS.HYP","Main")
  145.     CASE MAIN_UPDATE : CALL UPDATE_RECORD
  146. END SELECT
  147. END IF
  148. END SUB
  149.  
  150.  
  151. SUB closeFORM_PRINT
  152. SHARED print_handle
  153.  
  154. IF CommonButton=2 THEN
  155. SELECT CASE CommonObj
  156.     CASE PRINT_PRINT : junk=BubbleGEM ("Carry out Print command")
  157.     CASE PRINT_CANCEL : junk=BubbleGEM ("Cancel")
  158.     CASE PRINT_HELP : junk=BubbleGEM ("Displays ST-Guide online help if available")
  159. END SELECT
  160. ELSE
  161. SELECT CASE CommonObj
  162.     CASE PRINT_PRINT : CALL PRINT_RECORDS
  163.     CASE PRINT_PRINT,PRINT_CANCEL : print_handle=0 : CommonClose=-1
  164.     CASE PRINT_HELP : junk=STGuide (CURDIR$+"\ADDRESS.HYP","Print")
  165. END SELECT
  166. END IF
  167. END SUB
  168.  
  169.  
  170. SUB closeFORM_FIND
  171. SHARED find_handle
  172.  
  173. IF CommonButton=2 THEN
  174. SELECT CASE CommonObj
  175.     CASE FIND_FIND : junk=BubbleGEM ("Search Address Book for...")
  176.     CASE FIND_CANCEL : junk=BubbleGEM ("Cancel")
  177.     CASE FIND_HELP : junk=BubbleGEM ("Displays ST-Guide online help if available")
  178. END SELECT
  179. ELSE
  180. SELECT CASE CommonObj
  181.     CASE FIND_FIND : CALL FindARrecord : find_handle=0 : CommonClose=-1
  182.     CASE FIND_CANCEL : find_handle=0 : CommonClose=-1
  183.     CASE FIND_HELP : junk=STGuide (CURDIR$+"\ADDRESS.HYP","Find")
  184. END SELECT
  185. END IF
  186. END SUB
  187.  
  188.  
  189. SUB NEW_BOOK
  190. SHARED book$(2),current_record,total_records,main_handle,MyProgram$
  191. STATIC oldtree&
  192.  
  193. MOUSE 2
  194. allchange=0 : REDIM book$(10,max_records)    ' Reset arrays and variables
  195. current_record=0 : total_records=0
  196. IF main_handle THEN                            ' If main window displayed, update it
  197.     oldtree&=tree& : SelectTree FORM_MAIN
  198.     CALL UPDATE_DISPLAY : redraw_object MAIN_BACKDROP
  199.     RenameWindow main_handle,MyProgram$+" : Record"+STR$(current_record)+" of"+STR$(total_records)
  200.     tree&=oldtree&
  201. END IF
  202. MOUSE 0
  203. END SUB
  204.  
  205.  
  206. FUNCTION OPEN_BOOK
  207. SHARED book$(2),current_record,total_records,main_handle
  208. SHARED fsmessage$,fspath$,MyProgram$
  209. STATIC dummy$,myfile,dummy,file$,fsname$
  210.  
  211. ' Call FileSelector
  212. fspath$=CURDIR$+"\*.DAT" : fsmessage$="Open Book" : file$=FileSelect$ (fsname$,2)
  213. IF FEXISTS(file$) THEN
  214.     allchange=1 : REDIM book$(10,max_records)        ' Reset array and variables before loading
  215.     current_record=0 : total_records=0 : dummy=0
  216.     MOUSE 2
  217.     myfile=FREEFILE
  218.     OPEN file$ FOR INPUT AS #myfile        ' Open file and load into array
  219.     DO
  220.         INCR dummy
  221.         INPUT #myfile,book$(0,dummy),book$(1,dummy),book$(2,dummy),book$(3,dummy),book$(4,dummy),book$(5,dummy)
  222.         INPUT #myfile,book$(6,dummy),book$(7,dummy),book$(8,dummy),book$(9,dummy),book$(10,dummy)
  223.         IF dummy=max_records THEN EXIT LOOP
  224.     LOOP UNTIL EOF(myfile)
  225.     CLOSE #myfile
  226.     MOUSE 0
  227.     total_records=dummy : current_record=1        ' Determine total amount of records loaded
  228.  
  229.     ' Update display
  230.     dummy$=MyProgram$+" : Record"+STR$(current_record)+" of"+STR$(total_records)
  231.     main_handle=OpenFormWindow(dummy$,FORM_MAIN,MAIN_TITLE,0,VARPTRS(closeFORM_MAIN))
  232.     CALL UPDATE_DISPLAY
  233.     RenameWindow main_handle,MyProgram$+" : Record"+STR$(current_record)+" of"+STR$(total_records)
  234.     OPEN_BOOK=-1
  235. ELSE
  236.     junk=xalert(3,"[1]["+MyProgram$+":|The file you requested does|not exist - sorry!][OK]")
  237.     OPEN_BOOK=0
  238. END IF
  239. END FUNCTION
  240.  
  241.  
  242. SUB UPDATE_DISPLAY
  243. SHARED book$(2),current_record
  244.  
  245. SelectTree FORM_MAIN
  246. setobj_text MAIN_TITLE,book$(0,current_record)
  247. setobj_text MAIN_FORENAME,book$(1,current_record)
  248. setobj_text MAIN_SURNAME,book$(2,current_record)
  249. setobj_text MAIN_STREET,book$(3,current_record)
  250. setobj_text MAIN_TOWN,book$(4,current_record)
  251. setobj_text MAIN_COUNTY,book$(5,current_record)
  252. setobj_text MAIN_POSTCODE,book$(6,current_record)
  253. setobj_text MAIN_COUNTRY,book$(7,current_record)
  254. setobj_text MAIN_PHONE,book$(8,current_record)
  255. setobj_text MAIN_FAX,book$(9,current_record)
  256. setobj_text MAIN_EMAIL,book$(10,current_record)
  257. END SUB
  258.  
  259.  
  260. SUB UPDATE_RECORD
  261. SHARED book$(2),current_record
  262.  
  263. SelectTree FORM_MAIN
  264. book$(0,current_record)=getobj_text$(MAIN_TITLE)
  265. book$(1,current_record)=getobj_text$(MAIN_FORENAME)
  266. book$(2,current_record)=getobj_text$(MAIN_SURNAME)
  267. book$(3,current_record)=getobj_text$(MAIN_STREET)
  268. book$(4,current_record)=getobj_text$(MAIN_TOWN)
  269. book$(5,current_record)=getobj_text$(MAIN_COUNTY)
  270. book$(6,current_record)=getobj_text$(MAIN_POSTCODE)
  271. book$(7,current_record)=getobj_text$(MAIN_COUNTRY)
  272. book$(8,current_record)=getobj_text$(MAIN_PHONE)
  273. book$(9,current_record)=getobj_text$(MAIN_FAX)
  274. book$(10,current_record)=getobj_text$(MAIN_EMAIL)
  275. allchange=1
  276. END SUB
  277.  
  278.  
  279. FUNCTION SAVE_BOOK
  280. SHARED book$(2),current_record,total_records,main_handle
  281. SHARED fsmessage$,fspath$
  282. STATIC myfile,dummy,file$,button,fsname$
  283.  
  284. IF allchange=0 THEN SAVE_BOOK=-1 : EXIT FUNCTION        ' If nothing has been changed don't save
  285. fsmessage$="Save Book" : file$=FileSelect$ (fsname$,2)
  286. IF fsname$="" THEN SAVE_BOOK=0 : EXIT SUB
  287. IF FEXISTS(file$) THEN
  288.     button=form_alert(2,"[1][  "+MyProgram$+": |  The filename requested already|  exists! ][Continue|Cancel]")
  289.     SELECT CASE button
  290.     CASE 2 : SAVE_BOOK=0 : EXIT SUB
  291.     END SELECT
  292. END IF
  293.  
  294. myfile=FREEFILE
  295. MOUSE 2
  296. OPEN file$ FOR OUTPUT AS #myfile
  297. FOR dummy=1 TO total_records
  298.     WRITE #myfile,book$(0,dummy),book$(1,dummy),book$(2,dummy),book$(3,dummy),book$(4,dummy),book$(5,dummy)
  299.     WRITE #myfile,book$(6,dummy),book$(7,dummy),book$(8,dummy),book$(9,dummy),book$(10,dummy)
  300. NEXT dummy
  301. CLOSE #myfile
  302. MOUSE 0
  303. allchange=0 : SAVE_BOOK=-1
  304. END FUNCTION
  305.  
  306.  
  307. SUB FIND_RECORD
  308. SHARED find_handle
  309. STATIC dummy$
  310.  
  311. dummy$=MyProgram$+" : Find"
  312. find_handle=OpenFormWindow(dummy$,FORM_FIND,FIND_SEARCHFOR,FIND_CANCEL,VARPTRS(closeFORM_FIND))
  313. END SUB
  314.  
  315.  
  316. SUB FindARrecord
  317. SHARED find_handle,book$(2),total_records,current_record
  318. STATIC dummy$,dummy
  319.  
  320. SelectTree FORM_FIND
  321. dummy$=UCASE$(getobj_text$(FIND_SEARCHFOR))
  322. IF dummy$="" THEN EXIT SUB
  323. FOR dummy=1 TO total_records    ' Search all records using chosen fields for a match!
  324.     IF getobj_shortcut(FIND_TITLE)=14 THEN IF INSTR(UCASE$(book$(0,dummy)),dummy$) THEN CALL UPDATE_FIND(dummy) : EXIT SUB
  325.     IF getobj_shortcut(FIND_FORENAME)=14 THEN IF INSTR(UCASE$(book$(1,dummy)),dummy$) THEN CALL UPDATE_FIND(dummy) : EXIT SUB
  326.     IF getobj_shortcut(FIND_SURNAME)=14 THEN IF INSTR(UCASE$(book$(2,dummy)),dummy$) THEN CALL UPDATE_FIND(dummy) : EXIT SUB
  327.     IF getobj_shortcut(FIND_STREET)=14 THEN IF INSTR(UCASE$(book$(3,dummy)),dummy$) THEN CALL UPDATE_FIND(dummy) : EXIT SUB
  328.     IF getobj_shortcut(FIND_TOWN)=14 THEN IF INSTR(UCASE$(book$(4,dummy)),dummy$) THEN CALL UPDATE_FIND(dummy) : EXIT SUB
  329.     IF getobj_shortcut(FIND_COUNTY)=14 THEN IF INSTR(UCASE$(book$(5,dummy)),dummy$) THEN CALL UPDATE_FIND(dummy) : EXIT SUB
  330.     IF getobj_shortcut(FIND_POSTCODE)=14 THEN IF INSTR(UCASE$(book$(6,dummy)),dummy$) THEN CALL UPDATE_FIND(dummy) : EXIT SUB
  331.     IF getobj_shortcut(FIND_COUNTRY)=14 THEN IF INSTR(UCASE$(book$(7,dummy)),dummy$) THEN CALL UPDATE_FIND(dummy) : EXIT SUB
  332.     IF getobj_shortcut(FIND_PHONE)=14 THEN IF INSTR(UCASE$(book$(8,dummy)),dummy$) THEN CALL UPDATE_FIND(dummy) : EXIT SUB
  333.     IF getobj_shortcut(FIND_FAX)=14 THEN IF INSTR(UCASE$(book$(9,dummy)),dummy$) THEN CALL UPDATE_FIND(dummy) : EXIT SUB
  334.     IF getobj_shortcut(FIND_EMAIL)=14 THEN IF INSTR(UCASE$(book$(10,dummy)),dummy$) THEN CALL UPDATE_FIND(dummy) : EXIT SUB
  335. NEXT dummy
  336. junk=xalert(3,"[1]["+MyProgram$+":|Search unsuccessful - sorry!][OK]")
  337. END SUB
  338.  
  339.  
  340. SUB UPDATE_FIND (BYVAL record)
  341. SHARED current_record,total_records,main_handle,MyProgram$
  342.  
  343. SelectTree FORM_MAIN
  344. current_record=record
  345. CALL UPDATE_DISPLAY : redraw_object MAIN_BACKDROP
  346. RenameWindow main_handle,MyProgram$+" : Record"+STR$(current_record)+" of"+STR$(total_records)
  347. END SUB
  348.  
  349.  
  350. SUB RECORD_BACK
  351. SHARED current_record,total_records,main_handle,MyProgram$
  352.  
  353. SelectTree FORM_MAIN
  354. IF (current_record-1)>0 THEN
  355.     DECR current_record : CALL UPDATE_DISPLAY
  356.     redraw_object MAIN_BACKDROP
  357.     RenameWindow main_handle,MyProgram$+" : Record"+STR$(current_record)+" of"+STR$(total_records)
  358. END IF
  359. END SUB
  360.  
  361.  
  362. SUB RECORD_FORWARD
  363. SHARED current_record,total_records,main_handle,MyProgram$
  364.  
  365. IF (current_record+1)<max_records THEN
  366.     allchange=1
  367.     INCR current_record : IF current_record>total_records THEN total_records=current_record
  368.     CALL UPDATE_DISPLAY : redraw_object MAIN_BACKDROP
  369.     RenameWindow main_handle,MyProgram$+" : Record"+STR$(current_record)+" of"+STR$(total_records)
  370. ELSE
  371.     junk=xalert(3,"[1]["+MyProgram$+":|No more records may be |created - sorry!][OK]")
  372. END IF
  373. END SUB
  374.  
  375.  
  376. SUB RECORD_FIRST
  377. SHARED current_record,total_records,main_handle,MyProgram$
  378.  
  379. SelectTree FORM_MAIN
  380. IF total_records>0 THEN
  381.     current_record=1 : CALL UPDATE_DISPLAY
  382.     redraw_object MAIN_BACKDROP
  383.     RenameWindow main_handle,MyProgram$+" : Record"+STR$(current_record)+" of"+STR$(total_records)
  384. END IF
  385. END SUB
  386.  
  387.  
  388. SUB RECORD_LAST
  389. SHARED current_record,total_records,main_handle,MyProgram$
  390.  
  391. SelectTree FORM_MAIN
  392. IF total_records>0 THEN
  393.     current_record=total_records : CALL UPDATE_DISPLAY
  394.     redraw_object MAIN_BACKDROP
  395.     RenameWindow main_handle,MyProgram$+" : Record"+STR$(current_record)+" of"+STR$(total_records)
  396. END IF
  397. END SUB
  398.  
  399.  
  400. SUB PRINT_BOOK
  401. SHARED print_handle
  402. STATIC dummy$
  403.  
  404. dummy$=MyProgram$+" : Print"
  405. print_handle=OpenFormWindow(dummy$,FORM_PRINT,PRINT_FROM,PRINT_CANCEL,VARPTRS(closeFORM_PRINT))
  406. END SUB
  407.  
  408.  
  409. SUB DELETE_RECORD
  410. SHARED book$(2),current_record,total_records,main_handle
  411. STATIC dummy,record
  412.  
  413. SelectTree FORM_MAIN
  414. IF total_records=0 THEN EXIT SUB
  415. MOUSE 2
  416. IF current_record<total_records THEN            ' Delete current record
  417.     FOR record=current_record TO total_records
  418.         FOR dummy=MAIN_TITLE TO MAIN_EMAIL
  419.             book$(dummy-MAIN_TITLE,record)=book$(dummy-MAIN_TITLE,record+1)
  420.         NEXT dummy
  421.     NEXT record
  422. ELSE
  423.     FOR dummy=MAIN_TITLE TO MAIN_EMAIL
  424.         book$(dummy-MAIN_TITLE,total_records)=""
  425.     NEXT dummy
  426.     DECR current_record
  427. END IF
  428. DECR total_records        ' Workout new total and update display
  429. CALL UPDATE_DISPLAY : redraw_object MAIN_BACKDROP
  430. RenameWindow main_handle,MyProgram$+" : Record"+STR$(current_record)+" of"+STR$(total_records)
  431. DO
  432. LOOP UNTIL MOUSE(2)=0        ' Wait for mouse button to be released to make sure only
  433. MOUSE 0                        ' a single record is deleted at a time!
  434. END SUB
  435.  
  436.  
  437. SUB SORT_BOOK
  438. SHARED book$(2),current_record,total_records,main_handle
  439. STATIC dummy,record,dummy$(),i
  440.  
  441. SelectTree FORM_MAIN
  442. MOUSE 2
  443. DIM dummy$(10,max_records)
  444. FOR record=1 TO total_records
  445.     FOR dummy=MAIN_TITLE TO MAIN_EMAIL
  446.         dummy$(dummy-MAIN_TITLE,record)=book$(dummy-MAIN_TITLE,record)
  447.     NEXT dummy
  448.     FOR i=record-1 TO 1 STEP -1
  449.         IF UCASE$(book$(MAIN_SURNAME-MAIN_TITLE,i)+book$(MAIN_FORENAME-MAIN_TITLE,i))<UCASE$(dummy$(MAIN_SURNAME-MAIN_TITLE,record)+dummy$(MAIN_FORENAME-MAIN_TITLE,record)) THEN EXIT FOR
  450.         FOR dummy=MAIN_TITLE TO MAIN_EMAIL
  451.             book$(dummy-MAIN_TITLE,i+1)=book$(dummy-MAIN_TITLE,i)
  452.         NEXT dummy
  453.     NEXT i
  454.     FOR dummy=MAIN_TITLE TO MAIN_EMAIL
  455.         book$(dummy-MAIN_TITLE,i+1)=dummy$(dummy-MAIN_TITLE,record)
  456.     NEXT dummy
  457. NEXT record
  458. ERASE dummy$
  459. CALL UPDATE_DISPLAY : redraw_object MAIN_BACKDROP
  460. RenameWindow main_handle,MyProgram$+" : Record"+STR$(current_record)+" of"+STR$(total_records)
  461. MOUSE 0
  462. END SUB
  463.  
  464.  
  465. SUB PRINT_RECORDS
  466. SHARED book$(2),current_record,total_records
  467. SHARED fspath$,fsmessage$
  468. STATIC from_record,to_record,myfile,record,dummy,file$,fsname$
  469.  
  470. SelectTree FORM_PRINT
  471. from_record=VAL(getobj_text$(PRINT_FROM))
  472. to_record=VAL(getobj_text$(PRINT_TO))
  473. IF (from_record OR to_record)<1 THEN EXIT SUB
  474. IF to_record=0 THEN to_record=total_records
  475. IF to_record>total_records THEN to_record=total_records
  476.  
  477. IF getobj_shortcut(PRINT_DISK)=12 THEN        ' If output to disk, open file first
  478.     fspath$=CURDIR$+"\*.PRT" : fsmessage$="Print..." : file$=FileSelect$ (fsname$,2)
  479.     IF fsname$="" THEN EXIT SUB
  480.     myfile=FREEFILE
  481.     OPEN file$ FOR OUTPUT AS #myfile
  482. END IF
  483.  
  484. FOR record=from_record TO to_record
  485.     IF getobj_shortcut(PRINT_TITLE)=14 THEN
  486.         IF getobj_shortcut(PRINT_DISK)<>12 THEN
  487.             IF ONLINE=0 THEN EXIT SUB
  488.             LPRINT book$(0,record)
  489.         ELSE
  490.             PRINT #myfile,book$(0,record)
  491.         END IF
  492.     END IF
  493.     IF getobj_shortcut(PRINT_FORENAME)=14 THEN
  494.         IF getobj_shortcut(PRINT_DISK)<>12 THEN
  495.             IF ONLINE=0 THEN EXIT SUB
  496.             LPRINT book$(1,record)
  497.         ELSE
  498.             PRINT #myfile,book$(1,record)
  499.         END IF
  500.     END IF
  501.     IF getobj_shortcut(PRINT_SURNAME)=14 THEN
  502.         IF getobj_shortcut(PRINT_DISK)<>12 THEN
  503.             IF ONLINE=0 THEN EXIT SUB
  504.             LPRINT book$(2,record)
  505.         ELSE
  506.             PRINT #myfile,book$(2,record)
  507.         END IF
  508.     END IF
  509.     IF getobj_shortcut(PRINT_STREET)=14 THEN
  510.         IF getobj_shortcut(PRINT_DISK)<>12 THEN
  511.             IF ONLINE=0 THEN EXIT SUB
  512.             LPRINT book$(3,record)
  513.         ELSE
  514.             PRINT #myfile,book$(3,record)
  515.         END IF
  516.     END IF
  517.     IF getobj_shortcut(PRINT_TOWN)=14 THEN
  518.         IF getobj_shortcut(PRINT_DISK)<>12 THEN
  519.             IF ONLINE=0 THEN EXIT SUB
  520.             LPRINT book$(4,record)
  521.         ELSE
  522.             PRINT #myfile,book$(4,record)
  523.         END IF
  524.     END IF
  525.     IF getobj_shortcut(PRINT_COUNTY)=14 THEN
  526.         IF getobj_shortcut(PRINT_DISK)<>12 THEN
  527.             IF ONLINE=0 THEN EXIT SUB
  528.             LPRINT book$(5,record)
  529.         ELSE
  530.             PRINT #myfile,book$(5,record)
  531.         END IF
  532.     END IF
  533.     IF getobj_shortcut(PRINT_POSTCODE)=14 THEN
  534.         IF getobj_shortcut(PRINT_DISK)<>12 THEN
  535.             IF ONLINE=0 THEN EXIT SUB
  536.             LPRINT book$(6,record)
  537.         ELSE
  538.             PRINT #myfile,book$(6,record)
  539.         END IF
  540.     END IF
  541.     IF getobj_shortcut(PRINT_COUNTRY)=14 THEN
  542.         IF getobj_shortcut(PRINT_DISK)<>12 THEN
  543.             IF ONLINE=0 THEN EXIT SUB
  544.             LPRINT book$(7,record)
  545.         ELSE
  546.             PRINT #myfile,book$(7,record)
  547.         END IF
  548.     END IF
  549.     IF getobj_shortcut(PRINT_PHONE)=14 THEN
  550.         IF getobj_shortcut(PRINT_DISK)<>12 THEN
  551.             IF ONLINE=0 THEN EXIT SUB
  552.             LPRINT book$(8,record)
  553.         ELSE
  554.             PRINT #myfile,book$(8,record)
  555.         END IF
  556.     END IF
  557.     IF getobj_shortcut(PRINT_FAX)=14 THEN
  558.         IF getobj_shortcut(PRINT_DISK)<>12 THEN
  559.             IF ONLINE=0 THEN EXIT SUB
  560.             LPRINT book$(9,record)
  561.         ELSE
  562.             PRINT #myfile,book$(9,record)
  563.         END IF
  564.     END IF
  565.     IF getobj_shortcut(PRINT_EMAIL)=14 THEN
  566.         IF getobj_shortcut(PRINT_DISK)<>12 THEN
  567.             IF ONLINE=0 THEN EXIT SUB
  568.             LPRINT book$(10,record)
  569.         ELSE
  570.             PRINT #myfile,book$(10,record)
  571.         END IF
  572.     END IF
  573. NEXT record
  574. IF getobj_shortcut(PRINT_DISK)=12 THEN CLOSE #myfile
  575. END SUB
  576.  
  577. '[*END OF FILE*]
  578.