home *** CD-ROM | disk | FTP | other *** search
- MEMBER('PROGTOOL.clw') ! This is a MEMBER module
-
- ! Comment Block Extension Template ---------------------------------------------
- OMIT('! ---')
-
- Created 5/21/95 at 6:01PM
- Changed 5/28/95 at 10:03AM
-
- These comments were entered in the Programmer Comments
- embed point in the procedure used for browsing people.
- This is a handy place to keep notes about assumptions
- made in the procedure, special techniques used, or
- other special information for the programmer.
-
- Note that this source code also contains the source
- code generated by the ScaleWindow template; take a
- look to see the complex code generated by an
- extension template with a single prompt.
-
- ! -------------------------------------------------------End Programmer Comments
-
- PeoView PROCEDURE
-
- LocalRequest LONG,AUTO
- OriginalRequest LONG,AUTO
- LocalResponse LONG,AUTO
- WindowOpened LONG
- WindowInitialized LONG
- ForceRefresh LONG,AUTO
- RecordFiltered LONG
- Lcl:FullName STRING(25)
- CurrentSelected LONG,AUTO
- Queue:Browse QUEUE ! Browsing Queue
- BRW1::Lcl:FullName LIKE(Lcl:FullName) ! Queue Display field
- BRW1::Peo:LastName LIKE(Peo:LastName) ! Queue Display field
- BRW1::Peo:FirstName LIKE(Peo:FirstName) ! Queue Display field
- BRW1::Position STRING(255) ! Queue POSITION information
- BRW1::Mark BYTE ! Queue POSITION information
- END ! END (Browsing Queue)
- BRW1::QuickScan BYTE ! Flag for Range/Filter test
- BRW1::RecordStatus BYTE ! Flag for Range/Filter test
- BRW1::InitializePage BYTE ! Flag for Range/Filter test
- BRW1::ItemsToFill LONG ! Controls records retrieved
- BRW1::MaxItemsInList LONG ! Retrieved after window opened
- BRW1::LocatedPosition STRING(255) ! POSITION of located record
- BRW1::QueuePointer LONG ! Queue position of located record
- BRW1::NextChoice LONG ! Queue position of located record
- BRW1::NewSelectPosted BYTE ! Queue position of located record
- BRW1::CurrentScroll BYTE ! Queue position of scroll thumb
- BRW1::CurrentScrollRecord LONG ! Queue position of scroll thumb
- BrowseWindow WINDOW('Browse People'),AT(,,140,100),FONT('Arial',8,,),CENTER,IMM,ICON('PEOPLE.ICO'),SYSTEM,GRAY,MAX,RESIZE,MDI
- LIST,AT(4,4,88,92),MSG('Browsing Records'),USE(?List),IMM,VSCROLL,FORMAT('100L~Name~@s25@'),FROM(Queue:Browse)
- BUTTON('&Insert'),AT(96,4,40,12),KEY(InsertKey),USE(?Insert)
- BUTTON('C&hange'),AT(96,20,40,12),KEY(CtrlEnter),USE(?Change),DEFAULT
- BUTTON('&Delete'),AT(96,36,40,12),KEY(DeleteKey),USE(?Delete)
- BUTTON('&Select'),AT(96,52,40,12),KEY(EnterKey),USE(?Select)
- BUTTON('&Close'),AT(96,84,40,12),USE(?Close)
- END
- ! ProgTool ScaleWindow Template
- ! ?List LIST
- LIST1Pos SHORT,DIM(4)
- LIST1Old SHORT,DIM(4)
- LIST1Ratio DECIMAL(3,3),DIM(4)
- ! ?Insert BUTTON
- BUTTON2Pos SHORT,DIM(4)
- BUTTON2Old SHORT,DIM(4)
- BUTTON2Ratio DECIMAL(3,3),DIM(4)
- ! ?Change BUTTON
- BUTTON3Pos SHORT,DIM(4)
- BUTTON3Old SHORT,DIM(4)
- BUTTON3Ratio DECIMAL(3,3),DIM(4)
- ! ?Delete BUTTON
- BUTTON4Pos SHORT,DIM(4)
- BUTTON4Old SHORT,DIM(4)
- BUTTON4Ratio DECIMAL(3,3),DIM(4)
- ! ?Select BUTTON
- BUTTON5Pos SHORT,DIM(4)
- BUTTON5Old SHORT,DIM(4)
- BUTTON5Ratio DECIMAL(3,3),DIM(4)
- ! ?Close BUTTON
- BUTTON6Pos SHORT,DIM(4)
- BUTTON6Old SHORT,DIM(4)
- BUTTON6Ratio DECIMAL(3,3),DIM(4)
- OldWinPos REAL,DIM(4)
- WindowScaled Byte
- MinWinWidth Short
- MinWinHeight Short
- ! End Template
- CODE
- LocalRequest = GlobalRequest
- OriginalRequest = GlobalRequest
- LocalResponse = RequestCancelled
- ForceRefresh = False
- CLEAR(GlobalRequest)
- CLEAR(GlobalResponse)
- IF People::Used = 0
- CheckOpen(People,1)
- END
- People::Used += 1
- OPEN(BrowseWindow)
- WindowOpened=True
- INIRestoreWindow('PeoView','PROGTOOL.INI')
- ! ProgTool ScaleWindow Template
- WindowScaled = GETINI('PeoView','WindowScaled',0,'PROGTOOL' & '.INI')
- IF WindowScaled
- ! ?List LIST
- LIST1Ratio[1] = GETINI('PeoView','LIST' & '1' & 'XPOS',.1,'PROGTOOL' & '.INI')
- LIST1Ratio[2] = GETINI('PeoView','LIST' & '1' & 'YPOS',.1,'PROGTOOL' & '.INI')
- LIST1Ratio[3] = GETINI('PeoView','LIST' & '1' & 'Width',.1,'PROGTOOL' & '.INI')
- LIST1Ratio[4] = GETINI('PeoView','LIST' & '1' & 'Height',.1,'PROGTOOL' & '.INI')
- ! ?Insert BUTTON
- BUTTON2Ratio[1] = GETINI('PeoView','BUTTON' & '2' & 'XPOS',.1,'PROGTOOL' & '.INI')
- BUTTON2Ratio[2] = GETINI('PeoView','BUTTON' & '2' & 'YPOS',.1,'PROGTOOL' & '.INI')
- BUTTON2Ratio[3] = GETINI('PeoView','BUTTON' & '2' & 'Width',.1,'PROGTOOL' & '.INI')
- BUTTON2Ratio[4] = GETINI('PeoView','BUTTON' & '2' & 'Height',.1,'PROGTOOL' & '.INI')
- ! ?Change BUTTON
- BUTTON3Ratio[1] = GETINI('PeoView','BUTTON' & '3' & 'XPOS',.1,'PROGTOOL' & '.INI')
- BUTTON3Ratio[2] = GETINI('PeoView','BUTTON' & '3' & 'YPOS',.1,'PROGTOOL' & '.INI')
- BUTTON3Ratio[3] = GETINI('PeoView','BUTTON' & '3' & 'Width',.1,'PROGTOOL' & '.INI')
- BUTTON3Ratio[4] = GETINI('PeoView','BUTTON' & '3' & 'Height',.1,'PROGTOOL' & '.INI')
- ! ?Delete BUTTON
- BUTTON4Ratio[1] = GETINI('PeoView','BUTTON' & '4' & 'XPOS',.1,'PROGTOOL' & '.INI')
- BUTTON4Ratio[2] = GETINI('PeoView','BUTTON' & '4' & 'YPOS',.1,'PROGTOOL' & '.INI')
- BUTTON4Ratio[3] = GETINI('PeoView','BUTTON' & '4' & 'Width',.1,'PROGTOOL' & '.INI')
- BUTTON4Ratio[4] = GETINI('PeoView','BUTTON' & '4' & 'Height',.1,'PROGTOOL' & '.INI')
- ! ?Select BUTTON
- BUTTON5Ratio[1] = GETINI('PeoView','BUTTON' & '5' & 'XPOS',.1,'PROGTOOL' & '.INI')
- BUTTON5Ratio[2] = GETINI('PeoView','BUTTON' & '5' & 'YPOS',.1,'PROGTOOL' & '.INI')
- BUTTON5Ratio[3] = GETINI('PeoView','BUTTON' & '5' & 'Width',.1,'PROGTOOL' & '.INI')
- BUTTON5Ratio[4] = GETINI('PeoView','BUTTON' & '5' & 'Height',.1,'PROGTOOL' & '.INI')
- ! ?Close BUTTON
- BUTTON6Ratio[1] = GETINI('PeoView','BUTTON' & '6' & 'XPOS',.1,'PROGTOOL' & '.INI')
- BUTTON6Ratio[2] = GETINI('PeoView','BUTTON' & '6' & 'YPOS',.1,'PROGTOOL' & '.INI')
- BUTTON6Ratio[3] = GETINI('PeoView','BUTTON' & '6' & 'Width',.1,'PROGTOOL' & '.INI')
- BUTTON6Ratio[4] = GETINI('PeoView','BUTTON' & '6' & 'Height',.1,'PROGTOOL' & '.INI')
- MinWinWidth = GETINI('PeoView','MinWinWidth',100,'PROGTOOL' & '.INI')
- MinWinHeight = GETINI('PeoView','MinWinHeight',100,'PROGTOOL' & '.INI')
- DO ResizeWindow
- ELSE !Window has never been scaled
- OldWinPos[3] = BrowseWindow{Prop:Width}
- OldWinPos[4] = BrowseWindow{Prop:Height}
- MinWinWidth = OldWinPos[3]
- MinWinHeight = OldWinPos[4]
- ! ?List LIST
- GETPOSITION(?List,LIST1Old[1],LIST1Old[2],LIST1Old[3],LIST1Old[4])
- LIST1Ratio[1] = LIST1Old[1] / OldWinPos[3]
- LIST1Ratio[2] = LIST1Old[2] / OldWinPos[4]
- LIST1Ratio[3] = LIST1Old[3] / OldWinPos[3]
- LIST1Ratio[4] = LIST1Old[4] / OldWinPos[4]
- PUTINI('PeoView','LIST' & '1' & 'XPOS',LIST1Ratio[1],'PROGTOOL' & '.INI')
- PUTINI('PeoView','LIST' & '1' & 'YPOS',LIST1Ratio[2],'PROGTOOL' & '.INI')
- PUTINI('PeoView','LIST' & '1' & 'Width',LIST1Ratio[3],'PROGTOOL' & '.INI')
- PUTINI('PeoView','LIST' & '1' & 'Height',LIST1Ratio[4],'PROGTOOL' & '.INI')
- ! ?Insert BUTTON
- GETPOSITION(?Insert,BUTTON2Old[1],BUTTON2Old[2],BUTTON2Old[3],BUTTON2Old[4])
- BUTTON2Ratio[1] = BUTTON2Old[1] / OldWinPos[3]
- BUTTON2Ratio[2] = BUTTON2Old[2] / OldWinPos[4]
- BUTTON2Ratio[3] = BUTTON2Old[3] / OldWinPos[3]
- BUTTON2Ratio[4] = BUTTON2Old[4] / OldWinPos[4]
- PUTINI('PeoView','BUTTON' & '2' & 'XPOS',BUTTON2Ratio[1],'PROGTOOL' & '.INI')
- PUTINI('PeoView','BUTTON' & '2' & 'YPOS',BUTTON2Ratio[2],'PROGTOOL' & '.INI')
- PUTINI('PeoView','BUTTON' & '2' & 'Width',BUTTON2Ratio[3],'PROGTOOL' & '.INI')
- PUTINI('PeoView','BUTTON' & '2' & 'Height',BUTTON2Ratio[4],'PROGTOOL' & '.INI')
- ! ?Change BUTTON
- GETPOSITION(?Change,BUTTON3Old[1],BUTTON3Old[2],BUTTON3Old[3],BUTTON3Old[4])
- BUTTON3Ratio[1] = BUTTON3Old[1] / OldWinPos[3]
- BUTTON3Ratio[2] = BUTTON3Old[2] / OldWinPos[4]
- BUTTON3Ratio[3] = BUTTON3Old[3] / OldWinPos[3]
- BUTTON3Ratio[4] = BUTTON3Old[4] / OldWinPos[4]
- PUTINI('PeoView','BUTTON' & '3' & 'XPOS',BUTTON3Ratio[1],'PROGTOOL' & '.INI')
- PUTINI('PeoView','BUTTON' & '3' & 'YPOS',BUTTON3Ratio[2],'PROGTOOL' & '.INI')
- PUTINI('PeoView','BUTTON' & '3' & 'Width',BUTTON3Ratio[3],'PROGTOOL' & '.INI')
- PUTINI('PeoView','BUTTON' & '3' & 'Height',BUTTON3Ratio[4],'PROGTOOL' & '.INI')
- ! ?Delete BUTTON
- GETPOSITION(?Delete,BUTTON4Old[1],BUTTON4Old[2],BUTTON4Old[3],BUTTON4Old[4])
- BUTTON4Ratio[1] = BUTTON4Old[1] / OldWinPos[3]
- BUTTON4Ratio[2] = BUTTON4Old[2] / OldWinPos[4]
- BUTTON4Ratio[3] = BUTTON4Old[3] / OldWinPos[3]
- BUTTON4Ratio[4] = BUTTON4Old[4] / OldWinPos[4]
- PUTINI('PeoView','BUTTON' & '4' & 'XPOS',BUTTON4Ratio[1],'PROGTOOL' & '.INI')
- PUTINI('PeoView','BUTTON' & '4' & 'YPOS',BUTTON4Ratio[2],'PROGTOOL' & '.INI')
- PUTINI('PeoView','BUTTON' & '4' & 'Width',BUTTON4Ratio[3],'PROGTOOL' & '.INI')
- PUTINI('PeoView','BUTTON' & '4' & 'Height',BUTTON4Ratio[4],'PROGTOOL' & '.INI')
- ! ?Select BUTTON
- GETPOSITION(?Select,BUTTON5Old[1],BUTTON5Old[2],BUTTON5Old[3],BUTTON5Old[4])
- BUTTON5Ratio[1] = BUTTON5Old[1] / OldWinPos[3]
- BUTTON5Ratio[2] = BUTTON5Old[2] / OldWinPos[4]
- BUTTON5Ratio[3] = BUTTON5Old[3] / OldWinPos[3]
- BUTTON5Ratio[4] = BUTTON5Old[4] / OldWinPos[4]
- PUTINI('PeoView','BUTTON' & '5' & 'XPOS',BUTTON5Ratio[1],'PROGTOOL' & '.INI')
- PUTINI('PeoView','BUTTON' & '5' & 'YPOS',BUTTON5Ratio[2],'PROGTOOL' & '.INI')
- PUTINI('PeoView','BUTTON' & '5' & 'Width',BUTTON5Ratio[3],'PROGTOOL' & '.INI')
- PUTINI('PeoView','BUTTON' & '5' & 'Height',BUTTON5Ratio[4],'PROGTOOL' & '.INI')
- ! ?Close BUTTON
- GETPOSITION(?Close,BUTTON6Old[1],BUTTON6Old[2],BUTTON6Old[3],BUTTON6Old[4])
- BUTTON6Ratio[1] = BUTTON6Old[1] / OldWinPos[3]
- BUTTON6Ratio[2] = BUTTON6Old[2] / OldWinPos[4]
- BUTTON6Ratio[3] = BUTTON6Old[3] / OldWinPos[3]
- BUTTON6Ratio[4] = BUTTON6Old[4] / OldWinPos[4]
- PUTINI('PeoView','BUTTON' & '6' & 'XPOS',BUTTON6Ratio[1],'PROGTOOL' & '.INI')
- PUTINI('PeoView','BUTTON' & '6' & 'YPOS',BUTTON6Ratio[2],'PROGTOOL' & '.INI')
- PUTINI('PeoView','BUTTON' & '6' & 'Width',BUTTON6Ratio[3],'PROGTOOL' & '.INI')
- PUTINI('PeoView','BUTTON' & '6' & 'Height',BUTTON6Ratio[4],'PROGTOOL' & '.INI')
- PUTINI('PeoView','MinWinWidth',MinWinWidth,'PROGTOOL' & '.INI')
- PUTINI('PeoView','MinWinHeight',MinWinHeight,'PROGTOOL' & '.INI')
- PUTINI('PeoView','WindowScaled',1,'PROGTOOL' & '.INI')
- END
- ! End Template
- SET(Peo:NameKey)
- ?List{Prop:Alrt,251} = MouseLeft2
- IF LocalRequest = SelectRecord
- ?Select{Prop:Hide} = False
- ENABLE(?Select)
- ?Select{Prop:Default} = True
- ELSE
- ?Select{Prop:Hide} = True
- DISABLE(?Select)
- END
- ?List{Prop:Alrt,255} = InsertKey
- ?List{Prop:Alrt,254} = DeleteKey
- ?List{Prop:Alrt,253} = CtrlEnter
- ACCEPT
- CASE EVENT()
- OF EVENT:OpenWindow
- IF NOT WindowInitialized
- DO InitializeWindow
- WindowInitialized = True
- END
- SELECT(?List)
- OF EVENT:GainFocus
- IF NOT WindowInitialized
- WindowInitialized = True
- DO InitializeWindow
- ELSE
- ForceRefresh = True
- DO RefreshWindow
- END
- OF EVENT:Sized
- ! ProgTool ScaleWindow Template
- DO ResizeWindow
- ! End Template
- END
- CASE FIELD()
- OF ?List
- CASE EVENT()
- OF EVENT:NewSelection
- DO BRW1::NewSelection
- OF EVENT:ScrollUp
- DO BRW1::ScrollUp
- OF EVENT:ScrollDown
- DO BRW1::ScrollDown
- OF EVENT:PageUp
- DO BRW1::PageUp
- OF EVENT:PageDown
- DO BRW1::PageDown
- OF EVENT:ScrollTop
- DO BRW1::ScrollTop
- OF EVENT:ScrollBottom
- DO BRW1::ScrollBottom
- OF EVENT:AlertKey
- DO BRW1::AlertKey
- OF EVENT:ScrollDrag
- IF ?List{Prop:VScrollPos} <= 1
- POST(Event:ScrollTop,?List)
- ELSIF ?List{Prop:VScrollPos} = 100
- POST(Event:ScrollBottom,?List)
- ELSE
- Peo:LastName = Sort:Name:Array[?List{Prop:VScrollPos}]
- DO BRW1::LocateRecord
- END
- END
- OF ?Insert
- CASE EVENT()
- OF EVENT:Accepted
- DO SyncWindow
- DO BRW1::ButtonInsert
- END
- OF ?Change
- CASE EVENT()
- OF EVENT:Accepted
- DO SyncWindow
- DO BRW1::ButtonChange
- END
- OF ?Delete
- CASE EVENT()
- OF EVENT:Accepted
- DO SyncWindow
- DO BRW1::ButtonDelete
- END
- OF ?Select
- CASE EVENT()
- OF EVENT:Accepted
- DO SyncWindow
- LocalResponse = RequestCompleted
- POST(Event:CloseWindow)
- END
- OF ?Close
- CASE EVENT()
- OF EVENT:Accepted
- DO SyncWindow
- LocalResponse = RequestCancelled
- POST(Event:CloseWindow)
- END
- END
- END
- DO ProcedureReturn
- !---------------------------------------------------------------------------
- ProcedureReturn ROUTINE
- People::Used -= 1
- IF People::Used = 0 THEN CLOSE(People).
- IF WindowOpened
- INISaveWindow('PeoView','PROGTOOL.INI')
- CLOSE(BrowseWindow)
- END
- IF LocalResponse
- GlobalResponse = LocalResponse
- ELSE
- GlobalResponse = RequestCancelled
- END
- RETURN
- !---------------------------------------------------------------------------
- InitializeWindow ROUTINE
- DO BRW1::OpenWindow
- DO RefreshWindow
- !---------------------------------------------------------------------------
- RefreshWindow ROUTINE
- CurrentSelected = SELECTED()
- IF NOT ForceRefresh
- IF RECORDS(Queue:Browse)
- GET(Queue:Browse,CHOICE(?List))
- DO BRW1::FillBuffer
- DO BRW1::ValidateRecord
- IF BRW1::RecordStatus <> Record:OK
- FREE(Queue:Browse)
- DO BRW1::InitializeBrowse
- END
- ELSE
- DO BRW1::InitializeBrowse
- END
- ELSE
- DO BRW1::InitializeBrowse
- DO BRW1::RefreshPage
- END
- ?List{Prop:VScrollPos} = BRW1::CurrentScroll
- DISPLAY()
- ForceRefresh = False
- IF SELECTED() <> CurrentSelected
- SELECT(CurrentSelected)
- END
- !---------------------------------------------------------------------------
- SyncWindow ROUTINE
- IF RECORDS(Queue:Browse)
- GET(Queue:Browse,CHOICE(?List))
- REGET(Peo:NameKey,BRW1::Position)
- END
- !---------------------------------------------------------------------------
- !----------------------------------------------------------------------
- BRW1::OpenWindow ROUTINE
- IF LocalRequest = SelectRecord
- SET(Peo:NameKey,Peo:NameKey)
- DO BRW1::LocateRecord
- ELSE
- DO BRW1::InitializeBrowse
- SELECT(?List,1)
- END
- DO BRW1::FillBuffer
- IF NOT BRW1::NewSelectPosted
- BRW1::NewSelectPosted = True
- POST(Event:NewSelection,?List)
- END
- !----------------------------------------------------------------------
- BRW1::InitializeBrowse ROUTINE
- IF SEND(People,'QUICKSCAN=on').
- IF SEND(People,'QUICKSCAN=off').
- DO BRW1::RefreshPage
- !----------------------------------------------------------------------
- BRW1::FillBuffer ROUTINE
- Lcl:FullName = BRW1::Lcl:FullName
- Peo:LastName = BRW1::Peo:LastName
- Peo:FirstName = BRW1::Peo:FirstName
- !----------------------------------------------------------------------
- BRW1::ResetLow ROUTINE
- SET(Peo:NameKey)
- !----------------------------------------------------------------------
- BRW1::ResetHigh ROUTINE
- SET(Peo:NameKey)
- !----------------------------------------------------------------------
- BRW1::ResetClear ROUTINE
- SET(Peo:NameKey)
- !----------------------------------------------------------------------
- BRW1::FillQueue ROUTINE
- ! *** Format an element of the browse queue (Browse on People)
- Lcl:FullName = CLIP(Peo:FirstName) & ' ' & Peo:LastName
- ! *** End Embed
- BRW1::Lcl:FullName = Lcl:FullName
- BRW1::Peo:LastName = Peo:LastName
- BRW1::Peo:FirstName = Peo:FirstName
- BRW1::Position = POSITION(Peo:NameKey)
- !----------------------------------------------------------------------
- BRW1::NewSelection ROUTINE
- BRW1::NewSelectPosted = False
- IF RECORDS(Queue:Browse)
- DO BRW1::FillBuffer
- BRW1::CurrentScroll = 100
- LOOP BRW1::CurrentScrollRecord = 1 TO 100
- IF Sort:Name:Array[BRW1::CurrentScrollRecord] => UPPER(Peo:LastName)
- IF BRW1::CurrentScrollRecord <= 1
- BRW1::CurrentScroll = 0
- ELSIF BRW1::CurrentScrollRecord = 100
- BRW1::CurrentScroll = 100
- ELSE
- BRW1::CurrentScroll = ((BRW1::CurrentScrollRecord / 100) * 100)
- END
- BREAK
- END
- END
- DO RefreshWindow
- END
- !----------------------------------------------------------------------
- BRW1::ScrollUp ROUTINE
- IF RECORDS(Queue:Browse)
- IF CHOICE(?List)>1
- SELECT(?List, CHOICE(?List)-1)
- ELSE
- GET(Queue:Browse,1) ! Get the first queue item
- RESET(Peo:NameKey,BRW1::Position) ! Reset for sequential processing
- PREVIOUS(People) ! Retrieve record, reverse access
- BRW1::ItemsToFill = 1 ! Load a single item
- DO BRW1::FillBackward ! Fill with previous read(s)
- END
- IF NOT BRW1::NewSelectPosted
- BRW1::NewSelectPosted = True
- POST(Event:NewSelection,?List)
- END
- END
- !----------------------------------------------------------------------
- BRW1::ScrollDown ROUTINE
- IF RECORDS(Queue:Browse)
- IF CHOICE(?List)<RECORDS(Queue:Browse)
- SELECT(?List, CHOICE(?List)+1)
- ELSE
- GET(Queue:Browse,RECORDS(Queue:Browse)) ! Get the last queue item
- RESET(Peo:NameKey,BRW1::Position) ! Reset for sequential processing
- NEXT(People) ! Retrieve record, forward access
- BRW1::ItemsToFill = 1 ! load a single item
- DO BRW1::FillForward ! Fill with next read(s)
- END
- IF NOT BRW1::NewSelectPosted
- BRW1::NewSelectPosted = True
- POST(Event:NewSelection,?List)
- END
- END
- !----------------------------------------------------------------------
- BRW1::PageUp ROUTINE
- IF RECORDS(Queue:Browse)
- GET(Queue:Browse,1) ! Get the first queue item
- RESET(Peo:NameKey,BRW1::Position) ! Reset for sequential processing
- PREVIOUS(People) ! Retrieve record, reverse access
- BRW1::ItemsToFill = ?List{Prop:Items} ! Load a full page
- DO BRW1::FillBackward ! Fill with previous read(s)
- IF BRW1::ItemsToFill
- BRW1::NextChoice = CHOICE(?List)-BRW1::ItemsToFill
- IF BRW1::NextChoice < 1
- BRW1::NextChoice = 1
- END
- SELECT(?List, BRW1::NextChoice)
- END
- IF NOT BRW1::NewSelectPosted
- BRW1::NewSelectPosted = True
- POST(Event:NewSelection,?List)
- END
- END
- !----------------------------------------------------------------------
- BRW1::PageDown ROUTINE
- IF RECORDS(Queue:Browse)
- GET(Queue:Browse,RECORDS(Queue:Browse)) ! Get the last queue item
- RESET(Peo:NameKey,BRW1::Position) ! Reset for sequential processing
- NEXT(People) ! Retrieve record, forward access
- BRW1::ItemsToFill = ?List{Prop:Items} ! Load a full page
- DO BRW1::FillForward ! Fill with next read(s)
- IF BRW1::ItemsToFill
- BRW1::NextChoice = CHOICE(?List)+BRW1::ItemsToFill
- IF BRW1::NextChoice > RECORDS(Queue:Browse)
- BRW1::NextChoice = RECORDS(Queue:Browse)
- END
- SELECT(?List, BRW1::NextChoice)
- END
- IF NOT BRW1::NewSelectPosted
- BRW1::NewSelectPosted = True
- POST(Event:NewSelection,?List)
- END
- END
- !----------------------------------------------------------------------
- BRW1::ScrollTop ROUTINE
- IF RECORDS(Queue:Browse)
- FREE(Queue:Browse)
- DO BRW1::RefreshPage
- SELECT(?List,1) ! Select first list item
- IF NOT BRW1::NewSelectPosted
- BRW1::NewSelectPosted = True
- POST(Event:NewSelection,?List)
- END
- END
- !----------------------------------------------------------------------
- BRW1::ScrollBottom ROUTINE
- IF RECORDS(Queue:Browse)
- SETCURSOR(Cursor:Wait)
- FREE(Queue:Browse) ! Free the browse queue
- DO BRW1::ResetHigh ! Reset for first page access
- BRW1::ItemsToFill = ?List{Prop:Items} ! Load a full page
- DO BRW1::FillBackward ! Fill with previous read(s)
- SELECT(?List, RECORDS(Queue:Browse)) ! Select last list item
- SETCURSOR()
- IF NOT BRW1::NewSelectPosted
- BRW1::NewSelectPosted = True
- POST(Event:NewSelection,?List)
- END
- END
- !----------------------------------------------------------------------
- BRW1::AlertKey ROUTINE
- IF RECORDS(Queue:Browse)
- CASE KEYCODE() ! What keycode was hit
- OF MouseLeft2
- IF LocalRequest = SelectRecord
- POST(Event:Accepted,?Select)
- EXIT
- END
- POST(Event:Accepted,?Change)
- DO BRW1::FillBuffer
- OF InsertKey
- POST(Event:Accepted,?Insert)
- OF DeleteKey
- POST(Event:Accepted,?Delete)
- OF CtrlEnter
- POST(Event:Accepted,?Change)
- ELSE ! ELSE (What keycode was hit)
- IF CHR(KEYCHAR())
- DO BRW1::ResetClear
- Peo:LastName = CHR(KEYCHAR())
- GET(People,0)
- DO BRW1::LocateRecord ! Find the record
- END
- END ! END (What keycode was hit)
- END
- IF NOT BRW1::NewSelectPosted
- BRW1::NewSelectPosted = True
- POST(Event:NewSelection,?List)
- END
- !----------------------------------------------------------------------
- BRW1::ValidateRecord ROUTINE
- BRW1::RecordStatus = Record:OK
- EXIT
- !----------------------------------------------------------------------
- BRW1::FillForward ROUTINE
- IF BRW1::ItemsToFill > 1
- IF SEND(People,'QUICKSCAN=on').
- BRW1::QuickScan = True
- END
- LOOP WHILE BRW1::ItemsToFill
- NEXT(People)
- IF ERRORCODE() THEN BREAK.
- DO BRW1::ValidateRecord
- EXECUTE(BRW1::RecordStatus)
- BEGIN
- GET(Queue:Browse,RECORDS(Queue:Browse))
- DO BRW1::FillBuffer
- BREAK
- END
- CYCLE
- END
- IF RECORDS(Queue:Browse) = ?List{Prop:Items}
- GET(Queue:Browse,1)
- DELETE(Queue:Browse)
- END
- BRW1::ItemsToFill -= 1
- DO BRW1::FillQueue
- ADD(Queue:Browse)
- END
- IF BRW1::QuickScan
- IF SEND(People,'QUICKSCAN=off').
- BRW1::QuickScan = False
- END
- EXIT
- !----------------------------------------------------------------------
- BRW1::FillBackward ROUTINE
- IF BRW1::ItemsToFill > 1
- IF SEND(People,'QUICKSCAN=on').
- BRW1::QuickScan = True
- END
- LOOP WHILE BRW1::ItemsToFill
- PREVIOUS(People)
- IF ERRORCODE() THEN BREAK.
- DO BRW1::ValidateRecord
- EXECUTE(BRW1::RecordStatus)
- BEGIN
- GET(Queue:Browse,1)
- DO BRW1::FillBuffer
- BREAK
- END
- CYCLE
- END
- IF RECORDS(Queue:Browse) = ?List{Prop:Items}
- GET(Queue:Browse,RECORDS(Queue:Browse))
- DELETE(Queue:Browse)
- END
- BRW1::ItemsToFill -= 1
- DO BRW1::FillQueue
- ADD(Queue:Browse,1)
- END
- IF BRW1::QuickScan
- IF SEND(People,'QUICKSCAN=off').
- BRW1::QuickScan = False
- END
- EXIT
- !----------------------------------------------------------------------
- BRW1::LocateRecord ROUTINE
- SETCURSOR(Cursor:Wait)
- FREE(Queue:Browse)
- IF POSITION(Peo:NameKey)
- RESET(Peo:NameKey,POSITION(Peo:NameKey))
- ELSE
- SET(Peo:NameKey,Peo:NameKey)
- END
- BRW1::LocatedPosition = ''
- LOOP
- NEXT(People)
- IF ERRORCODE() THEN BREAK.
- DO BRW1::ValidateRecord
- EXECUTE(BRW1::RecordStatus)
- BREAK
- CYCLE
- END
- BRW1::LocatedPosition = POSITION(Peo:NameKey)
- RESET(Peo:NameKey,BRW1::LocatedPosition)
- BREAK
- END
- BRW1::ItemsToFill = ?List{Prop:Items}
- DO BRW1::FillForward
- IF BRW1::ItemsToFill
- IF ~RECORDS(Queue:Browse)
- DO BRW1::ResetHigh ! Reset for first page access
- ELSE
- GET(Queue:Browse,1)
- RESET(Peo:NameKey,BRW1::Position)
- PREVIOUS(People)
- END
- DO BRW1::FillBackward
- END
- IF ~RECORDS(Queue:Browse)
- CLEAR(Peo:Record)
- ?List{Prop:Disable} = 1
- ?Change{Prop:Disable} = 1
- ?Delete{Prop:Disable} = 1
- ELSE
- ?List{Prop:Disable} = 0
- IF BRW1::LocatedPosition
- BRW1::QueuePointer = 1
- LOOP
- GET(Queue:Browse,BRW1::QueuePointer)
- IF ERRORCODE() THEN BREAK.
- IF BRW1::Position = BRW1::LocatedPosition THEN BREAK.
- BRW1::QueuePointer += 1
- END
- ELSE
- BRW1::QueuePointer = RECORDS(Queue:Browse)
- END
- SELECT(?List,BRW1::QueuePointer)
- DO BRW1::FillBuffer
- ?Change{Prop:Disable} = 0
- ?Delete{Prop:Disable} = 0
- END
- SETCURSOR()
- EXIT
- !----------------------------------------------------------------------
- BRW1::RefreshPage ROUTINE
- SETCURSOR(Cursor:Wait)
- IF NOT RECORDS(Queue:Browse)
- BRW1::InitializePage = True
- DO BRW1::ResetLow
- ELSE
- BRW1::InitializePage = False
- GET(Queue:Browse,1)
- RESET(Peo:NameKey,BRW1::Position)
- END
- FREE(Queue:Browse)
- BRW1::ItemsToFill = ?List{Prop:Items}
- DO BRW1::FillForward
- IF NOT BRW1::InitializePage
- IF BRW1::ItemsToFill
- GET(Queue:Browse,1)
- RESET(Peo:NameKey,BRW1::Position)
- PREVIOUS(People)
- DO BRW1::FillBackward
- END
- END
- IF ~RECORDS(Queue:Browse)
- CLEAR(Peo:Record)
- ?List{Prop:Disable} = 1
- ?Change{Prop:Disable} = 1
- ?Delete{Prop:Disable} = 1
- ELSE
- ?List{Prop:Disable} = 0
- GET(Queue:Browse,CHOICE(?List))
- IF ERRORCODE()
- GET(Queue:Browse,RECORDS(Queue:Browse))
- END
- DO BRW1::FillBuffer
- ?Change{Prop:Disable} = 0
- ?Delete{Prop:Disable} = 0
- END
- SETCURSOR()
- EXIT
- !----------------------------------------------------------------
- BRW1::ButtonInsert ROUTINE
- GET(People,0)
- CLEAR(Peo:Record,0)
- SET(Peo:NameKey)
- LocalRequest = InsertRecord
- DO BRW1::CallUpdate
- IF LocalResponse = RequestCompleted
- DO BRW1::ValidateRecord
- IF BRW1::RecordStatus = Record:OK
- DO BRW1::LocateRecord
- END
- END
- LocalRequest = OriginalRequest
- SELECT(?List)
- ForceRefresh = True
- DO RefreshWindow
- !----------------------------------------------------------------
- BRW1::ButtonChange ROUTINE
- LocalRequest = ChangeRecord
- DO BRW1::CallUpdate
- IF LocalResponse = RequestCompleted
- DO BRW1::ValidateRecord
- IF BRW1::RecordStatus = Record:OK
- IF BRW1::Position = POSITION(Peo:NameKey)
- DO BRW1::RefreshPage
- ELSE
- DO BRW1::LocateRecord
- END
- ELSE
- SELECT(?List,CHOICE(?List))
- END
- END
- LocalRequest = OriginalRequest
- SELECT(?List)
- ForceRefresh = True
- DO RefreshWindow
- !----------------------------------------------------------------
- BRW1::ButtonDelete ROUTINE
- LocalRequest = DeleteRecord
- DO BRW1::CallUpdate
- IF LocalResponse = RequestCompleted
- DELETE(Queue:Browse)
- DO BRW1::RefreshPage
- END
- LocalRequest = OriginalRequest
- SELECT(?List)
- ForceRefresh = True
- DO RefreshWindow
- !----------------------------------------------------------------
- BRW1::CallUpdate ROUTINE
- GlobalRequest = LocalRequest
- PeoEdit
- LocalResponse = GlobalResponse
- ! ProgTool ScaleWindow Template
- ResizeWindow ROUTINE
- IF BrowseWindow{Prop:Width} < MinWinWidth
- BrowseWindow{Prop:Width} = MinWinWidth
- END
- IF BrowseWindow{Prop:Height} < MinWinHeight
- BrowseWindow{Prop:Height} = MinWinHeight
- END
- OldWinPos[3] = BrowseWindow{Prop:Width}
- OldWinPos[4] = BrowseWindow{Prop:Height}
- ! ?List LIST
- LIST1Pos[1] = OldWinPos[3] * LIST1Ratio[1]
- LIST1Pos[2] = OldWinPos[4] * LIST1Ratio[2]
- LIST1Pos[3] = OldWinPos[3] * LIST1Ratio[3]
- LIST1Pos[4] = OldWinPos[4] * LIST1Ratio[4]
- SETPOSITION(?List,LIST1Pos[1],LIST1Pos[2],LIST1Pos[3],LIST1Pos[4])
- ! ?Insert BUTTON
- BUTTON2Pos[1] = OldWinPos[3] * BUTTON2Ratio[1]
- BUTTON2Pos[2] = OldWinPos[4] * BUTTON2Ratio[2]
- BUTTON2Pos[3] = OldWinPos[3] * BUTTON2Ratio[3]
- BUTTON2Pos[4] = OldWinPos[4] * BUTTON2Ratio[4]
- SETPOSITION(?Insert,BUTTON2Pos[1],BUTTON2Pos[2],BUTTON2Pos[3],BUTTON2Pos[4])
- ! ?Change BUTTON
- BUTTON3Pos[1] = OldWinPos[3] * BUTTON3Ratio[1]
- BUTTON3Pos[2] = OldWinPos[4] * BUTTON3Ratio[2]
- BUTTON3Pos[3] = OldWinPos[3] * BUTTON3Ratio[3]
- BUTTON3Pos[4] = OldWinPos[4] * BUTTON3Ratio[4]
- SETPOSITION(?Change,BUTTON3Pos[1],BUTTON3Pos[2],BUTTON3Pos[3],BUTTON3Pos[4])
- ! ?Delete BUTTON
- BUTTON4Pos[1] = OldWinPos[3] * BUTTON4Ratio[1]
- BUTTON4Pos[2] = OldWinPos[4] * BUTTON4Ratio[2]
- BUTTON4Pos[3] = OldWinPos[3] * BUTTON4Ratio[3]
- BUTTON4Pos[4] = OldWinPos[4] * BUTTON4Ratio[4]
- SETPOSITION(?Delete,BUTTON4Pos[1],BUTTON4Pos[2],BUTTON4Pos[3],BUTTON4Pos[4])
- ! ?Select BUTTON
- BUTTON5Pos[1] = OldWinPos[3] * BUTTON5Ratio[1]
- BUTTON5Pos[2] = OldWinPos[4] * BUTTON5Ratio[2]
- BUTTON5Pos[3] = OldWinPos[3] * BUTTON5Ratio[3]
- BUTTON5Pos[4] = OldWinPos[4] * BUTTON5Ratio[4]
- SETPOSITION(?Select,BUTTON5Pos[1],BUTTON5Pos[2],BUTTON5Pos[3],BUTTON5Pos[4])
- ! ?Close BUTTON
- BUTTON6Pos[1] = OldWinPos[3] * BUTTON6Ratio[1]
- BUTTON6Pos[2] = OldWinPos[4] * BUTTON6Ratio[2]
- BUTTON6Pos[3] = OldWinPos[3] * BUTTON6Ratio[3]
- BUTTON6Pos[4] = OldWinPos[4] * BUTTON6Ratio[4]
- SETPOSITION(?Close,BUTTON6Pos[1],BUTTON6Pos[2],BUTTON6Pos[3],BUTTON6Pos[4])
- IF WindowInitialized
- ForceRefresh = True
- DO RefreshWindow
- END
- ! End Template
-
-