388 lines
14 KiB
Plaintext
Executable File
388 lines
14 KiB
Plaintext
Executable File
MESSAGE "Writing rolodex procedures to library..."
|
|
|
|
PROC Rolodex_Wait(M_Tbl)
|
|
PRIVATE Fld_Prompt, Answer_Menu
|
|
|
|
PROC Rolodex_Answer_Wait_Proc(TriggerType, EventInfo, CycleNumber)
|
|
PRIVATE Answer_Tbl, Menu_Tag, Return_Code
|
|
if (TriggerType = "ARRIVEFIELD") then
|
|
PROMPT Fld_Prompt[FIELD()]
|
|
RETURN 1
|
|
endif
|
|
if (EventInfo["TYPE"] = "MESSAGE") AND
|
|
(EventInfo["MESSAGE"] = "MENUSELECT") AND
|
|
(SUBSTR(EventInfo["MENUTAG"],1,2) = "R_") then
|
|
Menu_Tag = EventInfo["MENUTAG"]
|
|
SHOWPULLDOWN
|
|
ENDMENU
|
|
CLEARSPEEDBAR
|
|
MESSAGE "One moment please..."
|
|
ECHO OFF
|
|
SWITCH
|
|
CASE (Menu_Tag = "R_Envelope") :
|
|
FORMKEY
|
|
Print_Report(Subset_Table, "1", Rpt_St["Envelope"])
|
|
CASE (Menu_Tag = "R_Phone") OR (Menu_Tag = "R_Phone_Address") OR (Menu_Tag = "R_Rolodex") :
|
|
{Ask} TYPEIN Subset_Table ENTER
|
|
TAB CHECKPLUS EXAMPLE "LINK" TYPEIN "!"
|
|
{Ask} {Phone} CHECKPLUS TAB CHECK EXAMPLE "LINK"
|
|
DO_IT!
|
|
Answer_Tbl = PRIVDIR() + TABLE()
|
|
CLEARIMAGE ; erase answer image
|
|
MOVETO "Phone(Q)"
|
|
CLEARIMAGE ; erase 1st query image
|
|
MOVETO (Subset_Table + "(Q)")
|
|
CLEARIMAGE ; erase 2nd query image
|
|
if ISEMPTY(Answer_Tbl) then
|
|
No_Matches_Found()
|
|
else if (Menu_Tag = "R_Phone") then
|
|
COPYREPORT "Phone" "1" Answer_Tbl "R"
|
|
Print_Report(Answer_Tbl, "R", Rpt_St["Phone_Book"])
|
|
else if (Menu_Tag = "R_Phone_Address") then
|
|
COPYREPORT "Phone" "2" Answer_Tbl "R"
|
|
Print_Report(Answer_Tbl, "R", Rpt_St["Phone_Book"])
|
|
else COPYREPORT "Phone" "3" Answer_Tbl "R"
|
|
Print_Report(Answer_Tbl, "R", Rpt_St["Rolodex_Info"])
|
|
endif
|
|
endif
|
|
endif
|
|
ENDSWITCH
|
|
MOVETO Subset_Table
|
|
FORMKEY
|
|
ECHO NORMAL
|
|
EXECPROC "Rolodex_Answer_Menu"
|
|
RETURN 1
|
|
else Return_Code = Answer_Table_Wait_Proc(TriggerType, EventInfo, CycleNumber)
|
|
if (SYSMODE() = "Main") then
|
|
MENUENABLE "Assemble"
|
|
else MENUDISABLE "Assemble"
|
|
endif
|
|
RETURN Return_Code
|
|
endif
|
|
ENDPROC; Rolodex_Answer_Wait_Proc
|
|
|
|
PROC Ask_Rolodex()
|
|
; user selects rolodex records based on search criteria
|
|
PRIVATE Id, Last, Title, A1, A2, A3, City, Abrev, Zip, Group, Phone_No,
|
|
I, Form_List, Form_Num
|
|
MOVETO M_Tbl
|
|
Form_Num = FORM()
|
|
Id = [Id]
|
|
Last = ""
|
|
Title = ""
|
|
A1 = ""
|
|
A2 = ""
|
|
A3 = ""
|
|
City = ""
|
|
Abrev = ""
|
|
Zip = ""
|
|
Group = ""
|
|
Phone_No = ""
|
|
FORMKEY ; switch to table view
|
|
SHOWPULLDOWN ; hide rolodex main menu
|
|
ENDMENU
|
|
CLEARSPEEDBAR ; clear rolodex speedber
|
|
PROMPT "Enter selection criteria. Press Search to find matches, Cancel to quit."
|
|
MOUSE SHOW
|
|
SHOWDIALOG "Rolodex Selection Criteria"
|
|
@3, 15 HEIGHT 17 WIDTH 50
|
|
@1, 4 ?? "Id"
|
|
ACCEPT @1,15
|
|
WIDTH 25 "A80" PICTURE "*!"
|
|
TAG ""
|
|
TO Id
|
|
@2, 4 ?? "Last Name"
|
|
ACCEPT @2,15
|
|
WIDTH 25 "A80" PICTURE "*!"
|
|
TAG ""
|
|
TO Last
|
|
@3, 4 ?? "Group"
|
|
ACCEPT @3,15
|
|
WIDTH 25 "A45"
|
|
TAG ""
|
|
TO Group
|
|
@4, 4 ?? "Title"
|
|
ACCEPT @4,15
|
|
WIDTH 25 "A45" PICTURE "*!"
|
|
TAG ""
|
|
TO Title
|
|
@5, 4 ?? "Street 1"
|
|
ACCEPT @5,15
|
|
WIDTH 25 "A45"
|
|
TAG ""
|
|
TO A1
|
|
@6, 4 ?? "Street 2"
|
|
ACCEPT @6,15
|
|
WIDTH 25 "A45"
|
|
TAG ""
|
|
TO A2
|
|
@7, 4 ?? "Street 3"
|
|
ACCEPT @7,15
|
|
WIDTH 25 "A45"
|
|
TAG ""
|
|
TO A3
|
|
@8, 4 ?? "City"
|
|
ACCEPT @8,15
|
|
WIDTH 25 "A80" PICTURE "*!"
|
|
TAG ""
|
|
TO City
|
|
@9, 4 ?? "State"
|
|
ACCEPT @9,15
|
|
WIDTH 25 "A45" PICTURE "*!"
|
|
TAG ""
|
|
TO Abrev
|
|
@10, 4 ?? "Zip Code"
|
|
ACCEPT @10,15
|
|
WIDTH 25 "A45"
|
|
TAG ""
|
|
TO Zip
|
|
@11, 4 ?? "Phone No."
|
|
ACCEPT @11,15
|
|
WIDTH 25 "A45"
|
|
TAG ""
|
|
TO Phone_No
|
|
PUSHBUTTON @13,12 WIDTH 10
|
|
"~S~earch"
|
|
OK
|
|
DEFAULT
|
|
VALUE ""
|
|
TAG "OK"
|
|
TO Button
|
|
PUSHBUTTON @13,25 WIDTH 10
|
|
"~C~ancel"
|
|
CANCEL
|
|
VALUE ""
|
|
TAG "Cancel"
|
|
TO Button
|
|
ENDDIALOG
|
|
MOUSE HIDE
|
|
PROMPT ""
|
|
if (RetVal = True) then
|
|
MESSAGE "Searching..."
|
|
ECHO OFF
|
|
if NOT ISBLANK(Phone_No) then
|
|
{Ask} {Phone} TAB EXAMPLE "LINK" TAB TYPEIN Phone_No
|
|
{Ask} {Rolodex} Check TAB EXAMPLE "LINK" ; only 1 Id per phone #
|
|
if NOT ISBLANK(Id) then
|
|
TYPEIN ", "
|
|
endif
|
|
else {Ask} {Rolodex} CheckPlus
|
|
endif
|
|
[Id] = Id
|
|
[Title] = Title
|
|
[Last] = Last
|
|
[A1] = A1
|
|
[A2] = A2
|
|
[A3] = A3
|
|
[City] = City
|
|
[Abrev] = Abrev
|
|
[Zip] = Zip
|
|
[Group] = Group
|
|
DO_IT!
|
|
; if error in query form, abort selection process
|
|
if (TABLE() <> "Answer") then
|
|
; erase query image(s)
|
|
WHILE (IMAGETYPE() = "Query")
|
|
CLEARIMAGE
|
|
ENDWHILE
|
|
MESSAGE "Invalid selection criteria. Query unsuccessful."
|
|
FORMKEY
|
|
RETURN
|
|
endif
|
|
Subset_Table = PRIVDIR() + "SUBSET"
|
|
RENAME TABLE() Subset_Table
|
|
MOVETO "Rolodex(Q)" CLEARIMAGE ; erase rolodex query image
|
|
if NOT ISBLANK(Phone_No) then
|
|
MOVETO "Phone(Q)" CLEARIMAGE
|
|
endif
|
|
MOVETO Subset_Table
|
|
if ISEMPTY(Subset_Table) then
|
|
CLEARIMAGE
|
|
No_Matches_Found()
|
|
else ; copy form and display on screen
|
|
COPYFORM Main_Table Form_Num Subset_Table "1"
|
|
COPYREPORT Main_Table "1" Subset_Table "1"
|
|
View_Answer_Table(Subset_Table, 2, 2)
|
|
FORMTABLES Subset_Table "1" Form_List
|
|
FOR I FROM 1 to ARRAYSIZE(Form_List)
|
|
MOVETO Form_List[I]
|
|
IMAGERIGHTS READONLY ; make all detail records uneditable
|
|
ENDFOR
|
|
MOVETO Subset_Table
|
|
Rolodex_Answer_Wait()
|
|
if ISTABLE(Subset_Table) then ; delete subset table
|
|
ECHO OFF
|
|
DELETE(Subset_Table)
|
|
endif
|
|
endif
|
|
endif
|
|
FORMKEY ; return to form view
|
|
ENDPROC; Ask_Rolodex
|
|
|
|
PROC Rolodex_Answer_Menu()
|
|
SHOWPULLDOWN
|
|
"Modify" : "Toggle between edit and main mode" : "Modify"
|
|
SUBMENU
|
|
"Edit Mode - F9" : "Allow data to be edited, deleted, etc." : "Edit\Mode",
|
|
"Main Mode - F2" : "Discontinue editing" : "Main\Mode"
|
|
ENDSUBMENU,
|
|
"Reports" : "Choose report to generate" : "Reports"
|
|
SUBMENU
|
|
"Envelope" : "Create an envelope" : "R_Envelope",
|
|
"Phone Book" : "Generate list of phone numbers & addresses" : ""
|
|
SUBMENU
|
|
"Address & Phone #" : "List address & phone numbers" : "R_Phone_Address",
|
|
"Phone # Only" : "List only names & phone numbers" : "R_Phone"
|
|
ENDSUBMENU,
|
|
"Rolodex Info" : "All info in rolodex" : "R_Rolodex"
|
|
ENDSUBMENU,
|
|
"Assemble" : "Combine data and forms into documents" : "Assemble",
|
|
"Quit" : "Return to previous menu" : ""
|
|
SUBMENU
|
|
"No " : "Continue working with selected data" : "Return\No",
|
|
"Yes - F8" : "Return to complete data set" : "Return\Yes"
|
|
ENDSUBMENU
|
|
ENDMENU
|
|
if (SYSMODE() = "Main") then
|
|
MENUDISABLE "Main\Mode"
|
|
else MENUDISABLE "Edit\Mode"
|
|
MENUDISABLE "Reports"
|
|
MENUDISABLE "Assemble"
|
|
endif
|
|
Rolodex_Speedbar()
|
|
ENDPROC; Rolodex_Answer_Menu
|
|
|
|
PROC Rolodex_Answer_Wait()
|
|
Rolodex_Answer_Menu()
|
|
Sound_Off()
|
|
ECHO NORMAL
|
|
Message_Box("Search Completed", "Matching Rolodex Entries: " + STRVAL(NRECORDS(Subset_Table)))
|
|
WAIT WORKSPACE
|
|
PROC "Rolodex_Answer_Wait_Proc"
|
|
MESSAGE "MENUSELECT"
|
|
TRIGGER "ARRIVEFIELD"
|
|
KEY -60, -66, -67, -83, -50
|
|
; DO_IT Clear Edit Delete Alt-M
|
|
; F2 F8 F9 DEL Memo
|
|
ENDWAIT
|
|
CLEARSPEEDBAR
|
|
MESSAGE ""
|
|
ENDPROC; Rolodex_Answer_Wait
|
|
|
|
PROC Rolodex_Wait_Proc(TriggerType, EventInfo, CycleNumber)
|
|
PRIVATE Key_Code, Menu_Pick
|
|
if (TriggerType = "ARRIVEFIELD") then
|
|
PROMPT Fld_Prompt[FIELD()]
|
|
RETURN 1
|
|
endif
|
|
if (EventInfo["TYPE"] = "KEY") then
|
|
Key_Code = EventInfo["KEYCODE"]
|
|
SWITCH
|
|
; F9 - COEDIT
|
|
CASE (Key_Code = -67) : RETURN Main_Table_Edit()
|
|
; F2 - DO_IT!
|
|
CASE (Key_Code = -60) : if ISEMPTY(Main_Table) then
|
|
RETURN Main_Table_Clear()
|
|
else RETURN Main_Table_End_Edit()
|
|
endif
|
|
; F8 - CLEAR
|
|
CASE (Key_Code = -66) : RETURN Main_Table_Clear()
|
|
; Alt-M - Memo
|
|
CASE (Key_Code = -50) : Display_Memo(Main_Table)
|
|
Main_Table_Menu()
|
|
Rolodex_Speedbar()
|
|
RETURN 1
|
|
; DELETE
|
|
CASE (Key_Code = -83) : if (SYSMODE() = "CoEdit") then
|
|
RETURN Display_Delete_Box()
|
|
else RETURN 1
|
|
endif
|
|
; ALT-F - Switch form
|
|
CASE (Key_Code = -33) : if (SYSMODE() = "Main") then
|
|
ECHO OFF
|
|
MOVETO M_Tbl
|
|
if (FORM() = "1") then
|
|
PICKFORM 4
|
|
else if (FORM() = "4") then
|
|
PICKFORM 1
|
|
endif
|
|
endif
|
|
ECHO NORMAL
|
|
endif
|
|
RETURN 1
|
|
OTHERWISE : SOUND 400 100 RETURN 1
|
|
ENDSWITCH
|
|
endif
|
|
if (EventInfo["MESSAGE"] = "MENUSELECT") then
|
|
Menu_Pick = EventInfo["MENUTAG"]
|
|
SWITCH
|
|
CASE (Menu_Pick = "Edit\Mode") : RETURN Main_Table_Edit()
|
|
CASE (Menu_Pick = "Main\Mode") : if ISEMPTY(Main_Table) then
|
|
RETURN Main_Table_Clear()
|
|
else RETURN Main_Table_End_Edit()
|
|
endif
|
|
CASE (Menu_Pick = "Ask") : Ask_Rolodex()
|
|
Main_Table_Menu()
|
|
Rolodex_Speedbar()
|
|
RETURN 1
|
|
CASE (Menu_Pick = "Close\Yes") : RETURN Main_Table_Clear()
|
|
CASE (Menu_Pick = "Close\No") : RETURN 1
|
|
OTHERWISE : SOUND 400 100 RETURN 1
|
|
ENDSWITCH
|
|
endif
|
|
SOUND 400 100 RETURN 1 ; safety valve
|
|
ENDPROC; Rolodex_Wait_Proc
|
|
|
|
PROC Rolodex_Speedbar()
|
|
CLEARSPEEDBAR
|
|
SPEEDBAR "~F10~ Menu":-68, "~Alt-M~ Memo":-50
|
|
if ISASSIGNED(Fld_Prompt[FIELD()]) then
|
|
PROMPT Fld_Prompt[FIELD()]
|
|
else PROMPT ""
|
|
endif
|
|
ENDPROC; Rolodex_Speedbar
|
|
|
|
; MAIN PROCEDURE BEGINS HERE
|
|
Answer_Menu = "Rolodex_Answer_Menu"
|
|
DYNARRAY Fld_Prompt[]
|
|
Fld_Prompt["Id"] = "Unique key to identify & sort rolodex (required)"
|
|
Fld_Prompt["Last"] = "Last name or company name"
|
|
Fld_Prompt["Prefix"] = "Appropriate title, e.g. Mr., Ms., Dr., etc."
|
|
Fld_Prompt["First"] = "First name of individual(s)"
|
|
Fld_Prompt["Middle"] = "Middle name or initial"
|
|
Fld_Prompt["Suffix"] = "Appropriate title, e.g. Jr., Sr., M.D., etc."
|
|
Fld_Prompt["Group"] = "Press F1 to select group for this entry"
|
|
Fld_Prompt["Title"] = "Official title or postion, e.g. President"
|
|
Fld_Prompt["A1"] = "First line of address, or firm name"
|
|
Fld_Prompt["A2"] = "Second line of address"
|
|
Fld_Prompt["A3"] = "Third line of address"
|
|
Fld_Prompt["City"] = "City of mailing address"
|
|
Fld_Prompt["Abrev"] = "Press F1 to select two letter state abbreviation."
|
|
Fld_Prompt["Zip"] = "Zip code, 5 or 9 digits"
|
|
Fld_Prompt["Email"] = "Email address"
|
|
Fld_Prompt["DOB"] = "Date of Birth: ##/##/##"
|
|
Fld_Prompt["SS#"] = "Social Security No.: ###-##-###"
|
|
Fld_Prompt["Legal_Status"] = "Petitioner/Respondent, etc."
|
|
Fld_Prompt["Memo"] = "Add or edit notes for this rolodex entry"
|
|
Fld_Prompt["Location"] = "Location for phone no., e.g. Office, Home, etc."
|
|
Fld_Prompt["Phone"] = "Phone # formats: ###-####, 1-###-###-####"
|
|
Fld_Prompt["Identifier"] = "Name of variable"
|
|
Fld_Prompt["Response"] = "Text to replace variable"
|
|
Main_Table_View(M_Tbl, 2, 2)
|
|
Rolodex_Speedbar()
|
|
ECHO NORMAL
|
|
WAIT WORKSPACE
|
|
PROC "Rolodex_Wait_Proc"
|
|
MESSAGE "MENUSELECT"
|
|
TRIGGER "ARRIVEFIELD"
|
|
KEY -60, -66, -67, -83, -50, -33
|
|
; DO_IT Clear Edit Delete Alt-M Alt-F
|
|
; F2 F8 F9 DEL Memo Switch form
|
|
ENDWAIT
|
|
CLEARSPEEDBAR
|
|
PROMPT ""
|
|
MESSAGE ""
|
|
ENDPROC
|
|
WRITELIB Off_Lib Rolodex_Wait
|
|
|
|
RELEASE PROCS ALL |