home *** CD-ROM | disk | FTP | other *** search
- <<* Genfrm.inc *>>
- <<#pragma
-
- <<* Function to specify color set *>>
-
- function AtrCode( atr : integer ) : string
- string hilite,blink,hues,atrstrg
- integer hinib,lonib
- begin
- hues := 'N ,BU,G ,BG,R ,BR,GR,W '
- if (atr and 8) = 8
- hilite := '+'
- endif
- if (atr and 128) = 128
- blink := '*'
- endif
- lonib := (atr and 7)
- hinib := ((atr shr 4) and 7)
- atrstrg := rtrim( substr( hues,(lonib * 3) + 1,2 ) ) + blink + hilite + '/'
- atrstrg := atrstrg + rtrim( substr( hues,(hinib * 3) + 1,2 ) )
- RETURN atrstrg
- end <<*AtrCode*>>
-
- <<* Procedure to create a window for a memo field *>>
-
- Procedure Defmemo
- string hcolor
- begin
- forall fldlab and not fldnap
- if fldtyp = 'B'
- if len(rtrim(fldusr)) > 0
- hcolor := atrcode(fldhue)
- gen('DEFINE WINDOW ',fldusr+'1',' FROM ',fldrow,',',fldcol)
- genln(' TO ',fldrow+flddec,',',fldcol+fldwid,' DOUBLE CLOSE ZOOM FLOAT GROW SHADOW COLOR ',hcolor, ' TITLE ', '"'+fldusr+'"')
- endif
- endif
- endfor
- end
-
- <<* Place @...SAYs on the screen *>>
-
- procedure DisplayFormat
- string box, hcolor
- begin
- forall fldlab and not fldnap
- if fldtyp = 'B' <<*BOX Type*>>
- if fldusr = ''
- box := fldlab <<*Used to swap chars for Character box*>>
- hcolor := atrcode(fldhue)
- gen( ' @ ',fldrow,',',fldcol,',' )
- gen( fldrow+flddec,',',fldcol+fldwid," BOX '" )
- genln( substr(box,1,3),box[5],box[8],box[7],box[6],box[4],"'" )
- genln <<*Send CR/LF*>>
- endif
- else <<*All Fields and Text Objects*>>
- gen( ' @ ',fldrow,',',fldcol," SAY '",fldlab,"'" )
- hcolor := atrcode(fldhue)
- if substr(upper(screencolor),1,at(',',screencolor)) <> upper(hcolor)
- gen(' COLOR ',hcolor)
- endif
- genln <<*Send CR/LF*>>
- endif
- endfor
- end <<*DisplayFormat*>>
-
- <<* Generate the picture clauses for @...SAY/GETs *>>
-
- procedure GenPicture
- string picstrg
- begin
- if fldpic
- gen( " PICTURE '",fldpic,"'" )
- elsif fldtyp = 'N' <<*Force numeric picture*>>
- picstrg := replicate( '9',fldwid )
- if flddec
- picstrg[ fldwid-flddec ] := '.'
- endif
- gen( " PICTURE '",picstrg,"'" )
- endif
- end <<*GenPicture*>>
-
- <<* Generate the range clauses for @...GETs *>>
-
- Procedure GenRange
- begin
- if fldran
- gen(' RANGE ',fldran)
- endif
- end
-
- <<* Initialize memory variables *>>
-
- Procedure Initmemory
- begin
- forall fldget and (fldtyp $ 'CDLN')
- if fldals = "M"
- if len(rtrim(fldini)) <> 0
- genln(fldnam, " = ", fldini)
- elsif fldtyp = 'C'
- genln(fldnam, " = SPACE(" + str(fldwid) + ")")
- elsif fldtyp = 'N'
- genln(fldnam, " = 0.00")
- elsif fldtyp = 'D'
- genln(fldnam, " = DATE()")
- else
- genln(fldnam, " = .F.")
- endif
- endif
- endfor
- end
-
- <<* Create valid clauses for @...GETs *>>
-
- Procedure GenValid
- begin
- if fldval
- gen(' VALID ',fldval)
- endif
- end
-
- <<* Display all @...GETs *>>
-
- procedure DisplayRecord
- string var3 , hcolor
- integer tcount
- begin
- tcount:=64
- <<*---Char, Date, Logical, Numeric & Memo fields---*>>
- forall fldget and (fldtyp $ 'CDLNM')
- if fldtyp = 'M'
- if upper(rtrim(fldusr)) = "OPEN"
- genln(' ACTIVATE WINDOW ',fldnam+'1')
- genln(' ACTIVATE SCREEN ')
- endif
- endif
- if fldhor <<*field on the side of label*>>
- gen( ' @ ',fldrow,',',fldcol + len(fldlab),' GET ',fldals+'->'+fldnam )
- else <<*field below label*>>
- gen( ' @ ',fldrow + 1,',',fldcol,' GET ',fldals+'->'+fldnam )
- endif
- if fldtyp = 'M'
- if upper(rtrim(fldusr)) = "OPEN"
- gen(' OPEN WINDOW ',fldnam+'1')
- endif
- if upper(rtrim(fldusr)) = "CLOSE"
- gen(' WINDOW ',fldnam+'1')
- endif
- else
- GenPicture
- GenRange
- GenValid
- endif
- hcolor := rtrim(atrcode(fldatr))
- gen(' COLOR ,',hcolor)
- genln <<*Send CR/LF*>>
- endfor
- end <<*DisplayRecord*>>
-
- Procedure GenBrowseFormat
- begin
- forall fldget and (fldtyp $ 'CDLNM')
- if fldals <> 'M'
- gen( '@ ','0',',','0',' GET ',fldals+'->'+fldnam )
- GenPicture
- GenRange
- GenValid
- genln
- endif
- endfor
- end <<*GenBrowseFormat*>>
-
- <<* End Profrm.inc *>>
- #>>
-