home *** CD-ROM | disk | FTP | other *** search
- // Tb25.prg
- //
- // Multiple Select box routine
- //
- // Compile with /a /m /n /w
- //
- // Link with Tbutils, Dict
-
- #include "Inkey.ch"
- #include "Tbutils.ch"
-
-
- FUNCTION Tb25
-
- FIELD Lname, Fname, Addr1, Addr2, Addr3, Addr4 IN Tbdbf1
-
- LOCAL oTbr := TBrowseDb(1, 1, MaxRow() - 1, MaxCol() - 1)
- LOCAL oTbc1 := TBColumnNew("Last name", {|| Lname })
- LOCAL oTbc2 := TBColumnNew("First name", {|| Fname })
- LOCAL oTbc3 := TBColumnNew("Address 1", {|| Addr1 })
- LOCAL oTbc4 := TBColumnNew("Address 2", {|| Addr2 })
- LOCAL oTbc5 := TBColumnNew("Address 3", {|| Addr3 })
- LOCAL oTbc6 := TBColumnNew("Address 4", {|| Addr4 })
- LOCAL nKey
- LOCAL lExitRequested
- LOCAL aSelected := {}
- LOCAL oTbcSelect
-
- oTbcSelect := TBColumnNew(, {|| iif(Ascan(aSelected, Recno()) > 0, ;
- " X ", " ") })
-
- oTbr:colSep := DEF_CSEP
- oTbr:headSep := DEF_HSEP
- oTbr:footSep := DEF_FSEP
-
- CLEAR SCREEN
- @ 0, 0 TO MaxRow(), MaxCol()
-
- USE Tbdbf1
- IF !File("tbdbf1.ntx")
- INDEX ON Upper(Lname + Fname) TO Tbdbf1
- ELSE
- SET INDEX TO Tbdbf1
- ENDIF
-
- oTbr:addColumn(oTbcSelect)
- oTbr:addColumn(TBColumnNew("Record #", {|| Recno() }))
- oTbr:addColumn(oTbc1)
- oTbr:addColumn(oTbc2)
- oTbr:addColumn(oTbc3)
- oTbr:addColumn(oTbc4)
- oTbr:addColumn(oTbc5)
- oTbr:addColumn(oTbc6)
-
- lExitRequested := .F.
- DO WHILE !lExitRequested
- FullStabilize(oTbr)
- nKey := Inkey(0)
- IF !StdMeth(nKey, oTbr)
- DO CASE
- CASE nKey == K_ENTER
- RecSelect(aSelected, Recno())
- oTbr:refreshCurrent()
-
- CASE nKey == K_ESC
- lExitRequested := .T.
-
- ENDCASE
- ENDIF
- ENDDO
-
- CLEAR SCREEN
- Aeval(aSelected, {|nRecNum| Qout(nRecNum) })
-
- RETURN NIL
-
-
- FUNCTION RecSelect(aSelected, rNum)
-
- LOCAL nElem := Ascan(aSelected, rNum)
-
- IF nElem > 0
- Adel(aSelected, nElem)
- Asize(aSelected, Len(aSelected) - 1)
- ELSE
- Aadd(aSelected, rNum)
- ENDIF
-
- RETURN NIL