www.pudn.com > jq_transfile.ARJ > LOADSDK.PRG


*ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ· 
*º                                                         º 
*º   ÎļþÃû³Æ: LoadSDK                                     º 
*º   ¹¦    ÄÜ: SDK for FoxProµÄ×°ÔØ³ÌÐò                    º 
*º   °æ    Ȩ: ±±¾©Ï£Íû¸ß¼¼Êõ¼¯ÍÅ                          º 
*º   ×÷    Õß: Âí¿Æ                                        º 
*º   °æ±¾ÀúÊ·: ÐÞ¸ÄÈÕÆÚ   ÐÞ¸ÄÕß   ˵Ã÷                    º 
*º             ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ     º 
*º             1995.10.08  Âí¿Æ   ÔÚSDK 1.0°æÖÐÌṩ        º 
*º             1996.06.08  Âí¿Æ   ÔÚSDK 2.0°æÖÐÌṩ£¬ÔöÌí  º 
*º                                SDKÄÚ²¿»Øµ÷¿â            º 
*º   ×¢    Òâ: Çë²»Òª¸Ä¶¯´Ë³ÌÐòÎļþµÄÃû³ÆºÍ³ÌÐòµÄÄÚÈÝ£¬·ñ  º 
*º             Ôò¿ÉÄܵ¼ÖÂSDK³ö´í¡£                         º 
*º                                                         º 
*ÓÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĽ 
set talk off 
set esca off 
priv FoxVer 
 
if disk()<4096000 
  ? 'Ó²ÅÌÊ£Óà¿Õ¼ä²»×ã4Õ×(M)!' 
  wait 'Çë°´ÈÎÒâ¼ü...' 
  retu  
endi  
FoxVer = vers() 
if ('2.5' $ FoxVer) or ('2.6' $ FoxVer) 
  if '(X)' $ FoxVer 
    set libr to FP25X.plb addi 
  else  
    set libr to FP25.plb addi 
  endi  
else 
  ? 'SDK²»Ö§³ÖÄúËùʹÓõÄFoxPro°æ±¾!' 
  wait 'Çë°´ÈÎÒâ¼ü...' 
  retu  
endi 
set libr to DBFKey addi 
 
public _SDKPUB , _COPY , _AND , _OR , _XOR , _NORMAL , _SHADOW , _PARARENT; 
 , _OUTLINE , _BACK , _SLOPE , _SCROLL , _LEFTUP , _LEFTDOWN , _RIGHTUP ; 
, _RIGHTDOWN , _LINE , _BAR , _PIE , _BAR3D , _PIE3D 
_SDKPUB = '' 
_COPY = 0 
_AND = 1 
_OR = 2 
_XOR = 3 
_NORMAL = 0 
_SHADOW = 1 
_PARARENT = 2 
_OUTLINE = 4 
_BACK = 8 
_SLOPE = 16 
_SCROLL = 32 
_LEFTUP = 1 
_LEFTDOWN = 2 
_RIGHTUP = 3 
_RIGHTDOWN = 4 
_LINE = 1 
_BAR = 2 
_PIE = 3 
_BAR3D = 18 
_PIE3D = 19 
_GENMENU = 'SDKMENU' 
_GENSCRN = 'SDKSCRN' 
set colo of sche 1 to N/W,W+/B,N/W,W+/B,W/B,W+/B,W+/W,W/N,N/W,N+/W 
set colo of sche 2 to N/W,N/W,W/W,W+/B,N/W,W+/B,GR/W,W/B,N/W,W+/W 
if  not used('SDKRSC') 
  use SDKRSC in sele(1) share 
endi  
set order to RSCTAG in SDKRSC 
retu  
 
*=========== LoadSDK Ä£¿é½áÊø ================ 
 
*ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ· 
*º                                                         º 
*º   ×¢Òâ: ÒÔÏÂΪ SDK 2.0°æÖÐʹÓõÄSDKÄÚ²¿»Øµ÷º¯Êý¿â£¬Çë   º 
*º         Çë²»Òª¸Ä¶¯´Ë³ÌÐòÎļþµÄÃû³ÆºÍ³ÌÐòµÄÄÚÈÝ£¬·ñÔò¿É  º 
*º         Äܵ¼Ôò¿ÉÄܵ¼ÖÂSDK³ö´í¡£                         º 
*º                                                         º 
*ÓÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĽ 
*ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ· 
*º                                                         º 
*º   º¯    Êý: __Pull                                      º 
*º   ¹¦    ÄÜ: SDK 2.0µÄÄÚ²¿º¯Êý                           º 
*º   ×¢    Òâ: Çë²»Òª¸Ä¶¯´Ë³ÌÐòµÄÃû³ÆºÍ³ÌÐòµÄÄÚÈÝ£¬·ñÔò¿É  º 
*º             Äܵ¼ÖÂSDK³ö´í¡£                             º 
*º                                                         º 
*ÓÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĽ 
proc __Pull 
para tName 
 
clea type 
= __SdkSvc2(tName) 
acti Popu &tName 
=DeacPopup(tName) 
if last()=19 
  keyb '{LEFTARROW}' 
  keyb '{ENTER}' 
endi  
if last()=4 
  keyb '{RIGHTARROW}' 
  keyb '{ENTER}' 
endi  
if last()=27 and not mdown() 
  keyb '{ESC}' 
endi  
retu  
 
*ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ· 
*º                                                         º 
*º   º¯    Êý: __ChnFld                                    º 
*º   ¹¦    ÄÜ: SDK 2.0µÄÄÚ²¿º¯Êý                           º 
*º   ×¢    Òâ: Çë²»Òª¸Ä¶¯´Ë³ÌÐòµÄÃû³ÆºÍ³ÌÐòµÄÄÚÈÝ£¬·ñÔò¿É  º 
*º             Äܵ¼ÖÂSDK³ö´í¡£                             º 
*º                                                         º 
*ÓÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĽ 
Proc __ChnFld 
para tOrgFld 
 
priv pArea , pFldName , pFull 
pFldName = uppe(rtrim(strtran(tOrgFld,'->','.'))) 
if at('.',pFldName)=0 
  pFull = set('FULL') 
  set full off 
  pFldName = subs(dbf(),3,len(dbf())-6)+'.'+pFldName 
  set full &pFull 
endi  
pArea = sele(0) 
if not used('SDKRSC') 
  use in sele(1) share SDKRSC 
endi  
sele SDKRSC 
set order to RSCTAG in SDKRSC 
seek pFldName 
if !foun() 
	seek subs(pFldName,at('.',pFldName)) 
endi 
publ _SDKPUB 
_SDKPUB = iif(found(),allt(RSCTITLE),tOrgFld) 
sele (pArea) 
rele pArea , pFldName , pFull 
retu  
 
*ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ· 
*º                                                         º 
*º   º¯    Êý: __GETICO                                    º 
*º   ¹¦    ÄÜ: SDK 2.0µÄÄÚ²¿º¯Êý                           º 
*º   ×¢    Òâ: Çë²»Òª¸Ä¶¯´Ë³ÌÐòµÄÃû³ÆºÍ³ÌÐòµÄÄÚÈÝ£¬·ñÔò¿É  º 
*º             Äܵ¼ÖÂSDK³ö´í¡£                             º 
*º                                                         º 
*ÓÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĽ 
proc __GetICO 
para tIcoName 
 
priv pIcoName, pArea, pFHandle 
pIcoName = uppe(allt(tIcoName)) 
pFHandle = fopen(pIcoName,0) 
publ _SDKPUB 
if pFHandle>0 
  _SDKPUB = fread(pFHandle,10240) 
  = fclose(pFHandle) 
else  
  pArea = sele(0) 
  if  not used('SDKRSC') 
    use in sele(1) share SDKRSC 
  endi  
  sele SDKRSC 
  set order to RSCTAG in SDKRSC 
  seek '_ICO.'+pIcoName 
  _SDKPUB = iif(found(),RSCMEMO,'') 
  sele (pArea) 
endi  
rele pIcoName, pArea, pFHandle 
retu  
 
*ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ· 
*º                                                         º 
*º   º¯    Êý: __Chart                                     º 
*º   ¹¦    ÄÜ: SDK 2.0µÄÄÚ²¿º¯Êý                           º 
*º   ×¢    Òâ: Çë²»Òª¸Ä¶¯´Ë³ÌÐòµÄÃû³ÆºÍ³ÌÐòµÄÄÚÈÝ£¬·ñÔò¿É  º 
*º             Äܵ¼ÖÂSDK³ö´í¡£                             º 
*º                                                         º 
*ÓÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĽ 
proc __Chart 
para R1 , C1 , R2 , C2 , tFldLst 
priv all like p* 
priv X1 , Y1 , X2 , Y2 , X11 , Y11 , X12 , Y12 , X21 , Y21 , X22 , Y22 
pChartSet = GetChartSet() 
pType = asc(subs(pChartSet,1,1)) 
pSubType = asc(subs(pChartSet,2,1)) 
pNetLine = asc(subs(pChartSet,3,1)) 
pDistY = asc(subs(pChartSet,4,1)) 
pBack1 = asc(subs(pChartSet,5,1)) 
pBack2 = asc(subs(pChartSet,7,1)) 
pScaleLine = asc(subs(pChartSet,9,1)) 
pOutLine = asc(subs(pChartSet,11,1)) 
pTextFG = asc(subs(pChartSet,13,1)) 
if pOutLine=pBack2 
  pOutLine = 15-pBack2 
endi  
if pType=_PIE or pType=_PIE3D 
  pFldNum = 2 
else  
  pFldNum = occu(',',tFldLst)+1 
endi  
*= afields(pFldAry) 
for pI = 1 to pFldNum 
   if !type(GetFld(pI,tFldLst))$"CN" 
    ? 'ÕÒ²»µ½×Ö¶Î'+GetFld(pI,tFldLst) 
    retu  
  endi  
endf 
count to pRecNum 
if pRecNum=0 
  retu  
endi  
pFldX = GetFld(1,tFldLst) 
pMaxY = 0 
pMinY = 0 
for pI = 2 to pFldNum 
  pFld = GetFld(pI,tFldLst) 
  calc max(&pFld) to pMax 
  calc min(&pFld) to pMin 
  if pMax>pMaxY 
    pMaxY = pMax 
  endi  
  if pMin16 
    pCharSize = 16 
  endi  
  pLen = 0 
  go top 
  scan  
    if pLen16 
    pCharSize = 16 
  endi  
  pLen = 0 
  for pI = 2 to pFldNum 
    pFld = GetFld(pI,tFldLst) 
    if pLen5,10,iif(pScaleY>2,5,pScaleY)) 
  pScaleY = pScaleY*(10**pLogs) 
  pScaleNum = ceil((pMaxY-pMinY)/pScaleY) 
  pScaleStep = int((Y22-Y21)/pScaleNum) 
  pRatioY = pScaleStep/pScaleY 
  Y21 = (Y22-pScaleStep*pScaleNum) 
  Y11 = Y21 
  Y0 = Y22-int((-pMinY/pScaleY*pScaleStep)) 
endi  
pGraph = GetGraphSet() 
pHZ = GetHZSet() 
= RefreshScr() 
= SetFillStyle(1,pBack1) 
= SetPutMode(0) 
= DrawBar(X1,Y1,X2,Y2) 
= SetFillStyle(1,pBack2) 
= SetColor(pScaleLine) 
if pType=_BAR3D 
  = DrawBar(X21,Y21,X22,Y22) 
  = Rect(X21,Y21,X22,Y22) 
  = SlopeBar(X11,Y11,X21,Y12,pBack2,pScaleLine,2) 
  = SlopeBar(X11,Y22,X12,Y12,pBack2,pScaleLine,1) 
else  
  = DrawBar(X11,Y11,X12,Y12) 
  = Rect(X11,Y11,X12,Y12) 
endi  
= SetHZSize(16,16,0) 
= SetHZColor(pTextFG) 
= SetHZBkColor(pBack1) 
= SetHZStyle(0) 
if ( not pType=_PIE) and ( not pType=_PIE3D) 
  for pI = 1 to pScaleNum 
    pX = pScaleStep*pI 
    = DrawLine(X11-3,Y12-pX,X11,Y12-pX) 
    if  not pNetLine=0 
      = DrawLine(X11,Y12-pX,X21,Y22-pX) 
      = DrawLine(X21,Y22-pX,X22,Y22-pX) 
    endi  
    pY = pScaleY*pI 
    if (pY>=10) 
      pStr = ltrim(str(pY)) 
    else  
      pLogs = -log10(pY)+1 
      pStr = ltrim(str(pY,pLogs+1,pLogs)) 
    endi  
    = ShowHZ(X11-len(pStr)*8-5,Y12-pX-3,pStr) 
  endf 
endi  
= SetHZSize(pCharSize,pCharSize,0) 
pColor = 1 
pFillStyle = 1 
if pType=_PIE or pType=_PIE3D 
  go top 
  pFld = GetFld(2,tFldLst) 
  calc sum(&pFld) to pSumY for &pFld>=0 
  if pSumY=0 
    pSumY = 1 
  endi  
  pRatioY = 360/pSumY 
  pScaleY = 0 
  X21 = X11+(X12-X11)/2 
  Y21 = Y11+(Y12-Y11)/2 
  X22 = (X12-X11)/2-1 
  if pType=_PIE 
    Y22 = X22 
    if Y22>(Y12-Y11)/2 
      Y22 = (Y12-Y11)/2 
      X22 = Y22 
    endi  
  else  
    Y22 = X22/2 
    if Y22*2.5>(Y12-Y11) 
      Y22 = (Y12-Y11)/2.5 
      X22 = Y22*2 
    endi  
    Y21 = Y21-(Y22*0.25) 
  endi  
  = SetColor(pOutLine) 
  if pType=_PIE3D 
    = Ellipse(X21,Y21+Y22*0.5,180,360,X22,Y22) 
    = DrawLine(X21-X22,Y21,X21-X22,Y21+Y22/2) 
    = DrawLine(X21+X22,Y21,X21+X22,Y21+Y22/2) 
  endi  
  go top 
  pJ = 0 
  scan  
    = SetColor(pOutLine) 
    = SetFillStyle(pFillStyle,pColor) 
    = Pie(x21,y21,pScaleY*pRatioY+0.5,(pScaleY+&pFld)*pRatioY+0.5,x22,y22) 
    pScaleY=pScaleY+&pFld 
    pStepX = pScaleY*pRatioY+0.5 
    if pType=_PIE3D and pStepX>180 
      pBarX1 = X22*cos(dtor(pStepX)) 
      pBarY1 = Y22*sin(dtor(pStepX)) 
      = DrawLine(X21+pBarX1,Y21-pBarY1,X21+pBarX1,Y21-pBarY1+Y22/2) 
    endi  
    =InfoBar(x12+pCharSize*0.5,y11+pCharSize*pJ+pCharSize/6, x12+pCharSize*1.5; 
		,y11+pCharSize*pJ+pCharSize-pCharSize/6, &pFldX) 
    pJ = pJ+1 
    if pDistY=0 or pDistY=2 
      pColor = iif(pColor>16,1,pColor+1) 
    endi  
    if pDistY=1 or pDistY=2 
      pFillStyle = iif(pFillStyle>10,1,pFillStyle+1) 
    endi  
  ends 
else  
  for pI = 0 to pFldNum-2 
    pFld = GetFld(pI+2,tFldLst) 
    = SetColor(pColor) 
    = SetFillStyle(pFillStyle,pColor) 
    pChnFld = ChnField(pFld) 
    = InfoBar(X12+pCharSize*0.5,Y21+pCharSize*pI+pCharSize/6,X12+pCharSize*1.5; 
		,Y21+pCharSize*pI+pCharSize-pCharSize/6,pChnFld) 
    go top 
    do case 
    case pType=_LINE 
      pBarX1 = X21 
      pBarX2 = pBarX1 
      pBary1=y22-int(&pFld*pRatioY) 
    case pType=_BAR 
      pBarX1 = X21+pStepX1/2+pStepX1*pI 
      pBarY1 = Y22 
    case pType=_BAR3D 
      do case 
      case pSubType=1 
        pBarX1 = X21+pStepX1/2+pStepX1*pI 
        pBarY1 = Y22 
      case pSubType=2 
        pBarX1 = X21+pStepX1/4-pStepX/2*pI 
        pBarY1 = Y22+pStepX1/4+pStepX/2*pI 
      endc 
    endc 
    = SetColor(pColor) 
    = SetFillStyle(pFillStyle,pColor) 
    scan  
      if pType=_LINE 
        pBary2=y22-int(&pFld*pRatioY) 
        = DrawLine(pBarX1,pBarY1,pBarX2,pBarY2) 
        if pSubType=2 
          = DrawBar(pBarX2-pStepX1,pBarY2-pStepX1,pBarX2+pStepX1,pBarY2+pStepX1) 
        endi  
        pBarX1 = pBarX2 
        pBarX2 = pBarX1+pStepX 
        pBarY1 = pBarY2 
      else  
        pBarX2 = pBarX1+pStepX1 
        pBary2=pBary1-&pFld*pRatioY 
        = ChartBar(pBarX1,pBarY1,pBarX2,pBarY2,pColor) 
        pBarX1 = pBarX1+pStepX 
      endi  
    ends 
    if pDistY=0 or pDistY=2 
      pColor = iif(pColor>16,1,pColor+1) 
    endi  
    if (pDistY=1 or pDistY=2) and !pType=_LINE 
      pFillStyle = iif(pFillStyle>10,1,pFillStyle+1) 
    endi  
  endf 
endi  
if ( not pType=_PIE) and ( not pType=_PIE3D) 
  = SetColor(pScaleLine) 
  = DrawLine(X11,Y12,X12-(Y12-Y22),Y12) 
  = ShowHZ(X11+pStepX*pRecNum+8,Y12+4,rtrim(ChnField(pFldX))) 
  pLen = 1 
  go top 
  scan  
    if pLen8) 
    pCharSize = 8 
  endi  
  = SetHZSize(pCharSize*2,pCharSize*2,0) 
  pOffsetX = iif(pType=_LINE,0,pStepX) 
  go top 
  pI = 0 
  scan  
    = DrawLine(X11+pStepX*pI+pOffsetX,Y12,X11+pStepX*pI+pOffsetX,Y12+3) 
    = ShowHZ(x11+pStepX*pI+1,y12+4,rtri(&pFldX)) 
    pI = pI+1 
  ends 
endi  
= SetGraphSet(pGraph) 
= SetHZSeT(pHZ) 
retu  
 
*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
*³ Function:     GetFld                                            ³ 
*³ Description:  ÄÚ²¿º¯Êý                                          ³ 
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 
func GetFld 
para tFldNo , tFldLst 
priv pPos1 , pPos2 
if tFldNo=1 
  pPos1 = 1 
else  
  pPos1 = at(',',tFldLst,tFldNo-1)+1 
endi  
pPos2 = at(',',tFldLst,tFldNo) 
if pPos2=0 
  pPos2 = len(tFldLst)+1 
endi  
retu subs(tFldLst,pPos1,pPos2-pPos1) 
 
*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
*³ Function:     GetFld                                            ³ 
*³ Description:  ÄÚ²¿º¯Êý                                          ³ 
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 
func SlopeBar 
para X1 , Y1 , X2 , Y2 , Color1 , Color2 , Flag 
priv pI , pIncr 
= SetColor(Color1) 
if Flag=1 
  pIncr = Y2-Y1 
  for pI = 1 to pIncr-1 
    = DrawLine(X1+pIncr-pI,Y1+pI,X2-pI,Y1+pI) 
  endf 
  = SetColor(Color2) 
  = DrawLine(X1+pIncr,Y1,X2,Y1) 
  = DrawLine(X1,Y2,X2-pIncr,Y2) 
  = DrawLine(X1+pIncr,Y1,X1,Y2) 
  = DrawLine(X2,Y1,X2-pIncr,Y2) 
else  
  pIncr = X2-X1 
  for pI = 1 to pIncr-1 
    = DrawLine(X1+pI,Y1+pIncr-pI,X1+pI,Y2-pI) 
  endf 
  = SetColor(Color2) 
  = DrawLine(X1,Y1+pIncr,X1,Y2) 
  = DrawLine(X2,Y1,X2,Y2-pIncr) 
  = DrawLine(X1,Y1+pIncr,X2,Y1) 
  = DrawLine(X1,Y2,X2,Y2-pIncr) 
endi  
retu  
 
*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
*³ Function:     GetFld                                            ³ 
*³ Description:  ÄÚ²¿º¯Êý                                          ³ 
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 
proc ChartBar 
para X1 , Y1 , X2 , Y2 , pColor 
priv pI , pDepth 
= SetColor(pOutLine) 
if (X1>X2) 
  pI = X2 
  X2 = X1 
  X1 = pI 
endi  
if (Y1>Y2) 
  pI = Y2 
  Y2 = Y1 
  Y1 = pI 
endi  
if pType=_BAR 
  = DrawBar(X1,Y1,X2,Y2) 
  = Rect(X1,Y1,X2,Y2) 
else  
  pDepth = int((X2-X1)/2) 
  = DrawBar(X1-pDepth,Y1+pDepth,X2-pDepth,Y2+pDepth) 
  = Rect(X1-pDepth,Y1+pDepth,X2-pDepth,Y2+pDepth) 
  = SlopeBar(X1-pDepth,Y1,X2,Y1+pDepth,pColor,pOutLine,1) 
  = SlopeBar(X2-pDepth,Y1,X2,Y2+pDepth,pColor,pOutLine,2) 
endi  
retu  
 
*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
*³ Function:     GetFld                                            ³ 
*³ Description:  ÄÚ²¿º¯Êý                                          ³ 
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 
proc InfoBar 
para X1 , Y1 , X2 , Y2 , Info 
= SetColor(pOutLine) 
= DrawBar(X1,Y1,X2,Y2) 
= Rect(X1,Y1,X2,Y2) 
= ShowHZ(X2+4,Y1,rtrim(Info)) 
retu