proc cpRemoveFIlterTail(stfilter string) string
var
myar array[] string
li1 longint
strt string
endvar
stfilter.breakapart(myar,".")
strt = ""
for li1 from 1 to myar.size() -1
strt = strt+iif(strt="","",".")+ myar[li1]
endfor
return strt
endproc
method Parse(stfilename string)
logical
var
answer logical
mysettings
dynarlo
txt
textstream
methodar dynarray[] string
stobject,stmethod,stlinenum,stcode string
stType,stEvent, strest, stself string
liIndent
longint
mytc
tcursor
stline,st1
,stfill
,sta
string
liID
,liRecColor
,li2
,liMethCount
longint
litxtSize longint
Memo1
memo
params dynArAtType
stFilter string
myfil dynarray[] string
endvar
try
Settings(mySettings,true)
SetMouseShape(Mousewait,true)
;
DelayScreenUpdates(yes)
ErrorTraponwarnings(yes)
ignorecaseinstringcompares(true)
liIndent = 0
liMethCount = 0
liID = 0
txt.open(stfilename,"R")
txt.end()
msgfld.cmStatusSetup( txt.position(),"Parsing Tracer")
txt.home()
mytc.open(dmgetproperty(TraceOutputdm'tablename,"FullName") )
; mytc.dmattach("TraceOutputdm")
mytc.edit()
mytc.empty()
stFilter = ""
while not txt.eof()
txt.readline(stline)
msgfld.cmStatusInc( txt.position() )
; stline = cmChompNUll(stline)
if stline.isblank() then
loop
endif
if txt.eof() then
quitloop
endif
mytc.insertrecord()
liID = liID + 1
mytc."ID" = liID
mytc."BuiltIn" = 0
mytc."LineFilter" = stFilter + string(liID)
mytc."LoShow" = 1
if not mytc.isvalid ( "code",stline) then
msgstop("YIPE","Invalidi line")
endif
mytc."CollapseType" = 0
; stBracket = ""
switch
case stline.advmatch("^([^:]*)::([^:]+):([0-9]+)=>(..)",stobject,stmethod,stlinenum,stcode) :
;line of code
if stObject="" then stObject = "Form" endif
mytc."ObjectName" = stobject
mytc."MethodName" = rtrim(ltrim(stmethod ))
mytc."LineNum" = longint(stlineNum)
mytc."Code" = ltrim(ltrim(stcode))
mytc."Indent" = liIndent
mytc."LineType" = 4
; stBracket = "";stContinueGroup
case stline.advmatch("^([^:]*):Entering method([^.]+)",stobject,stmethod) :
;start of method
if stObject="" then stObject = "Form" endif
mytc."ObjectName" = ltrim(rtrim(stobject))
mytc."MethodName" = rtrim(ltrim(stmethod))
mytc."Code" = "Entering Method"; cfrtfBold("Entering Method")
liIndent = liIndent + 1
mytc."Indent" = liIndent
mytc."LineType" = iif(liIndent=0,1, SpChStartMethodCT)
stFilter = mytc."LineFilter" +"."
mytc."CollapseType" = 5
case stline.advmatch("^([^:]*):Leaving method([^.]+)",stobject,stmethod) :
;endof method
if stObject="" then stObject = "Form" endif
mytc."ObjectName" = rtrim(ltrim(stobject))
mytc."MethodName" = ltrim(ltrim(stmethod))
mytc."Indent" = liIndent
if mytc."MethodName" = "calcField" then
;do what?? huh?
else
liIndent = liIndent -iif(liIndent>0,1,0)
endif
mytc."Code" = "Leaving Method"; cfrtfBold("Leaving Method")
mytc."LineType" = SpChEndMethodCT ;iif(liIndent=0,2,10)
stfilter= cfChopSt(stfilter) ;remove "."
mytc."LineFilter" = stfilter
stfilter= cpRemoveFIlterTail(stfilter)
if stfilter<>"" then
stfilter = stfilter+"."
endif
mytc."CollapseType" = 7
case stline.advmatch("^([^:]+):([^,]+), self = \"([^\"]+)(..)",stType,stevent,stSelf,strest) :
mytc."ObjectName" = rtrim(ltrim(stType))
mytc."MethodName" = ltrim(ltrim(stevent))
mytc."Code" = stSelf+"--"+strest
mytc."BuiltIn" = 1
; stBracket = ""
mytc."LineType" = 0
otherwise :
;
fail(Usererror,"Did not match this string:"+stline)
mytc."Code" = stline
endswitch
if NOT cfFormatLine( mytc,memo1,liRecColor,params) then
fail(UserError,"")
endif
mytc."Display" = memo1
mytc."RecColor" = liRecColor
mytc.UnlockREcord()
endwhile
mytc.endEdit()
myfil["LoShow"] = "1"
try
mytc.setGenFilter(myfil)
onfail
errorclear()
endtry
mytc.home()
dmresync("TraceOutputdm",mytc)
mytc.close()
txt.close()
answer = true
onfail
errorshow()
;
libCommon.Errorlogshow(libCommon.Errorlogger())
;
libCommon.Errorclosetc(,answer)
answer=false
endtry
Settings(mySettings,false)
SetMouseShape(MouseArrow,false)
TraceOutputdm.action(DataBegin)
msgfld.cmStatusReset()
DelayScreenUpdates(No)
TraceOutputdm.moveto()
return(answer)
endMethod
Parse ‘ method init(var eventInfo Event)
{Code Mark Bannister
4-2-2009
version 2.1 BETA
Feel free to use copy and abuse
If you have questions post them on pnews newsgroups (see
www.thedbcommunity.com for info)
}
CurrFontSizeGL = DefaultFontSizeCt
CurrFontColorGl = black
buildTables()
fontorderargl.addlast("Arial")
fontNamesArGl["Arial"] = 0
fontCodearGL["Arial"] ="\\f0\\fswiss\\fcharset0\\fprq2 Arial"
fontOrderArGL.addlast("Wingdings")
FontNamesArGL["Wingdings"] = 1
fontCodearGL["Wingdings"] ="\\f1\\froman\\fcharset2\\fprq2 Wingdings;"
fontOrderArGL.addlast("MS Mincho")
fontNamesArGL["MS Mincho"] = 2
fontCodearGL["MS Mincho"] = "\\f2\\fmodern\\fprq1\\fcharset128 MS Mincho"
foMe.attach()
SpecialCharARGL [SpChStartMethodCT] = "\\'84\\'ac" ;start group
SpecialCharARGL [SpChEndMethodCT] ="\\'84\\'af" ;end group
SpecialCharARGL [SpChContinueMethodCT] = "\\'84\\'ab" ;continue group
SpecialCharARGL [SpChContinueCurrentMEthodCT] = "\\'84\\'b0" ;continue current group
SpecialCharARGL [SpChArrowDownCT] = cfrtfFormat("\\'da","Wingdings",0,1,False,False,False) ;uncollapsed
SpecialCharARGL [SpChArrowRightCT] = cfrtfFormat("\\'d8","Wingdings",0,RED,False,False,False) ;collapsed
SpecialCharARGL [SpChArrowUpCT] = cfrtfFormat("\\'d9","Wingdings",0,1,False,False,False) ;end uncollapsed segment
SpecialCharARGL [SpChExtendMethodCT] = "\\'84\\'aa" ;extend group "-"
SpecialCharARGL [SpChExtendMethodDownCT] = "\\'84\\'b1" ;extend down
SpecialCharARGL [SpChExtendMehodUpCT] = "\\'84\\'b3" ;extendup
{
SpecialCharARGL [1] = cfrtfFormat("\\'84\\'ac","MS Mincho",0,1,False,False,False) ;start group
SpecialCharARGL [2] = cfrtfFormat("\\'84\\'af","MS Mincho",0,1,False,False,False) ;end group
SpecialCharARGL [3] = cfrtfFormat("\\'84\\'ab","MS Mincho",0,1,False,False,False) ;continue group
SpecialCharARGL [4] = cfrtfFormat("\\'84\\'b0","MS Mincho",0,1,False,False,False) ;continue current group
SpecialCharARGL [5] = cfrtfFormat("\\'da","MS Mincho",0,1,False,False,False) ;uncollapsed
SpecialCharARGL [6] = cfrtfFormat("\\'d8","MS Mincho",0,1,False,False,False) ;collapsed
SpecialCharARGL [7] = cfrtfFormat("\\'d9","MS Mincho",0,1,False,False,False) ;end uncollapsed segment
SpecialCharARGL [8] = cfrtfFormat("\\'84\\'aa","MS Mincho",0,1,False,False,False) ;extend group "-"
SpecialCharARGL [9] = cfrtfFormat("\\'84\\'b1","MS Mincho",0,1,False,False,False) ;extend down
SpecialCharARGL [10] = cfrtfFormat("\\'84\\'b3","MS Mincho",0,1,False,False,False) ;extendup
}
{ to install MS Mincho font on windows XP
1. Click on the Start button.
2. Click on Control Panel.
* The Control Panel is directly accessible in the standard Start menu but it is inside Settings in the classic Start menu.
3. Click on "Date, Time, Language and Regional Options."
4. Select the "Add other languages" task.
* Or click on "Regional and Language Options" and select the Languages tab.
5. Check the "Install files for East Asian languages" option and click on the Apply button.
6. Click Yes when you are asked to restart Windows.
7. Go to "Add other languages" again and click on the Details button.
8. Click on the Add button.
9. Select the language you want to add in the drop-down list of input languages. You may also change the default input method editor in the drop-down list of keyboard layouts if you prefer another one.
10. Click OK as many times as you are prompted to and then close "Date, Time, Language and Regional Options."
RTF spec can be found here
http://latex2rtf.sourceforge.net/RTF-Spec-1.0.txt pdox does not follow it very well and does not support many features
}
endMethod
init + $ 2 method BuildTables()
var
mytbl table
stname string
mytc
tcursor
endvar
try
stname = dmgetproperty(TraceOutputdm'tablename,"FullName")
;this is just in case you replaced the
;datamodel table with something else and accidently saved it.
;
if (stname.lower() <> ":priv:__tracer.db") then
if (msgquestion("IMPORTANT","Table: "+stname+" will be over written.\n\nProceed?") = "Yes" ) then
fail(UserError,"Did not allow table to be over written.")
endif
endif
mytbl = create stName
with
"ID":"I",
"ObjectName":"A100",
"MethodName":"A100",
"LineNum":"I",
"Code":"A255",
"Indent":"I",
"BuiltIn" : "S",
"RecColor" : "I",
"LineType" :"I", ;1 start, 2 end, 3 continue
"LineFilter" : "A100",
"LoShow" : "S",
"CollapseType" : "I" , ;
"display" : "F1"
key
"ID"
endCreate
sleep()
onfail
errorshow()
endtry
if NOt isfile(":priv:parsehilite.db") then
mytbl= create ":priv:parsehilite.db"
with
"Id":"+",
"MatchText":"A255",
"loAdvmatch":"S",
"matchTextColor":"I",
"matchRecordColor":"I",
"loBold":"S",
"loItalics":"S"
key
"Id"
languageDriver "intl850"
versionLevel "7"
endCreate
sleep()
mytc.open(":priv:parsehilite.db")
mytc.edit()
mytc.InsertREcord()
mytc."MatchText"="Error"
mytc."loAdvMatch"=0
mytc."MatchTextColor" = 0
mytc."MatchRecordColor" = 65535
mytc."LoBold" = 1
mytc."loItalics" = 1
mytc.unlockRecord()
mytc.InsertREcord()
mytc."MatchText"="fail"
mytc."loAdvMatch"=0
mytc."MatchTextColor" = 0
mytc."MatchRecordColor" = 255
mytc."LoBold" = 1
mytc."loItalics" = 1
mytc.unlockRecord()
mytc.InsertREcord()
mytc."MatchText"="..elapsed.."
mytc."loAdvMatch"=1
mytc."MatchTextColor" = 16711935
mytc."MatchRecordColor" = blank()
mytc."LoBold" = 1
mytc."loItalics" = 0
mytc.unlockRecord()
mytc.close()
endif
endMethod
BuildTables % B method colorme(liIndent longint, stObjectname string, stmethodName string
, lilineNum longint, stcode string) string
var
st1, st2,st3
,stout string
li1 longint
endvar
{
fill(" ",[TraceOutputdm.Indent]*8)+[TraceOutputdm.ObjectName]+"::"
+ [TraceOutputdm.MethodName]
+string([TraceOutputdm.LineNum])+"=>"+[TraceOutputdm.Code]
}
ignorecaseinstringcompares(true)
{
if (search(MethodName.value,"errorlog")>0) or (search(MethodName.value,"fail(")>0) then
MethodName.color = Yellow
MethodName.translucent = True
else
MethodName.color = White
MethodName.translucent = Transparent
endif
methodname.font.style = iif(isblank(LineNum.value) ,fontattribbold,fontattribnormal)
methodname.font.color = iif(BuiltIn.value = 1,darkgreen,black)
}
return "HI"
endMethod
colorme & “ method cfFontColor(stText string, liFontColor longint) string
return "{\\cf"+ string(cfFontColorIndex(liFontColor))+" "+sttext+"}"
endMethod
cfFontColor ' „ method cfFontColorIndex(liColor longint) longint
var
li1 longint
endvar
;send font color and return font index number
;add to table if required
if colorListArgl.size()<1 then
ColorListarGL[black] = 1
endif
if Not ColorListarGl.contains(licolor) then
li1 = ColorListarGl.size()+1
ColorListarGl[licolor] = li1
endif
return ColorListarGl[licolor]
endMethod
cfFontColorIndex ( W method cfMakeColorTable() string
var
stcolorTbl string
r,g,b smallint
li1 longint
st1 string
keyar dynarray[] longint
endvar
stColorTbl = "{\\colortbl; "
foreach st1 in ColorListargl
;key is actually the color number
keyar[ colorlistargl[ st1 ] ] = longint(st1) ;flip the arrary from [color]= position to [position] = color
endforeach
foreach st1 in keyar
getRGB( keyar[st1], r,g,b)
stColortbl = stColortbl+"\\red"+string(r)+"\\green"+string(g)+"\\blue"+string(b)+";"
endforeach
stcolortbl = stcolortbl +"}"
return StColorTbl
endMethod
cfMakeColorTable ) ž
method cfRTFBold(stText string) string
;return "{\\b"+sttext+"}"
return cfRtfFormat(stText,"",CurrFontSizeGL,CurrFontColorGl,True,false,false)
endMethod
cfRTFBold * method cfRTFItalic(sttext string) string
;return "{\\i"+sttext+"}"
return cfRtfFormat(stText,"",CurrFontSizeGL,CurrFontColorGl,False,True,false)
endMethod
cfRTFItalic + W method cfRTFStrikeOut(stText string) string
return "{\\strike"+sttext+"}"
endMethod
cfRTFStrikeOut , ¤ method cfRtfUnderline(sttext string) string
;return "{\\ul"+sttext+"}"
return cfRtfFormat(stText,"",CurrFontSizeGL,CurrFontColorGl,False,false,True)
endMethod
cfRtfUnderline €@ Const
DefaultFontSizeCt = 20 ;in half points
SpChStartMethodCT = 1
SpChEndMethodCT =2
SpChContinueMethodCT = 3
SpChContinueCurrentMEthodCT = 4
SpChExtendMethodCT = 8
SpChExtendMethodDownCT = 9
SpChExtendMehodUpCT = 10
SpChArrowRightCT = 6
SpChArrowDownCT = 5
SpChArrowUpCT = 7
endConst
Const - ; method cfRtfFormat(stText string ;text to format
,stFontname string ;arial or symbol
,siFontSize smallint ;in half points 24 = 12 points
,liFontColor longint ;longint remember pdox color constants also red white etc
,loBold logical
,loItalic logical
,loUnderline logical
;,loStrikeout loigcal strikeout would be supported as well but who usese it - \strike
) string
var
strt string
endvar
try
;create a group of text with this format
if stFontName="" then
stFontName = fontorderargl[1]
endif
strt = "{\\f"+ string(fontNamesArGl[stfontname])
if siFontsize < 1 then
siFontSize = DefaultFontSizeCt ;fs standards default is 24 (12 points)
endif
strt = strt+ "\\fs"+string(sifontsize)
if liFontColor < 1 then
liFontColor = 1
;cf
endif
if loBold then
strt=strt+"\\b"
endif
if loItalic then
strt=strt+"\\i"
endif
if loUnderline then
strt=strt+"\\ul"
endif
{
if loStrikeout then
strt=strt+"\\strike"
endif
}
strt = strt +"\\cf"+ string(cfFontColorIndex(liFontColor))
strt = strt +sttext+"}"
onfail
errorshow()
strt=""
endtry
return strt
endMethod
cfRtfFormat . š
method RTFtoMemo(stRTF string) memo
var
m1, m2 memo
b binary
st1 string
endvar
try
;RTF to memo
m1 = blank()
; standard rtf header
st1 = "{\\rtf1\\ansi\\deff0" + cfFontTable()
st1 = st1 + cfMakeColorTable()
;fs24 is 12 point font
st1= st1 + "\\pard{\\f0\\fs"+string(DefaultFontSizeCt)+"\\cf1"
strtf = st1 + strtf +"}"
;Code from Michel Claveau
www.ponx.orgm2 = memo(stRTF)
m2.WriteToClipBoard()
sleep()
b.ReadFromClipBoard("CF_TEXT")
sleep()
b.WriteToClipBoard("Rich Text Format")
sleep()
m1.ReadFromClipboard() ;mémo formatté
sleep()
onfail
errorshow()
m1 = blank()
endtry
return m1
endMethod
RTFtoMemo €È Var
ColorListarGL dynarray[] longint
CurrFontSizeGL smallint
CurrFontColorGl longint
hiliteTCGL tcursor
rtlcolorarGL
dynarray[] longint ;paradox rtl color contansts [color]= value
fontOrderArGL array[] string
fontNamesArGl dynarray[] longint
fontCodearGL dynarray[] string
hilightArGL dynarray[] string
SpecialCharARGL array[10] string
hiliteArgl array[] longint ; list of records that have find text hilighted
foMe
form
endVar
Var / v
method MemoToRtf(memoVar memo) string ;untested
var
m1,m2 memo
b binary
stvar
string
endvar
try
;Code from Michel Claveau
www.ponx.orgmemovar.WriteToClipBoard() ;mémo formatté
b.ReadFromClipboard("Rich Text Format")
b.WriteToClipBoard("CF_TEXT")
stvar.ReadFromClipboard() ;source rtf
onfail
errorshow()
stvar =""
endtry
return stvar
endMethod
MemoToRtf 0 = method hiliteCode(stCode string,litype longint, var liRecColor longint) string
var
strt
,stmatch
,st1,st2,st3
,stesc
string
lomatch logical
params dynArAtType
endvar
try
errortraponwarnings(yes)
liRecColor = 0
if NOT hiliteTCGL.isassigned() then
hiliteTCGL.dmattach("optionsDM")
endif
if liType = 2 or liType = 3 then
strt = cfrtfBold(stcode)
else
strt= stcode
endif
scan hiliteTCGL :
hiliteTCGL.copytoarray(params)
if NOT cmHiliteCodeAlpha(stcode,lomatch ,params) then
fail(USerError,"")
endif
if liRecColor = 0 and lomatch then
liRecColor = hiliteTCGL."MatchRecordColor"
endif
endscan
stRt = stcode
onfail
errorshow()
strt= "HILITEERROR!!!!!!!!!"
endtry
;errortraponwarnings(no)
return stRT
endMethod
hiliteCode method close(var eventInfo Event)
if eventInfo.isPreFilter() then
;// This code executes for each object on the form
else
;// This code executes only for the form
if hiliteTCGL.isassigned() then
hiliteTCGL.close()
endif
endIf
endMethod
close + 1 Q
method cmColorConstants()
var
mytc tcursor
endvar
try
if rtlcolorarGL.size() = 0 then
enumRTLConstants(":priv:__ccparse.db")
sleep()
mytc.open( ":priv:__ccparse.db" )
sleep()
scan mytc :
if mytc."GroupName" <> "Colors" then
loop
endif
if longint(mytc."Value") < 0 or mytc."ConstantName" ="clTranslucent" or mytc."ConstantName" ="clTransparent" then
loop
endif
rtlcolorarGL[ mytc."ConstantName" ]= longint(mytc."Value")
endscan
endif
onfail
errorshow()
endtry
endMethod
cmColorConstants 2 ¹ method cfPickcolor(livalue longint ) longint
var
mypop popupmenu
st1
string
endvar
cmColorConstants()
foreach st1 in rtlcolorarGL
mypop.addtext( st1 )
endforeach
mypop.addtext("None")
mypop.addtext("Cancel")
st1 = mypop.show()
switch
case st1="None" :
return blank()
case st1="" or st1="Cancel" :
return livalue
otherwise :
return rtlcolorarGL[ st1 ]
endswitch
endMethod
cfPickcolor 3 Š
method Settings(var mysettings dynarlo,storing Logical)
{Store common settings and restore them later
}
try
if storing then
mysettings["isErrorTrapOnWarnings"] = isErrorTrapOnWarnings()
mysettings["isIgnoreCaseinLocate"] = isIgnoreCaseinLocate()
mysettings["isIgnoreCaseinStringCompares"]= isIgnoreCaseinStringCompares()
mysettings["isAdvancedWildCardsinLocate"] = isAdvancedWildCardsinLocate()
mysettings["isblankzero"] = isBlankZero()
ELSE ;\\restoring
ErrorTrapOnWarnings(mysettings["isErrorTrapOnWarnings"])
IgnoreCaseinLocate(mysettings["isIgnoreCaseinLocate"])
IgnoreCaseinStringCompares(mysettings["isIgnoreCaseinStringCompares"])
AdvancedWildCardsinLocate(mysettings["isAdvancedWildCardsinLocate"])
BlankAsZero(mysettings["isblankzero"])
ENdif
onfail
errorshow()
endtry
endMethod
Settings €m Type
dynarlo = dynarray[] logical
dynArAtType = dynarray[] AnyTYpe
arLongType = array[] longint
endType
Type 4 method cmAdvanceMatchEscape ( stdata String ) String
; escape reserved stuff
var
stanswer String
stchar
, stlist String
myar Array [ ] String
i
longint
endVar
try
;characters to escape
stlist = "\\ ( ) [ ] \" ^ $ . @ * + ? |"
stlist.breakapart ( myar , " " )
stanswer = stdata
for i from 1 to myar.size ( )
stanswer = cmSubstitutestringst ( myar [ i ] , "\\" + myar [ i ] , stanswer )
endFor
onFail
errorshow ( "cmAdvancematchEscape" )
stdata = "Error"
endTry
return stanswer
EndMethod
cmAdvanceMatchEscape 5 ‘ method cmSubstituteStringST ( stFindinString String
, stReplaceWith String
, stString String
) String
{ in string STstring
find all occurances of stFindinString and replace with stReplacewith
}
var
answer String
mysettings dynarlo
pos
, nextPos LongInt
stFront
, stBack String
endVar
try
Settings ( mySettings , true )
SetMouseShape ( Mousewait , true )
; DelayScreenUpdates(yes)
ErrorTraponwarnings ( yes )
answer = ""
pos = stString.searchex ( stFindInString )
while pos > 0
stBack = ""
stFront = ""
if pos > 1 then
stFront = stString.substr ( 1 , pos - 1 )
else
stFront = ""
endIf
nextPos = pos + stFindInString.sizeex ( )
if Nextpos < stString.sizeex ( ) + 1 then
stBack = stString.substr ( nextpos , stString.sizeex ( ) + 1 )
else
stBack = ""
endIf
answer = answer + stfront + stReplacewith
stString = stback
pos = stString.searchex ( stFindInString )
endWhile
if answer <> "" then
answer = answer + stBack
else
answer = stString ;no matches made
endIf
; answer = ststring
onFail
errorshow ( )
answer = "<ERROR>"
endTry
Settings ( mySettings , false )
;SetMouseShape(MouseArrow,false)
;DelayScreenUpdates(No)
return ( answer )
EndMethod
cmSubstituteStringST 6 õ
method cfFontTable() string
var
strt, st1 string
li1 longint
endvar
strt = "{\\fonttbl"
for li1 from 1 to fontOrderArGL.size()
strt = strt+ fontcodeargl[ fontOrderArGL[li1] ]+";"
endfor
strt= strt+"}"
return strt
endMethod
cfFontTable 7 8 {
3-2008 added findagain CTRL-A
3-18-2005 fixed it so that if you are sitting on a match it will not bother
seraching added findinUI to do this
added ignorecaseinstringcompares
8-24-04 mytime set to time always
2-13-04 fixed so numpad works
2-14-2003 added searmetc -- very similiar
;changes here need to be made there
}
CONST
DELAYTIME = 1000
ENDCONST
var
; stLastFindGL string
endvar
proc findinUI(var ui uiobject ;object searching
,stFinding string; what we are looking for
,stFindingPlus string ;find plus pattern stuff
,loFindAgain logical
) logical
var
answer logical
mysettings dynarlo
sthold string
; mytc tcursor
endvar
try
answer = false
stHold = TraceOutputDM.display.value
if loFindAgain then
answer = ui.locateNextPattern("Display",stFindingplus)
else
if stFinding.size() < sthold.size() then
;if we match already then don't keep going
if stFinding = sthold.substr(1,stfinding.size()) then
answer = true
endif
endif
if NOt answer then
answer = ui.locatePattern("Display",stfindingplus)
endif
endif
onfail
errorshow()
; libCommon.Errorclosetc(mytc,answer)
answer=false
endtry
return(answer)
endproc
Proc writeMsg(const finding string, status string)
var
hold string
endvar
switch
case status = "found" :
;\\ findfld.value = findfld.value + mykey
findbox.color = white
findfld.toggleFindBtn( True)
findfld.setTimer( DELAYTIME )
case status = "partial" :
findbox.color = white
findfld.toggleFindBtn( True)
findfld.setTimer( DELAYTIME )
case Status = "clear" :
findfld.value=""
findbox.color = white
findfld.toggleFindBtn(false)
otherwise : ;\\not found
findfld.toggleFindBtn( false )
findbox.color = 6711039
endswitch
findfld.value = finding
endproc
method searchme(var eventInfo KeyEvent) logical
{
}
var
ui uiobject
holdWild,holdcase,holdwarn logical
vhold
,chold
,finding string
foundit logical
myform form
objname string
j,i smallint
;\\ mytc tcursor
myflds array[] anytype
isnum logical
msgui uiobject
mysettings dynarlo
loFindAgain logical
endvar
try
vhold = eventinfo.vchar()
cHold = eventInfo.char()
foundit = true
ui.attach(self.fullname) ;\\self should be the object that called us
loFindAgain = False
findFld.killtimer()
finding = ""
switch
case EventInfo.iscontrolkeydown() AND ((CHold = "A" ) or vhold="A" ) :
;find again
loFindAgain = True
chold =""
vhold=""
UnHiliteFindText()
finding = findfld.value
;don't do a thing
case Vhold = "VK_ESCAPE" or Vhold="VK_DELETE"
or (EventInfo.iscontrolkeydown() AND VHold = "Z" ) ;search box
:
finding = ""
vhold = ""
chold=""
writemsg("","clear") ;clears msg
eventinfo.seterrorcode(usererror+1) ;\\this
UnHiliteFindText()
case EventInfo.iscontrolkeydown()
OR EventInfo.IsAltKEydown()
OR (vHold<>"" AND cHold="") : ;\\pass it back unchanged
vhold = ""
chold = ""
finding = ""
if
subject.name = "findfld" then
else
; writemsg(msgui,ui,"clear","","") ;clears msg
endif
otherwise :
finding = findfld.value + chold
endswitch
if finding <> "" or loFindAgain then
;\\ beep()
;\\beep()
try
Settings(mySettings,true)
errortraponwarnings(no)
ignoreCaseinlocate(Yes)
advancedWildcardsInLocate(No)
IgnoreCaseinStringCompares(true)
eventinfo.seterrorcode(usererror+2) ;\\this disables default behavior of calling object
eventinfo.setControlKeyDown(False)
eventinfo.setAltkeydown(false)
; message("finding \""+finding+"\". <ESC> to restart.")
errortraponwarnings(no)
foundit = true
delayscreenupdates(yes)
; stLastFindGL = finding+".."
IF not findInUI(ui,finding,finding+"..",loFindAgain) then
; stLastFindGL = ".."+finding+".."
if NOT findInUI(ui,finding,".."+finding+"..",loFindAgain) then
writemsg(finding,"notfound")
foundit = false
else
writemsg(finding,"partial")
endif
else
writemsg(finding,"found")
Endif
if NOt foundit then
unHiliteFindText()
endif
delayscreenupdates(no)
onfail
errorshow()
foundit = false
endtry
endif ;\\ if searching
if mysettings.size()>0 then
Settings(mySettings,false)
endif
;mytime = time()
setMouseShape(MouseArrow,false)
onfail
;
libcommon.Errorlogshow(libcommon.errorlogger())
errorshow()
foundit = false
endtry
return(foundit)
endMethod
searchme - 8 method HiliteFindText( stWord string) logical
var
mysettings
dynarlo
loAnswer logical
; stnewword,stRtf,stcode string
mytc
tcursor
lihold longint
; loMatch
logical
endvar
try
Settings(mySettings,true)
errortraponwarnings(yes)
ColorListarGl.empty()
ignorecaseinstringcompares(true)
mytc.open(dmgetproperty(TraceOutputdm'tablename,"FullName") )
; dmattach(mytc,"TraceOutputdm")
mytc.edit()
dmget("TraceOutputdm","ID",liHold)
UnhiliteFindText()
; mytc.forceRefresh()
mytc.qlocate(lihold)
hiliteArgl.addlast( mytc."ID" )
cmHiliteFindTextAlpha(mytc,stword)
mytc.Unlockrecord()
cmSynctc(mytc)
try
mytc.qlocate(lihold)
onfail
errorclear()
endtry
dmresync( "TraceOutputdm",mytc)
mytc.close()
; TraceOutputdm.action(DataRefresh)
loanswer= true
onfail
errorshow()
loanswer = false
endtry
Settings(mySettings,false)
setMouseShape(mouseArrow,false)
return loAnswer
endMethod
HiliteFindText 9 ) method UnHiliteFindText() logical
var
mysettings
dynarlo
loAnswer logical
li1, lihold longint
memo1 memo
params dynArAtType
lireccolor longint
mytc tcursor
endvar
try
Settings(mySettings,true)
errortraponwarnings(yes)
mytc.open(dmgetproperty(TraceOutputdm'tablename,"FullName") )
mytc.edit()
dmget("TraceOutputdm","ID",liHold)
for li1 from 1 to hiliteargl.size()
mytc.qlocate(hiliteargl[li1])
if not cfFormatLine(mytc,memo1,lireccolor,params) then
fail(USerError+1,"")
endif
mytc."Display" = memo1
mytc."RecColor" = liRecColor
mytc.Unlockrecord()
endfor
hiliteargl.empty()
; dmresync( "TraceOutputdm",mytc)
cmSynctc(myt ÿ c)
try
mytc.qlocate(lihold)
onfail
errorclear()
endtry
dmresync( "TraceOutputdm",mytc)
mytc.close()
TraceOutputdm.action(DataRefresh )
loanswer= true
onfail
errorshow()
loanswer = false
endtry
Settings(mySettings,false)
return loAnswer
endMethod
UnHiliteFindText : method cmSubstituteMemo ( stFindinString memo
, stReplaceWith memo
, stString memo
) Memo
{ in string STstring
find all occurances of stFindinString and replace with stReplacewith
}
var
answer Memo
mysettings dynarlo
pos
, nextPos LongInt
stFront
, stBack memo
endVar
try
Settings ( mySettings , true )
SetMouseShape ( Mousewait , true )
; DelayScreenUpdates(yes)
ErrorTraponwarnings ( yes )
answer = ""
pos = stString.searchex ( stFindInString )
while pos > 0
stBack = ""
stFront = ""
if pos > 1 then
stFront = stString.substr ( 1 , pos - 1 )
else
stFront = ""
endIf
nextPos = pos + stFindInString.sizeex ( )
if Nextpos < stString.sizeex ( ) + 1 then
stBack = memo( stString.substr ( nextpos , stString.sizeex ( ) + 1 ) )
else
stBack = ""
endIf
answer = answer + stfront + stReplacewith
stString = stback
pos = stString.searchex ( stFindInString )
endWhile
if answer.size() > 0 then
answer = answer + stBack
else
answer = stString ;no matches made
endIf
; answer = ststring
onFail
errorshow ( )
answer = "<ERROR>"
endTry
Settings ( mySettings , false )
;SetMouseShape(MouseArrow,false)
;DelayScreenUpdates(No)
return ( answer )
endMethod
cmSubstituteMemo ; method cfFormatLine(var mytc tcursor,var rtMemo memo, var liRecColor longint,Extraparams dynArAtType ) logical
var
li2 longint
stfill string
st1, st2 string
;rtMemo memo
loAnswer
,loMatch logical
stObject
,stMethod
,stLineNum
string
endvar
try
stfill=""
for li2 from 2 to (mytc."Indent")
stfill = stfill+ SpecialCharARGL[3]+" "
endfor
switch
case mytc."LineType" = SpChContinueCurrentMEthodCT :
stfill = stfill+ SpecialCharARGL[ mytc."LineType" ]+ SpecialCharARGL[8]+ SpecialCharARGL[8]
{
case ( mytc."LineType" = SpChExtendMethodDownCT or mytc."LineType" = SpChExtendMehodUpCT) and mytc."Indent">1 :
stfill = stfill+ SpecialCharARGL[4]+ SpecialCharARGL[8]+ SpecialCharARGL[ mytc."LineType" ]
case mytc."LineType" = SpChExtendMethodDownCT or mytc."LineType" = SpChExtendMehodUpCT :
stfill = stfill + SpecialCharARGL[ mytc."LineType" ]
}
case mytc."LineType"< 1 :
otherwise :
stfill = stfill+SpecialCharARGL[ mytc."LineType" ]
endswitch
stfill = cfrtfFormat(stfill ,"MS Mincho",0,1,False,False,False)
{ for li2 from 2 to (mytc."Indent")
if mytc."Indent" = li2 then
switch
case mytc."LineType"= 4 :
stfill = stfill+SpecialCharARGL[ mytc."LineType" ]+ SpecialCharARGL[8]+ SpecialCharARGL[8]
case mytc."LineType" = 1 or mytc."LineType" = 2 :
stfill = stfill+ SpecialCharARGL[3]+"....."+ SpecialCharARGL[ mytc."LineType" ] ;"|"
case mytc."LineType" > 0 :
stfill= stfill+ SpecialCharARGL[ mytc."LineType" ]
endswitch
else
stfill = stfill+ SpecialCharARGL[3]+"....." ;"|"
endif
endfor }
st2 = hilitecode(mytc."Code",mytc."LineType",liRecColor)
stObject = mytc."ObjectName"
stMethod = mytc."MethodName"
stLineNum = string( mytc."LineNum")
if Extraparams.size() > 1 then
if NOt cmHiliteCodeAlpha(st2,lomatch,Extraparams) then
fail(USerError+1,"")
endif
if NOt cmHiliteCodeAlpha(stObject,lomatch,Extraparams) then
fail(USerError+1,"")
endif
if NOt cmHiliteCodeAlpha(stMethod,lomatch,Extraparams) then
fail(USerError+1,"")
endif
if NOt cmHiliteCodeAlpha(stLineNum,lomatch,Extraparams) then
fail(USerError+1,"")
endif
endif
st1 =stfill
+ iif(mytc."CollapseType" = 0,"",SpecialCharARGL[ mytc."CollapseType" ] )
+cfRTFItalic(stObject)
+"::"
+ cfrtfBold(stMethod)
+cfFontColor(stLineNum,blue)+"=>"
+ st2
if mytc."CollapseType" > 0 then
;
beep()
endif
if mytc."BuiltIn" =1 then
st1 =cfFontColor(st1,DarkBlue)
endif
rtMemo = memo( RTFtoMemo(st1 ) )
lOAnswer = True
onfail
errorshow()
rtmemo="PARESEERROR"
loAnswer = False
endtry
return loAnswer
endMethod
cfFormatLine < L method cmHiliteCodeAlpha(var stcode string, var loMatch logical , params dynArAtType) logical
var
strt
,stmatch
,st1,st2,st3
,stesc
string
loAnswer logical
endvar
try
;
errortraponwarnings(yes)
lomatch = False
if (params["loAdvmatch"] = 1) then
lomatch = stcode.advmatch( "("+ params["MatchText"] +")" ,stmatch)
else
stmatch = params["MatchText"]
lomatch= true
endif
if loMatch then
;match again
lomatch = False
stesc = cmAdvanceMatchEscape( stmatch )
if stcode.advmatch("(..)("+stesc+")(..)",st1,st2,st3) then
lomatch = true
if Not params.contains("loUnderline") then
params["loUnderline"] = smallint(0)
endif
stcode = st1+cfRTFFormat(st2,"",CurrFontSizeGL,params["MatchTextColor"]
,(params["loBOld"]=1),(params["loItalics"]=1),(params["loUnderline"]=1))
+ st3
endif
endif
loAnswer = True
onfail
errorshow()
loAnswer = False
endtry
;errortraponwarnings(no)
return LoAnswer
endMethod
cmHiliteCodeAlpha = m method cmHiliteAllFindText(stword string) logical
var
mysettings
dynarlo
loAnswer logical
stnewword,stRtf,stcode string
mytc
tcursor
memo1 memo
liRecColor longint
params dynArAtType
loMatch
logical
endvar
try
Settings(mySettings,true)
errortraponwarnings(yes)
ColorListarGl.empty()
ignorecaseinstringcompares(true)
; dmattach(mytc,"TraceOutputdm")
mytc.open(dmgetproperty(TraceOutputdm'tablename,"FullName") )
mytc.edit()
UnhiliteFindText()
scan mytc :
if NOT match( mytc."display",".."+stword+"..") then
loop ;;;;;;
endif
hiliteArgl.addlast( mytc."ID" )
stcode = hiliteCode(mytc."Code",mytc."LineType",liRecColor)
params["loAdvmatch"] = smallint(0)
params["MatchText"] = stword
params["MatchTextColor"] = 61247; longint(4690683) ;orangey
params["loBOld"] = smallint(1)
params["loItalics"] = smallint(1)
params["loUnderline"] = smallint(1)
; cmHiliteCodeAlpha(mytc."Code",lomatch,params)
if not cfFormatLine(mytc,memo1,lireccolor,params) then
fail(USerError+1,"")
endif
mytc."Display" = memo1
mytc."RecColor" = liRecColor
mytc.Unlockrecord()
endscan
mytc.EndEdit()
mytc.close()
; dmresync( "TraceOutputdm",mytc)
TraceOutputdm.action(DataRefresh)
loanswer= true
onfail
errorshow()
loanswer = false
endtry
Settings(mySettings,false)
setMouseShape(mouseArrow,false)
return loAnswer
endMethod
cmHiliteAllFindText > I method cmHiliteFindTextAlpha(var mytc tcursor, stword string) logical
var
memo1 memo
liRecColor longint
params dynArAtType
stcode string
loAnswer logical
endvar
try
stcode = hiliteCode(mytc."Code",mytc."LineType",liRecColor)
params["loAdvmatch"] = smallint(0)
params["MatchText"] = stword
params["MatchTextColor"] = longint(4690683) ;orangey
params["loBOld"] = smallint(1)
params["loItalics"] = smallint(0)
params["loUnderline"] = smallint(1)
; cmHiliteCodeAlpha(mytc."Code",lomatch,params)
if not cfFormatLine(mytc,memo1,lireccolor,params) then
fail(USerError+1,"")
endif
mytc."Display" = memo1
mytc."RecColor" = liRecColor
loAnswer = true
onfail
errorshow()
loAnswer = false
endtry
return loAnswer
endMethod
cmHiliteFindTextAlpha ? É method cmSyncTc(var mytc tcursor) logical
var
myfil dynarray[] string
rangear array[] string
loanswer logical
endvar
try
traceOutputdm.getrange(rangear)
if rangear.size() > 1 then
try
mytc.setRange(rangear)
onfail
errorclear()
endtry
endif
traceoutputdm.getgenfilter(myfil)
if myfil.size() > 0 then
try
mytc.setGenFilter(myfil)
onfail
errorclear() ;if errortraponwarnings yes then if
;an empty set will trigger "at begining of table" error
endtry
endif
loanswer = true
onfail
errorshow()
loanswer = false
endtry
return loanswer
endMethod
cmSyncTc @ â ! method getStringBeforeLastInstance(const stOrig string,const stToFind string) string
; Purpose : return a string before last occurence of a specified string
;
; Parameters:
; stOrig : original string
; stToFind : string to find
;
; Return Value: string or empty string if string not found
;
; Test:
; #1 origString not blank
; #2 stToFind not blank
; #3 stToFind smaller than origString
; #4 stToFind must exist in string
; #5 stToFind cannot be found at index=1
;
; Version: 1.00 3/6/2005 Submitted R Wiltshire
var
liSizeOrig,
liSizeFind,
liIndex longint
arPos arLongType
endvar
liSizeOrig = stOrig.sizeEx()
liSizeFind = stToFind.sizeEx()
if liSizeOrig = 0 or ;Test#1
liSizeFind = 0 or ;Test#2
liSizeFind > liSizeOrig ;Test#3
then
return("")
endif
;Test#4 does stToFind exist ?
liIndex = stOrig.searchEx(stToFind)
if liIndex = 0 then
return("")
endif
; only call if at least one match
searchAll_array(stOrig,stToFind,arPos)
; last item in array is last index
liIndex = arPos[arPos.size()]
;Test#5 liIndex=1, nothing before it
if liIndex = 1 then
return("")
endif
return(stOrig.substr(1,liIndex-1))
endMethod
getStringBeforeLastInstance A ¾ method searchAll_array(const stOrig string,
const stToFind string,
var arPos arLongtype) logical
; Purpose : enhance pdox searchEx function and find all matches
; match is for entire string, not pieces of it
; all match positions are added to array
;
; Parameters:
; stOrig : original string we are searching through
; stStringToFind : find this string in original
; arPos : output parameter containing each position string is found at
; Return Values:
; return false if no matches found, return true if at least one found
; output parameter arPos is array of match positions
;
; Test
; #1 stOrig not blank
; #2 stToFind not blank
; #3 stToFind must exist at least once
;
; Version: 1.00 2/01/2005 Submitted R Wiltshire
;
; Note : Continual use of substr/searchEx has performance issues with large strings
var
liSizeOrig,liSizeFind,liPosFound longint
liPos,liStartPos,liEndPos longint
endvar
; empty array first
arPos.empty()
; initial sizes
liSizeOrig = stOrig.sizeEx()
liSizeFind = stToFind.sizeEx()
if liSizeOrig = 0 or ;Test#1
liSizeFind = 0 ;Test#2
then
return(false)
endif
;Test#3 doest stToFind exist ?
liPosFound = stOrig.searchEx(stToFind)
if liPosFound = 0 then
return(false)
endif
; save position of first substring that was found
arPos.addLast(liPosFound)
; calc starting and end points for remaining searches
liPos = liPosFound + liSizeFind
liEndPos = liSizeOrig - liSizeFind + 1
; step through orginal string and find other matches
while liPos <= liEndPos
; possibly more efficient algorithm in future version
if stOrig.substr(liPos,liSizeFind) = stToFind
then
arPos.addLast(liPos)
liPos = liPos + liSizeFind
else
liPos = liPos + 1
endif
endwhile
return(true)
endMethod
searchAll_array B # method cfChopSt ( stMyString String ) String
;remove the last character from a string
if stMyString.sizeex ( ) = 1 then
return ( "" )
else
return ( cmSubstrST ( stMystring , 1 , stMystring.sizeex ( ) - 1 ) )
endIf
EndMethod
cfChopSt C z method cmSubStrST ( stMystring String ; string to operate on
, liStartIndex LongInt ;position in string to start
, liNumofChars LongInt ;how many to get
;if liNumofChars is > string size
;OR < 1 then will return to end of string
) String
;same as substring except you don't get an error
;if numchars > string size or listartIndex too large
;Returns to end of string is liNumofChars < 1 or > string size
;if liStartIndex < 1 or > string size then returns ""
var
strt String
endVar
stRt = "error"
if liStartIndex > stMystring.sizeex ( ) or stMyString = "" or liStartIndex < 1 then
stRt = ""
else
if liNumofChars + liStartIndex > ( stMyString.sizeex ( ) + 1 )
OR liNumofChars < 1 then
liNumofChars = stMystring.sizeex ( ) - liStartIndex + 1
endIf
strt = stMystring.substr ( liStartIndex , liNumofChars )
endIf
return stRt
EndMethod
cmSubStrST D method CollapseToggle() logical
var
loanswer logical
mysettings dynarlo
lihold longint
stIndent string
mytc tcursor
siShow smallint
memo1 memo
params dynArAtType
lireccolor longint
endVar
try
Settings ( mySettings , true )
SetMouseShape ( Mousewait , true )
DelayScreenUpdates(yes)
ErrorTraponwarnings ( yes )
mytc.open(dmgetproperty(TraceOutputdm'tablename,"FullName") )
mytc.edit()
dmget("TraceOutputdm","ID",liHold)
mytc.qlocate(lihold)
stIndent = mytc."LineFilter"
if mytc."CollapseType" = 5 then
mytc."CollapseType" = 6
sishow = 0
else
mytc."CollapseType" = 5
sishow = 1
endif
;format line correctly
if not cfFormatLine(mytc,memo1,lireccolor,params) then
fail(USerError+1,"")
endif
mytc."Display" = memo1
mytc."RecColor" = liRecColor
mytc.Unlockrecord()
mytc.nextRecord()
mytc.edit()
while (searchex(mytc."LineFilter",stIndent) = 1 )
if mytc."LineFilter" = stIndent then
quitloop
endif
mytc."LoShow" =siShow
mytc.unlockrecord()
mytc.NextRecord()
endwhile
mytc.endEdit()
cmSynctc(mytc)
try
mytc.qlocate(lihold)
onfail
errorclear()
endtry
dmresync( "TraceOutputdm",mytc)
loAnswer = true
onFail
errorshow ( )
loAnswer = false
endTry
Settings ( mySettings , false )
SetMouseShape(MouseArrow,false)
DelayScreenUpdates(No)
return (loanswer )
endMethod
CollapseToggle E j method RefreshFormat() logical
var
mytc tcursor
memo1 memo
params dynArAtType
lireccolor longint
loanswer logical
endvar
try
mytc.open(dmgetproperty(TraceOutputdm'tablename,"FullName") )
mytc.edit()
scan mytc :
if not cfFormatLine(mytc,memo1,lireccolor,params) then
fail(USerError+1,"")
endif
mytc."Display" = memo1
mytc."RecColor" = liRecColor
mytc.Unlockrecord()
endscan
mytc.EndEdit()
mytc.close()
loAnswer = True
onfail
errorshow()
loAnswer = false
endtry
return loanswer
endMethod
RefreshFormat ~ method keyPhysical(var eventInfo KeyEvent)
if eventInfo.isPreFilter() then
;// This code executes for each object on the form
else
;// This code executes only for the form
switch
case EventInfo.iscontrolkeydown() and eventinfo.vchar() = "F" :
findfld.moveto()
eventinfo.setErrorCode(userError)
endswitch
endIf
endMethod
keyPhysical - F Ó proc cpResizeX( ui uiobject, sizept point, pospt point ) logical
var
loAnswer logical
pt point
contui uiobject
endvar
try
contui.attach( ui.container )
if NOT pospt.isblank() then
pt = ui.position
ui.position = point( pospt.x(), pt.y() )
endif
if NOT sizept.isblank() then
pt = ui.size
ui.size = point ( sizept.x() , pt.y() )
endif
loanswer = true
onfail
errorshow()
loanswer = false
endtry
return loAnswer
endproc
proc cpResizeY( ui uiobject, sizept point, pospt point ) logical
var
loAnswer logical
pt point
contui uiobject
endvar
try
pt = ui.position
contui.attach( ui.container )
ui.position = point( pt.x(), pospt.y() )
pt = ui.size
ui.size = point ( pt.x(), sizept.y() )
loanswer = true
onfail
errorshow()
loanswer = false
endtry
return loAnswer
endproc
proc cpFitX( maxX longint, ContainerUI uiObject ) longint
return maxX - ContainerUI.leftborder - ContainerUI.rightBorder
endproc
proc cpFitY( maxY longint, ui uiObject ) longint
return maxY - ui.topborder - ui.bottomBorder
endproc
method FormResize() logical
var
mysettings
dynarlo
loAnswer logical
pageui
,ui
,formui uiobject
px,py,pw,pl longint
pageSizept , OrigpageSizept
,formSizept
, uiSizept
,sizept point
loBiggerY
,loBiggerX logical
x,y,w,l longint
SizeAr dynarray[] point
PosAr dynarray[] point
UIar array[] uiObject ; order of containership
li1, lix,liy longint
stname ,stNB string
fui UIObject
TFar Array[] String
endvar
try
Settings(mySettings,true)
errortraponwarnings(yes)
delayScreenUpdates(yes)
setMouseShape(MouseWait,true)
pageui.attach(fome.first)
fome.getPosition(x,y,w,l)
if w < 8760 then
w = 8760
endif
if l < 6570 then
l = 6570
endif
fome.setPosition(x,y,w,l)
UIar.grow(2)
Uiar[1].attach(fome)
Uiar[2].attach( fome.first)
formSizept = fome.size
OrigpageSizept = pageui.size
loBiggerX = (OrigpageSizept.x() < FormSizept.x())
loBiggerY = (OrigpageSizept.y() < FormSizept.y())
Sizear[ pageui.fullname ] .setx( formsizept.x())
Sizear[ pageui.fullname ] .sety( formsizept.y() )
;move these objects to the bottom and change length in x
uiar.grow(1)
li1 = uiar.size()
uiar[ li1 ] .attach( findfld.container )
stname = uiar[li1].fullname
sizear[stname]= uiar[li1].size
sizear[stname ]. setx( cpFitx( Sizear[ pageui.fullname ] .x(),pageui ) )
posar[stname ] = uiar[li1].position
posar[stname ].sety (Sizear[ pageui.fullname ].y() - pageui.bottomborder - sizear[stname].y() )
uiar.grow(1) ;notebook
li1 = uiar.size()
ui.attach(traceOutputdm.container)
uiar[ li1 ].attach(ui.container) ; should be the notebook
stname = uiar[li1].fullname
stNB = stname
posar[stname ] = uiar[li1].position ;keep posti
sizear[stname]= uiar[li1].size
sizear[stname].setx( cpFitx( Sizear[ pageui.fullname ] .x(),pageui ) )
sizear[stname] .sety(Sizear[ pageui.fullname ].y() - sizear[uiar[li1-1].fullname].y() - 15 -posar[stname].y() ) ;place just above bottom bar
uiar.grow(1) ;display fld in trace tf
li1 = uiar.size()
uiar[li1].attach(TraceOutputdm.display)
stname = uiar[li1].fullname
sizear[stname]= uiar[li1].size
posar[stname ] = uiar[li1].position
lix= (sizear[stNB].x() - posar[stname].x() - uiar[li1-1].rightborder - 100) * 3
traceoutputdm.currentcolumn = 1
traceoutputdm.columnwidth = lix +30
sizear[stname].setx( lix )
uiar.grow(1) ;tracetableframe
li1 = uiar.size()
uiar[li1].attach(traceOutputDM)
stname = uiar[li1].fullname
sizear[stname]= uiar[li1].size
posar[stname ] = uiar[li1].position
sizear[stname].setx( sizear[stNB].x() - posar[stname].x() - uiar[li1-2].rightborder - 100 )
sizear[stname].sety( sizear[stNB].y() - posar[stname].y() - uiar[li1-2].bottomborder -100 )
uiar.grow(1) ; options tableframe
li1 = uiar.size()
uiar[li1].attach(OptionsDM)
stname = uiar[li1].fullname
sizear[stname]= uiar[li1].size
posar[stname ] = uiar[li1].position
sizear[stname].sety( sizear[stNB].y() - posar[stname].y() - uiar[li1-3].bottomborder -100 )
uiar.grow(1) ;help box
li1 = uiar.size()
uiar[li1].attach(helpbox)
stname = uiar[li1].fullname
sizear[stname]= uiar[li1].size
posar[stname ] = uiar[li1].position
lix = sizear[stNB].x() - posar[stname].x() - uiar[li1-4].rightborder - 100
if lix> 5580 then
lix = 5580
endif
liy = sizear[stNB].y() - posar[stname].y() - uiar[li1-4].bottomborder -100
if liy > 6075 then
liy = 6075
endif
sizear[stname] = point (lix,liy)
if loBiggerX or loBiggerY then
for li1 from 2 to UIar.size()
message(uiar[li1].name )
if NOT sizear.contains( uiar[li1].fullname ) then
sizear[uiar[li1].fullname] = blank()
endif
if NOT posar.contains( uiar[li1].fullname ) then
posar[uiar[li1].fullname] = blank()
endif
if loBiggerX then
if NOT cpResizeX( uiar[ li1 ], sizear[ uiar[li1].fullname ] , posar[uiar[li1].fullname ] ) then
fail(UserError+1,"")
endif
endif
if loBiggerY then
if NOT cpResizeY( uiar[ li1 ], sizear[ uiar[li1].fullname ] , posar[uiar[li1].fullname ] ) then
fail(UserError+1,"")
endif
endif
endfor
endif
if NOT loBiggerX or NOT loBiggerY then
for li1 from UIar.size() to 2 step -1
if NOT sizear.contains( uiar[li1].fullname ) then
sizear[uiar[li1].fullname] = blank()
endif
if NOT posar.contains( uiar[li1].fullname ) then
posar[uiar[li1].fullname] = blank()
endif
if NOT loBiggerX then
if NOT cpResizeX( uiar[ li1 ], sizear[ uiar[li1].fullname ] , posar[uiar[li1].fullname ] ) then
fail(UserError+1,"")
endif
endif
if NOT loBiggerY then
if NOT cpResizeY( uiar[ li1 ], sizear[ uiar[li1].fullname ] , posar[uiar[li1].fullname ] ) then
fail(UserError+1,"")
endif
endif
endfor
{
TraceOutputDm.enumObjectNames( tfar )
for li1 from 1 to tfar.size()
fui.attach( tfar[li1] )
if fui.Class = "Record" then
sizept =fui.size
sizept .sety( 261 )
fui.size = sizept
endif
endfor
}
endif
loanswer = true
onfail
errorshow()
loAnswer = false
endtry
Settings(mySettings,false)
delayscreenUpdates(no)
setMouseShape(mousearrow,false)
return loAnswer
endMethod
FormResize »
var
x,y,w,l longint
endvar
method menuAction(var eventInfo MenuEvent)
if eventInfo.isPreFilter() then
;// This code executes for each object on the form
else
;// This code executes only for the form
switch
case
eventinfo.id() = MenuControlSize :
dodefault
formResize()
endswitch
endIf
endMethod
menuAction / C & O ] $' N h ð ð €€€ › þ / Ï
Tracer Parse . 4 I:\manager\MANAGER.FT B #Formdata1 POST >
ÿÿÿÿ A :PRIV:__tracer.db RecColor
display
PARADOX setx( lix )
uiar.grow(1) ;tracetableframe5 TraceOutputdm 8
DBWINUS0 D } ‘ , € :PRIV:parseHilite.db 2 MatchText ÿ loAdvmatch matchTextColor matchRecordColor loBold loItalics PARADOX name].sety( sizear[stNB].y() - posar[stname].y() -5 optionsDM 8 intl850 D Ý # U ¯ , € € ÿ €” ÿÿ E ¬& N € ÿÿ € Ž& 0 E
* 0 2 < € € € ÿ €É ÿÿ H
& ï
€, ÿÿ
method pushButton(var eventInfo Event)
var
stname string
endvar
tracerOff()
;stname = dmgetproperty(TraceOutputdm'tablename,"FullName")
stname= ":priv:__tracerdata.txt"
tracerSave(stname)
filefld.value = stname
sleep()
parse(stname)
sleep()
endMethod
pushButton + € ï
E " Parse Tracer Contents
º 0 2 < € € ÿ €œ
ÿÿ • Â € ÿÿ • Â E
? 0 2 < € Ì BM
6 ( Ø
ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì À ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì À À À ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéì À À À À À ØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéì À À À À À À À ØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéì À À À À À À À À À À À ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì À À À À € € € À À € € € À ØéìØéìØéìØéìØéì ØéìØéìØéìØéì À À € À € À À À € € À À À € À ØéìØéìØéìØéì ØéìØéìØéìØéì À À € À À € ÿÿÿÿÿÿ À € € ÿÿÿÿÿÿ À € À À ØéìØéìØéìØéì ØéìØéìØéìØéì € € À ÿÿÿ À € € À ÿÿÿ € ØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéì€ Øéì€ ™¨¬€ € € € ™¨¬€ € € ™¨¬ØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéì€ ™¨¬ À À À À À À À ™¨¬€ ØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéì À À À À À À À À ØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéì À À À ØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì ÿÿÿÿÿ ÿÿÿÿÿ ÿÿ Øéì€ Øéì ÿÿÿÿÿ ÿÿÿÿÿ ÿÿ ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿØéìØéì€ € ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿ ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì ÿÿÿÿÿ ÿÿÿÿÿ ÿÿ€ € € € € ÿÿÿ ÿÿÿÿÿ ÿÿ ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿØéìØéì€ € ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿ ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì ÿÿÿÿÿ ÿÿ Øéì€ Øéì ÿÿÿÿÿ ÿÿ ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì ÿÿÿ ÿÿÿÿÿ ØéìØéìØéì ÿÿÿ ÿÿÿÿÿ ØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì ØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì d ÿ €Ë filefld ‡ i Ô
€ ÿÿ € Æ
E
“P 0 2 < € + ÿÿÿÿd Ì €
ÿ €Œ ÿÿ Ñ ô ð € ÿÿ € ô ð E
0 2 < € ÿÿÿ
ÿ €á ÿÿ w ð € ÿÿ w ð E
0 2 < € ÿÿÿÿ
File: w € € ÿ €ò ÿÿ
‚ € ¿ Y €j ÿÿ I
method pushButton(var eventInfo Event)
parse(filefld.value)
endMethod
pushButton +
€ ¿ Y E
: 0 2 < €
€
ÿ €æ ÿÿ
¥ 4 u ð € ÿÿ u ð E
0 2 < € ÿÿÿÿ
Parse File u € € ÿ €õ ÿÿ0
& ï
€b ÿÿ A
method pushButton(var eventInfo Event)
TracerShow()
endMethod
pushButton + € ï
0 E Show Tracer
º 0 2 < € € ÿ €œ
ÿÿ)
• Â € ÿÿ • Â ) E
?P 0 2 < € Ì BM
6 ( Ø
ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì€ € € ØéìØéì€ € € ØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéì€ Øéì€ ØéìØéìØéì€ € ØéìØéìØéì€ ØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéì€ ØéìØéì€ ÿÿÿÿÿÿØéì€ € ÿÿÿÿÿÿØéì€ ØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéì€ ØéìØéì€ ØéìÿÿÿØéì€ € ØéìÿÿÿØéì€ ØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéì€ Øéì€ ™¨¬€ € € € ™¨¬€ € € ™¨¬ØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéì€ ™¨¬ØéìØéìØéìØéìØéìØéìØé왨¬€ ØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì ØéìØéì ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì ÿÿÿÿÿ ÿÿÿÿÿ ÿÿ Øéì€ Øéì ÿÿÿÿÿ ÿÿÿÿÿ ÿÿ ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿØéìØéì€ € ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿ ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì ÿÿÿÿÿ ÿÿÿÿÿ ÿÿ€ € € € € ÿÿÿ ÿÿÿÿÿ ÿÿ ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿØéìØéì€ € ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿ ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì ÿÿÿÿÿ ÿÿ Øéì€ Øéì ÿÿÿÿÿ ÿÿ ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì ÿÿÿ ÿÿÿÿÿ ØéìØéìØéì ÿÿÿ ÿÿÿÿÿ ØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØé ÿ ìØéì ØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì d ÿ €• ÿÿ 1
X Ž& p € ÿÿ
€ Ž& p E
> 0 2 < À € : h € ÿ €£ ÿÿ
Ž& p € ÿÿ € Ž& p E
* 0 2 < À € ; € € €
ÿ €â ÿÿ
P S : Ã € ÿÿ : Ã E
0 2 < € ÿÿÿÿ
Tracer : € € €
ÿ €6
TraceOutputdm
– ¤ ”% h €ˆ ÿÿ €x ;****************************************************************************
;
; Global constant declarations.
;
; Written by Mark J. Pauker, MP Technologies,
70353...@compuserve.com;
;****************************************************************************
const
FIELD_NAME = "RecColor"
HIGHLIGHT_COLOR = Gray
unhilight_color = white
endConst
Const ;****************************************************************************
;
; This method is responsible for initializing the global variables used by
; the tableFrame.
;
; Written by Mark J. Pauker, MP Technologies,
70353...@compuserve.com;
;****************************************************************************
method open(var eventInfo Event)
var
endvar
; GLFinding = ""
uiField.attach(FIELD_NAME) ;Bind "relatively" to current field
uiRecord.attach(uiField.container) ;Bind "absolutely" to current record
uiRecord'Color = white
uirecord'Color = transparent
liInitColor = uiRecord'color ;Save record color before highlighted
loEnabled = True ;Enable highlighting
dodefault
endmethod
open + €W ;****************************************************************************
;
; Global variable declarations.
;
; Written by Mark J. Pauker, MP Technologies,
70353...@compuserve.com;
;****************************************************************************
var
;GLFinding string
; GLMyTime time
uiField uiObject ;Attached relatively to any named field in the record
uiRecord uiObject ;Attached absolutely to the "current" record object
liInitColor longInt ;Color of record upon startup (unhighlighted color)
loEnabled logical
endVar
Var
method canArrive(var eventInfo MoveEvent)
;Make sure that the movement was caused by a user's keystroke
if eventInfo.reason() = UserMove and not self.wasLastClicked() then
self.moveTo()
eventInfo.setErrorCode(CanNotDepart)
endIf
endmethod
canArrive 2 < ;****************************************************************************
method close(var eventInfo Event)
uiRecord'color = liInitColor
try
self.dropGenFilter()
onfail
errorclear()
endtry
try
self.setRange()
onfail
errorclear()
endtry
dodefault
endmethod
close + H method keyPhysical(var eventInfo KeyEvent)
Var
stHOld string
myui uiObject
EndVar
{ if not GLMyTime.isassigned() then
GLMyTime = blank()
; GLFinding = ""
endif
}
eventInfo.getTarget(myui)
if not searchme(eventinfo) then
;message("Search failed","Did not find: "+GLFinding)
; GLFinding = ""
endif
switch
case EventInfo.iscontrolkeydown() and eventinfo.vchar() = "F" :
findfld.moveto()
eventinfo.setErrorCode(userError)
endswitch
endMethod
keyPhysical - L ”
method findAgain()
var
eventInfo KeyEvent
endvar
eventInfo.setChar("A")
eventInfo.setControlKeyDown(Yes)
searchme(eventinfo)
endMethod
findAgain }6i Šu i E
0 2 < €
ÿÿÿ
r Šu € ÿ €‘ ÿÿ ‰u ‡ € ÿÿ € ‰u ‡ E
* 0 2 < €
€€€ €
ÿ €ä ÿÿ i K Cq á € ÿÿ Cq á E
0 2 < € ÿÿÿÿ
Trace Cq ÿÿÿ € €
ÿ €ä ÿÿ r K â € ÿÿ á E
0 2 < € ÿÿÿÿ
RecColor ÿÿÿ € € ÿ €‘ ÿÿ L ‡ ‰u ÿ €ù ÿÿ
method action(var eventInfo ActionEvent)
if eventInfo.actionClass() = DataAction then
;We only want to update the highlight once for a given action. The
;problem is that an action such as DataNextRecord will be followed by
;DataArriveRecord, causing the highlight to be updated twice for the
;same action. To remedy this, we turn highlighting off after the
;primary event stream is initiated, and back on when the stream has
;completed. Because the DataArriveRecord action occurs further along
;in the same event stream, it will be ignored by this routine
if loEnabled then
errorTrapOnwarnings(no);!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;gets rid of AT END of table error !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11
delayScreenUpdates(True)
uiRecord'color = liInitColor ;Remove old record's highlight
loEnabled = False ;Disable highlighting
doDefault ;May change current record
loEnabled = True ;Re-enable highlighting
uiRecord.attach(uiField.container)
uiRecord'color = HIGHLIGHT_COLOR ;Highlight new record
delayScreenUpdates(False)
endIf
endIf
endMethod
action . K method open(var eventInfo Event)
self.color= unhilight_color
endMethod
open + V method keyPhysical(var eventInfo KeyEvent)
passevent
disabledefault
endMethod
keyPhysical - € ‰u ÿ E
* 0 2 < € j ÀÀÀ € € ÿ €…
RecColor r â €¾ ÿÿ Ÿ method newValue(var eventInfo Event)
dodefault
if longint(self.value) > 0 then
display.color = self.value
else
display.color = white
endif
endMethod
newValue + € á l E
“ 0 2 < € ÿÿÿÿ + € € € €ÿÿÿÿd Ì € ÿ €¡ display i Cq â €Û ÿÿ X method keyPhysical(var eventInfo KeyEvent)
passevent
disabledefault
endMethod
keyPhysical -
K method mouseDouble(var eventInfo MouseEvent)
CollapseToggle()
endMethod
mouseDouble , € Dq â m E
’ 0 2 < € ÿÿÿÿ + € € € ÿÿÿ d Ì
€ ÿ €£ ÿÿ!
- Ž& p € ÿÿ € Ž& p ! E
* 0 2 < À € ; Ú € € €
ÿ €ã ÿÿ" . ý S ” à € ÿÿ ” à " E
0 2 < € ÿÿÿÿ
Options ” € € €
ÿ €(
optionsDM - ð 8 R Ô €z
ÿÿ €y ;****************************************************************************
;
; Global constant declarations.
;
; Written by Mark J. Pauker, MP Technologies,
70353...@compuserve.com;
;****************************************************************************
const
FIELD_NAME = "matchtext"
HIGHLIGHT_COLOR = Gray
unhilight_color = white
endConst
Const ;****************************************************************************
;
; This method is responsible for initializing the global variables used by
; the tableFrame.
;
; Written by Mark J. Pauker, MP Technologies,
70353...@compuserve.com;
;****************************************************************************
method open(var eventInfo Event)
GLFinding = ""
uiField.attach(FIELD_NAME) ;Bind "relatively" to current field
uiRecord.attach(uiField.container) ;Bind "absolutely" to current record
uiRecord'Color = white
uirecord'Color = transparent
liInitColor = uiRecord'color ;Save record color before highlighted
loEnabled = True ;Enable highlighting
dodefault
endmethod
open + €T ;****************************************************************************
;
; Global variable declarations.
;
; Written by Mark J. Pauker, MP Technologies,
70353...@compuserve.com;
;****************************************************************************
var
GLFinding string
GLMyTime time
uiField uiObject ;Attached relatively to any named field in the record
uiRecord uiObject ;Attached absolutely to the "current" record object
liInitColor longInt ;Color of record upon startup (unhighlighted color)
loEnabled logical
endVar
Var
method canArrive(var eventInfo MoveEvent)
;Make sure that the movement was caused by a user's keystroke
if eventInfo.reason() = UserMove and not self.wasLastClicked() then
self.moveTo()
eventInfo.setErrorCode(CanNotDepart)
endIf
endmethod
canArrive 2 < ;****************************************************************************
method close(var eventInfo Event)
uiRecord'color = liInitColor
try
self.dropGenFilter()
onfail
errorclear()
endtry
try
self.setRange()
onfail
errorclear()
endtry
dodefault
endmethod
close + ø
method action(var eventInfo ActionEvent)
switch
case eventInfo.id() = DataUnlockRecord :
self.action(DataPostRecord)
case eventINfo.id() = DataPostRecord :
refreshbtn.EnableChange(true)
endswitch
endMethod
action . }6 S Õ E
0 2 < €
ÿÿÿ
{
S € ÿ €‘ ÿÿ R w € ÿÿ € R w E
* 0 2 < €
€€€ €
ÿ €æ ÿÿ* i K © á € ÿÿ ¨ á * E
0 2 < € ÿÿÿÿ
Match Text ¨ ÿÿÿ € €
ÿ €ä ÿÿ, {
K * á € ÿÿ * á , E
0 2 < € ÿÿÿÿ
Advmatch * ÿÿÿ € €
ÿ €â ÿÿ4 K Ü á € ÿÿ Ü á 4 E
0 2 < € ÿÿÿÿ
Hilite Ü ÿÿÿ € € ÿ € ÿÿ
L w R • € ÿÿ
method action(var eventInfo ActionEvent)
if eventInfo.actionClass() = DataAction then
;We only want to update the highlight once for a given action. The
;problem is that an action such as DataNextRecord will be followed by
;DataArriveRecord, causing the highlight to be updated twice for the
;same action. To remedy this, we turn highlighting off after the
;primary event stream is initiated, and back on when the stream has
;completed. Because the DataArriveRecord action occurs further along
;in the same event stream, it will be ignored by this routine
if loEnabled then
errorTrapOnwarnings(no);!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;gets rid of AT END of table error !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11
delayScreenUpdates(True)
uiRecord'color = liInitColor ;Remove old record's highlight
loEnabled = False ;Disable highlighting
doDefault ;May change current record
loEnabled = True ;Re-enable highlighting
uiRecord.attach(uiField.container)
uiRecord'color = HIGHLIGHT_COLOR ;Highlight new record
delayScreenUpdates(False)
endIf
endIf
endMethod
action . K method open(var eventInfo Event)
self.color= unhilight_color
endMethod
open + € R •
E
* 0 2 < € j ÀÀÀ € € ÿ €Ô
MatchText + i - © " € ÿÿ € Š ÿ + E
“P 0 2 < € + € € € ÿÿÿÿd Ì € ÿ €ê loAdvmatch ! k < J € ÿÿ € K - E " Use Advanced Matching
“P 0 2 < € + € € € ÿÿÿÿd Ì € ÿ €– ÿÿN - ÿ € ÿÿ € ÿ á N E
; 0 2 < € 1 0 € ÿ €l matchTextColor " ! J Y €Ÿ ÿÿ € method newValue(var eventInfo Event)
dodefault
self.color = iif(isblank(self.value),container.color,self.value)
endMethod
newValue + € J Y / E
’ 0 2 < € + € € € d Ì € ÿ €l matchRecordColor # ! " J h € ÿÿ ~ method newValue(var eventInfo Event)
dodefault
self.color = iif(isblank(self.value),container.color,self.value)
endMethod
newValue + € J h 1 E
’ 0 2 < € + € € € ÿÿ d Ì € ÿ €Ú
loItalics & " # … , , , € ÿÿ $ € - E Italic
“P 0 2 < € ÿÿÿÿ + € ÿÿÿÿd Ì € ÿ €€ ÿÿe # $ $ €ö ÿÿ Õ
method pushButton(var eventInfo Event)
var
sihold smallint
endvar
dodefault
dmget("OptionsDM","loItalics",sihold)
dmput("OptionsDM","loItalics", iif(sihold=1,0,1) )
optionsDM.unlockRecord()
endMethod
pushButton + % € òÿÿÿðÿÿÿ e E
: # 0 2 < € 1 0 % €
ÿ €Ý ÿÿd $ % % % Ã ð € ÿÿ ¥ d E
0$ 0 2 < € ÿÿÿÿ
I ¥ € € ÿ €Ö loBold1 ) # & , ; , € ÿÿ ' € - E
Bold
“P 0 2 < € ÿÿÿÿ + € ÿÿÿÿd Ì € ÿ €y ÿÿ & ' ' €ï ÿÿ Î
method pushButton(var eventInfo Event)
var
sihold smallint
endvar
dodefault
dmget("OptionsDM","lobold",sihold)
dmput("OptionsDM","LoBold", iif(sihold=1,0,1) )
optionsDM.unlockRecord()
endMethod
pushButton + ( € ñÿÿÿðÿÿÿ E
: & 0 2 < € 1 0 ( €
ÿ €Ý ÿÿ# ' ( ( % Ã ð € ÿÿ ´ # E
0' 0 2 < € ÿÿÿÿ
B ¥ € € ÿ €† ÿÿ& + & ) ( < €í ÿÿ Ì
method pushButton(var eventInfo Event)
dodefault
if NOT matchTextColor.isedit() then
matchTextColor.action(DataBeginEdit)
endif
matchTextColor.value= cfPickcolor(matchTextColor.value)
endMethod
pushButton + * € & E Select Font Color
º 0 2 < € € ÿ €B ÿÿ ) * * - á Ã € ÿÿ á Ã E Set Font Color
?P 0 2 < € Ì BM¦ 6 (
p ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì Øéì€ € € € ØéìØéìØéì€ € € € € € Øéì ØéìØé쀀€€ ØéìØéìØéìØéìØé쀀€€ € €€€ØéìØéì ØéìØéìØéì€ € ØéìØéìØéìØé쀀€€ € ØéìØéìØéì ØéìØéìØé쀀€€ ØéìØéìØéìØéì€ € €€€ØéìØéìØéì ØéìØéìØéìØéì€ € € € € € € ØéìØéìØéìØéì ØéìØéìØéìØé쀀€€ ØéìØéì€ € €€€ØéìØéìØéìØéì ØéìØéìØéìØéìØéì€ € Øéì€ € ØéìØéìØéìØéìØéì ØéìØéìØéìØéìØé쀀€€ € € €€€ØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéì€ € € ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØé쀀€€ €€€ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéì€ ØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì d ÿ €’ ÿÿ' ) + Ì - €ó ÿÿ Ò
method pushButton(var eventInfo Event)
dodefault
if NOT matchRecordColor.isedit() then
matchRecordColor.action(DataBeginEdit)
endif
matchRecordColor.value= cfPickcolor(matchRecordColor.value)
endMethod
pushButton + , € ' E $ Select Background Color
º 0 2 < € € ÿ €d ÿÿ$ + , , - á Ò € ÿÿ á Ò $ E
?P 0 2 < € Ì BMÖ 6 ( ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì €€€ ØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéì €€€€€€€€€ ØéìØéìØé쀀€ØéìØéì ØéìØéìØéì ÀÀÀÀÀÀÀÀÀ€€€€€€ ØéìØéì€ €€€Øéì ØéìØéì ÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀ€€€€€€ Øéì€ € Øéì Øéì ÀÀÀÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀ€€€€€€€ € € Øéì ØéìØéì ÀÀÀÿÿÿÿÿÿÀÀÀ ÀÀÀÀÀÀ€€€€ € € Øéì ØéìØéìØéì ÀÀÀÿÿÿ € ÀÀÀ€ € € € Øéì ØéìØéìØéìØéì ÀÀÀÿÿÿ€ ÀÀÀ€€€€ € € ØéìØéì ØéìØéìØéìØéì€ ÀÀÀ€ €€€ €€€ØéìØéìØéìØéì ØéìØéìØéìØéì€ Øéì € €€€ØéìØéìØéìØéìØéì ØéìØéìØéìØéì€ ØéìØéì€ €€€ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØé쀀€€ € €€€ØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì d
ÿ €§ helpbox . - Ç 8 c Ô € ÿÿ + _
À ( E
0 2 < € ÿÿ ÿ - Ÿ
$ HIlite Text
The values entered under "Match Text" will be hilited in the tracer output according to your selections.
Select Advmatch if you wish to use opal advanced matching characters. Otherwise matches perfomed as "..yourtext.."
Select how to hilite the matched text, bold, italic, font color or background color.
Press <F9> to begin editing.
The first match on a line determines the background color. À_
€ € € €
€ € €
€ ÿ €
Timerbtn - . Â þ €5 ÿÿ A method open(var eventInfo Event)
self.value = false
endMethod
open + Œ method timer(var eventInfo TimerEvent)
tracerwrite("Elapsed Time: "+format("TO(%H:%M:%S)",time(CpuClockTime() - liTime)) )
endMethod
timer 4 € Var
liTime longint
endVar
Var ° method newValue(var eventInfo Event)
dodefault
if self.value then
liTime = cpuClockTime()
self.setTimer( 2000, true)
else
self.killtimer()
endif
endMethod
newValue + ; method changeValue(var eventInfo ValueEvent)
endMethod
changeValue 0 / € ÿ . E " Time Stamp Tracer Log
“P 0 2 < € + ÿÿÿÿd Ì € ÿ €( ÿÿQ . / / ï
€— ÿÿ ¦
method pushButton(var eventInfo Event)
{if self.value then
liTime = cpuClockTime()
self.setTimer( 2000, true)
else
self.killtimer()
endif }
endMethod
pushButton + :
method mouseClick(var eventInfo MouseEvent)
endMethod
mouseClick , m method mouseDown(var eventInfo MouseEvent)
disabledefault
timerbtn.value = NOt timerbtn.value
endMethod
mouseDown , 0 € ï
Q E
º . 0 2 < € True False € ÿ €œ
ÿÿ% / 0 0 • Â € ÿÿ • Â % E
?P 0 2 < € Ì BM
6 ( Ø
ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì À À À À À ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéì À À À À À À À À À À À ØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéì À À À À À À À À À À À À À À À ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì À À À À À À ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ À À À À À ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì À À À À ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÿÿÿÿÿÿÿÿÿ À À À À ØéìØéìØéìØéìØéì ØéìØéìØéìØéì À À À ÿÿÿÿÿÿÿÿÿÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ À À À ØéìØéìØéìØéì ØéìØéìØéì À À À ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÿÿÿ À À À ØéìØéìØéì ØéìØéì À À À ÿÿÿÿÿÿÿÿÿÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ À À À ØéìØéìØéì ØéìØéì À À À ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ À À À ØéìØéì ØéìØéì À À ÿÿÿÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ À À À ØéìØéì Øéì À À À ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÀÀÀÿÿÿ À À À Øéì Øéì À À À ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ À À À Øéì Øéì À À À ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ À À À Øéì Øéì À À À ÿÿÿÿÿÿÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀ À À À Øéì Øéì À À À ÿÿÿÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ À À À Øéì Øéì À À À ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ À À À Øéì ØéìØéì À À ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿ ÿÿÿÿÿÿÀÀÀ À À À ØéìØéì ØéìØéì À À À ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿ À À À ØéìØéì ØéìØéì À À À ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÀÀÀ À À À ØéìØéìØéì ØéìØéìØéì À À À ÿÿÿÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÿÿÿ ÿÿÿÿÿÿ À À À ØéìØéìØéì ØéìØéìØéìØéì À À À ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÿÿÿ À À À ØéìØéìØéìØéì ØéìØéìØéìØéìØéì À À À ÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ À À À ØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì À À À À À ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ À À À À ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéì À À À À À À À À À À À À À À À ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéì À À À À À À À À À À À À À ØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì À À À À À ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì d ÿ €ó ÿÿ
3 1 d & ï
€` ÿÿ ?
method pushButton(var eventInfo Event)
tracerOn()
endMethod
pushButton + 2 € ï
E Stop Tracer
º 0 2 < € € ÿ €œ
ÿÿ
1 2 2 • Â € ÿÿ • Â
E
?P 0 2 < € Ì BM
6 ( Ø
ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì À À À À À À ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéì À À À À À À À À À À ØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéì À À À À À À À À À À À À ØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì À À À À À À € € € À À € € € À À ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéì À À À À € À € À À À € € À À À € À ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéì À À À € À À € ÿÿÿÿÿÿ À € € ÿÿÿÿÿÿ À € À À ØéìØéìØéìØéìØéì ØéìØéìØéì À À À À € À À € À ÿÿÿ À € € À ÿÿÿ À € À À À ØéìØéìØéìØéì ØéìØéìØéì À À À À € À € ™¨¬€ € € € ™¨¬€ € € ™¨¬ À À À ØéìØéìØéìØéì ØéìØéì À À À À À À € ™¨¬ À À À À À À À ™¨¬€ À À À À À ØéìØéìØéì ØéìØéì À À À À À À À À À À À À À À À À À À À À À À ØéìØéìØéì ØéìØéì À À À À À À À À À À À À À À À À À À À À À À ØéìØéìØéì ØéìØéì À À À À À À À À ØéìØéìØéì ØéìØéì À À À ÿÿÿÿÿ ÿÿÿÿÿ ÿÿ À € À ÿÿÿÿÿ ÿÿÿÿÿ ÿÿ À À À ØéìØéìØéì ØéìØéì À À À ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿ À À € € ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿ À À À ØéìØéìØéì ØéìØéìØéì À À ÿÿÿÿÿ ÿÿÿÿÿ ÿÿ€ € € € € ÿÿÿ ÿÿÿÿÿ ÿÿ À À ØéìØéìØéìØéì ØéìØéìØéì À À ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿ À À € € ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿ À À ØéìØéìØéìØéì ØéìØéìØéìØéì À ÿÿÿÿÿ ÿÿ À € À ÿÿÿÿÿ ÿÿ À ØéìØéìØéìØéìØéì ØéìØéìØéìØéì À ÿÿÿ ÿÿÿÿÿ À À À ÿÿÿ ÿÿÿÿÿ À ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì À À À À À À ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéì À À À À À À À À À À À À À À ØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéì À À À À À À À À À À ØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì À À À À À À ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì d ÿ €õ ÿÿ 5 1 3 ª & ï
€a ÿÿ @
method pushButton(var eventInfo Event)
tracerOff()
endMethod
pushButton + 4 € ï
E
Start Tracer
º 0 2 < € € ÿ €œ
ÿÿ 3 4 4 • Â € ÿÿ • Â E
?P 0 2 < € Ì BM
6 ( Ø
ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìpmëpmëpmëpmëpmëpmëØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìpmëpmëpmëpmëpmëpmë€ € € pmëpmë€ € € pmëpmëØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìpmëpmëpmëpmë€ pmë€ pmëpmëpmë€ € pmëpmëpmë€ pmëØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìpmëpmëpmë€ pmëpmë€ ÿÿÿÿÿÿpmë€ € ÿÿÿÿÿÿpmë€ pmëpmëØéìØéìØéìØéìØéì ØéìØéìØéìpmëpmëpmëpmë€ pmëpmë€ pmëÿÿÿpmë€ € pmëÿÿÿpmë€ pmëpmëpmëØéìØéìØéìØéì ØéìØéìØéìpmëpmëpmëpmë€ pmë€ ™¨¬€ € € € ™¨¬€ € € ™¨¬pmëpmëpmëØéìØéìØéìØéì ØéìØéìpmëpmëpmëpmëpmëpmë€ ™¨¬pmëpmëpmëpmëpmëpmëpm뙨¬€ pmëpmëpmëpmëpmëØéìØéìØéì ØéìØéìpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëØéìØéìØéì ØéìØéìpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëØéìØéìØéì ØéìØéìpmëpmëpmë pmëpmë pmëpmëpmëØéìØéìØéì ØéìØéìpmëpmëpmë ÿÿÿÿÿ ÿÿÿÿÿ ÿÿ pmë€ pmë ÿÿÿÿÿ ÿÿÿÿÿ ÿÿ pmëpmëpmëØéìØéìØéì ØéìØéìpmëpmëpmë ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿpmëpmë€ € ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿ pmëpmëpmëØéìØéìØéì ØéìØéìØéìpmëpmë ÿÿÿÿÿ ÿÿÿÿÿ ÿÿ€ € € € € ÿÿÿ ÿÿÿÿÿ ÿÿ pmëpmëØéìØéìØéìØéì ØéìØéìØéìpmëpmë ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿpmëpmë€ € ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿ pmëpmëØéìØéìØéìØéì ØéìØéìØéìØéìpmë ÿÿÿÿÿ ÿÿ pmë€ pmë ÿÿÿÿÿ ÿÿ pmëØéìØéìØéìØéìØéì ØéìØéìØéìØéìpmë ÿÿÿ ÿÿÿÿÿ pmëpmëpmë ÿÿÿ ÿÿÿÿÿ pmëØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì pmëpmëpmëpmë pmëpmëØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìpmëpmëpmëpmëpmëpmëpmëpmëpmëpmëØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìpmëpmëpmëpmëpmëpmëØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì d ÿ €÷ ÿÿ 7 3 5 ð & ï
€c ÿÿ B
method pushButton(var eventInfo Event)
tracerClear()
endMethod
pushButton + 6 € ï
E
Clear Tracer
º 0 2 < € € ÿ €œ
ÿÿ 5 6 6 • Â € ÿÿ • Â E
? 0 2 < € Ì BM
6 ( Ø
ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéì ÿÿÿÿÿÿÿÿÿÿÿÿ ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéì ÿÿÿÿÿÿ€ € € ÿÿÿÿÿÿ€ € € ØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéì ÿÿÿ€ ÿÿÿ€ ÿÿÿÿÿÿÿÿÿ€ € ÿÿÿÿÿÿÿÿÿ€ ØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì ÿÿÿ€ ÿÿÿÿÿÿ€ ÿÿÿÿÿÿÿÿÿ€ € ÿÿÿÿÿÿÿÿÿ€ ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéì ÿÿÿÿÿÿ€ ÿÿÿÿÿÿ€ ÿÿÿÿÿÿÿÿÿ€ € ÿÿÿÿÿÿÿÿÿ€ ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéì ÿÿÿÿÿÿ€ ÿÿÿ€ ™¨¬€ € € € ™¨¬€ € € ™¨¬ÿÿÿ ØéìØéìØéìØéìØéì ØéìØéìØéì ÿÿÿÿÿÿÿÿÿÿÿÿ€ ™¨¬ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ™¨¬€ ÿÿÿÿÿÿ ØéìØéìØéìØéìØéì ØéìØéìØéì ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ØéìØéìØéìØéì ØéìØéìØéì ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ØéìØéìØéìØéì ØéìØéìØéì ÿÿÿ ÿÿÿÿÿÿ ÿÿÿ ØéìØéìØéìØéì ØéìØéìØéì ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿ ÿÿ ÿÿÿ€ ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿ ÿÿ ÿÿÿ ØéìØéìØéìØéì ØéìØéìØéì ÿÿÿ ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿ€ € ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿ ØéìØéìØéìØéìØéì ØéìØéìØéìØéì ÿÿÿÿÿ ÿÿÿÿÿ ÿÿ€ € € € € ÿÿÿ ÿÿÿÿÿ ÿÿ ØéìØéìØéìØéìØéì ØéìØéìØéìØéì ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿ€ € ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿ ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì ÿÿÿÿÿ ÿÿ ÿÿÿ€ ÿÿÿ ÿÿÿÿÿ ÿÿ ØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿ ÿÿÿ ÿÿÿÿÿ ØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéì ÿÿÿÿÿÿÿÿÿÿÿÿ ØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéì ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì ØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéìØéì d ÿ € ÿÿ H 5 L 7 È Ž& w € ÿÿ 8 € p& Y E
: 0 2 < € ÿÿÿÿ
ÿ €C
msgfld 7 9 ? 8 H < [ €n
ÿÿ C method open(var eventInfo Event)
liMaxStatusGL = 0
endMethod
open + I $ method cmStatusInc(lisetting longint) logical
var
statui uiobject
mysettings
dynarlo
loAn ¤0swer
logical
pt
point
nuPercent
number
liSize
longint
endvar
try
Settings(mySettings,true)
errortraponwarnings(yes)
if NOT cmStatusSetup(0,"") then
fail(USerError+1,"")
endif
;change box to correct size percent
statui.attach("statbox")
statui.visible = true
pt = msgfld.size
; liMaxStatusGL
nuPercent = number(liSetting) / number(liMaxStatusGL)
liSize = longint(pt.x() * nuPercent)
if liSize> pt.x() then
liSize = pt.x()
endif
statui.size = point( lisize, pt.y())
loanswer= true
onfail
errorshow()
loanswer = false
endtry
Settings(mySettings,false)
return loAnswer
endMethod
cmStatusInc J Ó method cmStatusReset()
var
statui uiobject
endvar
try
statui.attach("statbox")
statui.delete()
onfail
errorclear()
endtry
msgfld.value = ""
liMaxStatusGL = 0
endMethod
cmStatusReset K P method cmStatusSetup(liMaxSize longint,stMsg string) logical
var
statui, msgui,pageui uiobject
mysettings
dynarlo
loAnswer
,locreate
logical
pt
,ptpos
point
endvar
try
Settings(mySettings,true)
errortraponwarnings(yes)
try
statui.attach("statbox")
locreate = false
onfail
errorclear()
locreate= true
endtry
if locreate then
pt = msgfld.size ; pt.y()-40
ptpos = msgfld.position
pageui.attach(msgfld.container)
statui.create ( BoxTool , ptpos.x(), ptpos.y() ,0 ,pt.y(), pageui )
statui.visible = false
statui.color = blue
statui.translucent = true
try
statui.frame.style = noFrame
onfail
errorclear()
endtry
statui.name = "StatBox"
if liMaxSize < 1 then
liMaxSize = 100
endif
liMaxStatusGL = liMaxSize
msgfld.value = stmsg
endif
loanswer= true
onfail
errorshow()
loanswer = false
endtry
Settings(mySettings,false)
return loAnswer
endMethod
cmStatusSetup €& Var
liMaxStatusGL longint
endVar