#include "common.ch" #include "inkey.ch" #include "icbrasil.ch" #include "cxwin.ch" #ifdef K_MINMOUSE ** No HB 0.45 nao havia esta constante anteriormente #else #define K_MINMOUSE 1001 #define K_MAXMOUSE 1007 #endif static Static1, Static2:= .F., Static3, Static4, Static5, Static6, ; Static7, Static8, Static9, Static10 static Static11:= "" static Static12, Static13:= .T., Static14:= .F., Static15:= .F., ; Static16:= .F., Static17:= 0, Static18:= {}, Static19:= 0, ; Static20:= 0, Static21:= 0, Static22:= {5, {|| vlmarquee()}} static ; arrMouseInfLeft := { 0,0,0 },; arrMouseInfRight := { 0,0,0 } static ; sbGuiSupport := .T.,; // .F. sbGuiSupportEx := .T. ******************************** function NEWBUTTON return {} ******************************** FUNCTION ADDBUTTON(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, ; Arg9) local Local1 Arg5:= iif(At("&", Arg5) == 0, "&" + Arg5, Arg5) Arg7:= iif(ISNIL(Arg7), .F., Arg7) Arg8:= iif(ISNIL(Arg8), {|| Nil}, Arg8) Arg9:= iif(ISNIL(Arg9), .T., Arg9) Local1:= SubStr(Arg5, At("&", Arg5) + 1, 1) AAdd(Arg1, {Arg5, Arg6, Arg8, Arg9, Arg7, Arg2, Arg3, Local1, ; Arg4}) return Nil ******************************** function SHOWBUTTON(Arg1, Arg2, Arg3) aeval(Arg1, {|_1| drawbutton(_1, Arg2, Arg3)}) return Nil ******************************** static function BUTEXECUTE(Arg1, Arg2, Arg3, Arg4) drawbutton(Arg1[Arg2], Arg3, Arg4, 3, .F., .F.) InKey(0.05) //.1 drawbutton(Arg1[Arg2], Arg3, Arg4, 2, .F.) eval(Arg1[Arg2][3]) InKey(0.05) //.1 hidebutfoc(Arg1[Arg2], Arg3, Arg4) return Arg2 ******************************** function BUTTONCOLOr(Arg1) return BUTTONCOLO(Arg1) function BUTTONCOLOrs(Arg1) return BUTTONCOLO(Arg1) function BUTTONCOLO(Arg1) local Local1 Local1:= {} Arg1:= iif(ISNIL(Arg1), 1, 2) if (Arg1 == 1) AAdd(Local1, "N/W") AAdd(Local1, "W*/N") AAdd(Local1, "N*/N") AAdd(Local1, "W+*/N") AAdd(Local1, "W*/N") AAdd(Local1, "W+*/N") AAdd(Local1, "N+*/N") AAdd(Local1, "GR+*/N") AAdd(Local1, "R*/W") elseif (Arg1 == 2) AAdd(Local1, "N*/W") AAdd(Local1, "W+/W") AAdd(Local1, "N+/W") AAdd(Local1, "N/W") AAdd(Local1, "N+/W") AAdd(Local1, "N/W") AAdd(Local1, "W/W") AAdd(Local1, "W+/W") AAdd(Local1, "R*/W") endif return Local1 ******************************** function VLGETGOTO(Arg1) local Local1, Local2 Local1:= getactive() Local2:= ascan(getlist, {|_1| _1 == Local1}) if (Local2 > Arg1) Local1:exitstate(1) else Local1:exitstate(2) endif vlgetmovto(Arg1) return Nil ******************************** function NEWBARMENU return {} ******************************** function TEXTMENU(Arg1) local Local1, Local2, Local3 Local1:= At("&", Arg1) Local2:= SubStr(Arg1, 1, Local1 - 1) Local3:= SubStr(Arg1, Local1 + 1) return iif(Local1 != 0, Local2 + Local3, Arg1) ******************************** function SETBARMSG(Arg1) local Local1 Local1:= Static13 if (Arg1 != Nil) Static13:= Arg1 endif return Local1 ******************************** static function DRAWBUTTON(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) local Local1, Local2, Local3, Local4, Local5, Local6, Local7, ; Local8, Local9, Local10, Local11, Local12, Local13, Local14, ; Local15, Local16, Local17, Local18, Local19, Local20, Local21 memvar lPress Arg4:= iif(ISNIL(Arg4), 1, Arg4) Arg5:= iif(ISNIL(Arg5), .T., Arg5) Arg6:= iif(ISNIL(Arg6), .T., Arg6) Local10:= textbutton(Arg1[1]) if (Arg2 == 1) Local1:= "N/W" Local2:= iif(Arg6, "W*/N", "N*/N") Local3:= "N/W" //"W+*/N" Local4:= "W*/N" Local6:= "W+*/N" Local7:= "N+*/N" Local8:= "N/W" //Local9:= iif(Arg1[4], "GR+/W", "N+/W") //iif(Arg1[4], "GR+*/N", "W*/N") Local9:= iif(Arg5, "N+/W","GR+/W") //iif(Arg1[4], "GR+*/N", "W*/N") elseif (Arg2 == 2) Local1:= "N*/W" Local2:= iif(Arg6, "W+/W", "N+/W") Local3:= "N/W" Local4:= "N+/W" Local6:= "N/W" Local7:= "W/W" Local8:= "N/W" //Local9:= iif(Arg1[4], "GR+/W", "N+/W") //iif(Arg1[4], "W+/W", "N+/W") Local9:= iif(Arg5, "N+/W","GR+/W") //iif(Arg1[4], "W+/W", "N+/W") elseif (Arg2 == 3) Local1:= Arg3[1] Local2:= iif(Arg6, Arg3[2], Arg3[3]) Local3:= Arg3[4] Local4:= Arg3[5] Local6:= Arg3[6] Local7:= Arg3[7] Local9:= iif(Arg1[4], Arg3[8], Arg3[5]) endif if (Arg4 == 1) Local10:= padc(Local10, Arg1[9] - 3) Local11:= At(Upper(Arg1[8]), Upper(Local10)) - 1 Local5:= iif(Arg1[4], Local3, Local4) //Local8:= Local7 elseif (Arg4 == 2) Local10:= padc(Local10, Arg1[9] - 3) Local11:= At(Upper(Arg1[8]), Upper(Local10)) - 1 Local5:= iif(Arg1[4], Local3, Local4) //Local8:= Local6 elseif (Arg4 == 3) Local10:= " " + Left(padc(Local10, Arg1[9] - 3), Arg1[9] - 4) Local11:= At(Upper(Arg1[8]), Upper(Local10)) - 1 Local5:= iif(Arg1[4], Local3, Local4) //Local8:= Local6 endif Local20:= At(alltrim(Local10), Local10) - 1 Local21:= Local20 + Len(Arg1[1]) + 2 if (Arg5) Local12:= "Õ" Local13:= iif(Arg6, "Ý", "×") Local14:= "©" Local15:= "º" Local16:= "½" Local17:= "Ð" Local18:= "Ó" Local19:= "Ü" else Local12:= "×" Local13:= iif(Arg6, "Ñ", "Ø") Local14:= "¸" Local15:= "¹" Local16:= "¾" Local17:= "Ï" Local18:= "Ô" Local19:= "Û" endif if sbGuiSupport if (Arg5) Local12:= "Ú" Local13:= iif(Arg6, "Ä", "Ä") Local14:= "¿" Local15:= "³" Local16:= "Ù" Local17:= "Ä" Local18:= "À" Local19:= "³" WVW_DRAWBOXRAISED(,Arg1[6],Arg1[7],Arg1[6],Arg1[7] + Arg1[9] - 2,{0,0,0,0}) COLORWIN(Arg1[6],Arg1[7],Arg1[6],Arg1[7] + Arg1[9] - 2,"W/W") else Local12:= "É" Local13:= iif(Arg6, "Í", "Í") Local14:= "»" Local15:= "º" Local16:= "¼" Local17:= "Í" Local18:= "È" Local19:= "º" WVW_DRAWBOXRAISED(,Arg1[6],Arg1[7],Arg1[6],Arg1[7] + Arg1[9] - 2,{0,0,0,0}) COLORWIN(Arg1[6],Arg1[7],Arg1[6],Arg1[7] + Arg1[9] - 2,"W/W") IF lPress INKEY(.05) WVW_DRAWBOXRECESSED(,Arg1[6],Arg1[7],Arg1[6],Arg1[7] + Arg1[9] - 2,{0,0,0,0}) INKEY(.05) WVW_DRAWBOXRAISED(,Arg1[6],Arg1[7],Arg1[6],Arg1[7] + Arg1[9] - 2,{0,0,0,0}) COLORWIN(Arg1[6],Arg1[7],Arg1[6],Arg1[7] + Arg1[9] - 2,"W/W") lPress:=.F. ENDIF end end DevPos(Arg1[6], Arg1[7] + 2) vldevout(Local10, Local5) DevPos(Arg1[6], Arg1[7] + 2 + Local11) vldevout(Arg1[8], Local9) DevPos(Arg1[6], Arg1[7] + Local20) vldevout(iif( sbGuiSupport," ","ò"), Local8) DevPos(Arg1[6], Arg1[7] + Local21) vldevout(iif( sbGuiSupport," ","ó"), Local8) return Nil ******************************** static function TEXTBUTTON(Arg1) local Local1, Local2, Local3, Local4 Local1:= "" Local2:= At("&", Arg1) Local3:= SubStr(Arg1, 1, Local2 - 1) Local4:= SubStr(Arg1, Local2 + 1) return iif(Local2 != 0, Local3 + Local4, Arg1) ******************************** function SETBUTTON(Arg1, Arg2, Arg3) local Local1 Local1:= Arg1[Arg2][4] if (Arg3 != Nil) Arg1[Arg2][4]:= Arg3 endif return Local1 ******************************** static function SHOWBUTFOC(Arg1, Arg2, Arg3) drawbutton(Arg1, Arg2, Arg3, 2, .F.) showbutmsg(Arg1, Arg2, Arg3) return Nil ******************************** static function CHKBTMOUSE(Arg1, Arg2) local Local1, Local2, Local3, Local4 Local1:= nbut:= 0 for Local1:= 1 to Len(Arg1) Local2:= Arg1[Local1][6] Local3:= Arg1[Local1][7] Local4:= Arg1[Local1][7] + Arg1[Local1][9] - 1 if (Arg2[2] == Local2 .AND. Arg2[3] >= Local3 .AND. Arg2[3] <= ; Local4) nbut:= Local1 exit endif next return nbut ******************************** static function BUTLEFT(Arg1, Arg2, Arg3, Arg4) hidebutfoc(Arg1[Arg2], Arg3, Arg4) Arg2:= iif(--Arg2 == 0, Len(Arg1), Arg2) showbutfoc(Arg1[Arg2], Arg3, Arg4) return Arg2 ******************************** static function BUTRIGHT(Arg1, Arg2, Arg3, Arg4) hidebutfoc(Arg1[Arg2], Arg3, Arg4) Arg2:= iif(++Arg2 > Len(Arg1), 1, Arg2) showbutfoc(Arg1[Arg2], Arg3, Arg4) return Arg2 ******************************** static function BUTGOTO(Arg1, Arg2, Arg3, Arg4, Arg5) hidebutfoc(Arg1[Arg2], Arg4, Arg5) Arg2:= iif(Len(Arg1) >= Arg3, Arg3, Arg2) showbutfoc(Arg1[Arg2], Arg4, Arg5) return Arg2 ******************************** function VLGETMOVTO(Arg1) local Local1 Local1:= Static12 if (PCount() > 0) Static12:= Arg1 endif return Local1 ******************************** FUNCTION PROCBUTTON(Arg1, Arg2, Arg3, Arg4) local Local1, Local2, Local3, Local4, Local5 Local1:= setcursor(0) Local5:= 0 MEMVAR lPress Arg2:= iif(ISNIL(Arg2), 1, Arg2) Arg3:= iif(ISNIL(Arg3), 1, Arg3) showbutton(Arg1, Arg2, Arg4) do while (!Arg1[Arg3][4]) Arg3:= iif(++Arg3 > Len(Arg1), 1, Arg3) enddo do while (Local5 == 0) showbutfoc(Arg1[Arg3], Arg2, Arg4) Local2:= WAITSTATE() //@24,00 SAY Local2[2] // CàDIGO INKEY lPress:=Local2[1] == 2 .OR. Local2[1] == 1 .AND. STR(Local2[2],2) $ "12|17" //!STR(Local2[2],2)$" 9, 4,24, 5,19" do case case Local2[1] == 1 do case case (Local3:= ascan(Arg1, {|_1| Upper(Chr(Local2[2])) == ; Upper(_1[8])})) != 0 Arg3:= butgoto(Arg1, Arg3, Local3, Arg2, Arg4) Arg3:= Local5:= butexecute(Arg1, Arg3, Arg2, Arg4) case Local2[2] == 19 .OR. Local2[2] == 271 .OR. Local2[2] ; == 5 Arg3:= butleft(Arg1, Arg3, Arg2, Arg4) case Local2[2] == 4 .OR. Local2[2] == 9 .OR. Local2[2] == 24 Arg3:= butright(Arg1, Arg3, Arg2, Arg4) case Local2[2] == 27 if ((Local3:= ascan(Arg1, {|_1| _1[5]})) != 0 .AND. ; Arg1[Local3][4]) Arg3:= butgoto(Arg1, Arg3, Local3, Arg2, Arg4) Arg3:= Local5:= butexecute(Arg1, Arg3, Arg2, Arg4) endif case Local2[2] == 13 .AND. Arg1[Arg3][4] Arg3:= Local5:= butexecute(Arg1, Arg3, Arg2, Arg4) lPress:=.T. endcase case Local2[1] == 2 if ((Local4:= chkbtmouse(Arg1, Local2)) != 0 .AND. Local4 ; != Arg3) Arg3:= butgoto(Arg1, Arg3, Local4, Arg2, Arg4) endif case Local2[1] == 3 if ((Local4:= chkbtmouse(Arg1, Local2)) != 0) Arg3:= butgoto(Arg1, Arg3, Local4, Arg2, Arg4) Arg3:= Local5:= butexecute(Arg1, Local4, Arg2, Arg4) endif case Local2[1] == 4 if ((Local4:= chkbtmouse(Arg1, Local2)) != 0 .AND. Local4 ; != Arg3) Arg3:= butgoto(Arg1, Arg3, Local4, Arg2, Arg4) endif endcase enddo setcursor(Local1) return Local5 ******************************** static function SHOWBUTMSG(Arg1, Arg2, Arg3) local Local1 Local1:= iif(Arg2 == 3, Arg3[9], "R*/W") if (Arg1[2] != Nil .OR. Arg1[2] != "") dwnmsg(Arg1[2], Local1) endif return Nil ******************************** static function HIDEBUTFOC(Arg1, Arg2, Arg3) drawbutton(Arg1, Arg2, Arg3, 1, .T.) return Nil ******************************** procedure VLGETREADER(Arg1) return VLGETREADE(Arg1) procedure VLGETREADE(Arg1) /** @ 0,0 say len (getlist ) ?? ' ', seconds() #ifndef __XHARBOUR__ return __GetListActive():Reader() #else return Arg1:Reader() #endif /**/ /**/ local Local1, Local2, Local3, Local4, Local5, Local6, Local7, ; Local8, Local9, Local10, Local11, Local12, Local13 Local12:= array(4) Local1:= ascan(getlist, {|_1| _1 == Arg1}) if (!(ISNIL(vlgetmovto())) .AND. Local1 != vlgetmovto()) if (Local1 > vlgetmovto()) Arg1:exitstate(1) else Arg1:exitstate(2) endif else vlgetmovto(Nil) Local10:= getprevalidate(Arg1) if (Local10) Arg1:setfocus() SetCursor(1) do while (Arg1:exitstate() == 0) if (Arg1:typeout()) Arg1:exitstate(5) endif do while (Arg1:exitstate() == 0) Local3:= .F. Local4:= .F. do while (!Local4 .AND. !Local3) Local13:= WAITSTATE() if (Local13[1] == 1) Local2:= Local13[2] Local4:= .T. endif if (!Local4) Local7:= Local13[2] Local8:= Local13[3] if (Local13[1] == 2) Local9:= ascan(getlist, {|_1| Local7 == ; _1:row() .AND. Local8 >= _1:col() .AND. ; Local8 <= _1:col() + ; Len(Transform(_1:varget(), _1:picture())) ; - 1}) Local3:= Local9 > 0 endif endif enddo if (Local4) getapplykey(Arg1, Local2) else vlgetgoto(Local9) endif enddo Local11:= getpostvalidate(Arg1) if (!Local11) Arg1:exitstate(0) vlgetmovto(Nil) endif enddo Arg1:killfocus() endif endif return /**/ ******************************** function ADDBARITEM(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) local Local1, Local2, Local3 Local3:= Len(Arg1) Arg2:= iif(At("&", Arg2) == 0, "&" + Arg2, Arg2) Arg4:= iif(ISNIL(Arg4), {|| nret()}, Arg4) Arg5:= iif(ISNIL(Arg5), .T., Arg5) Arg6:= iif(ISNIL(Arg6), 1, Arg6) Local1:= SubStr(Arg2, At("&", Arg2) + 1, 1) Local2:= Len(Arg2) + 1 if (Local3 == 0) Arg7:= iif(ISNIL(Arg7), 1, Arg7) else Arg7:= iif(ISNIL(Arg7), Arg1[Local3][7] + Arg1[Local3][8], Arg7) endif AAdd(Arg1, {Arg2, Arg3, Arg4, Arg5, Local1, Arg6, Arg7, Local2}) return Nil ******************************** function SETBARITEM(Arg1, Arg2, Arg3) local Local1 Local1:= Arg1[Arg2][4] if (Arg3 != Nil) Arg1[Arg2][4]:= Arg3 endif return Local1 ******************************** static function DISPLAYBAR(Arg1, Arg2, Arg3) aeval(Arg1, {|_1| (_1[6]:= Arg2, drawbarite(_1, 1, Arg3))}) return Nil ******************************** static function BARESCAPE(Arg1, Arg2, Arg3) return 0 ******************************** function NEWDOWNMENU RETURN NEWDOWNMEN() function NEWDOWNMEN return {} ******************************** function BARMENU(Arg1, Arg2, Arg3, Arg4) local Local1, Local2, Local3, Local4, Local5, Local6, Local7, ; Local8 Local1:= array(4) Local2:= setcursor(0) Local6:= .T. Local7:= .T. Local8:= 0 Arg2:= iif(ISNIL(Arg2), 1, Arg2) Arg3:= iif(ISNIL(Arg3), 1, Arg3) Arg4:= iif(PCount() == 4, Arg4, menucolors()) keyboard Chr(13) InKey(0.05) //.1 do while (Arg3 != 0) if (Local6) displaybar(Arg1, Arg2, Arg4) showbarfoc(Arg1[Arg3], Arg4) Local6:= .F. endif do case case setmovleft() Arg3:= barleft(Arg1, Arg3, Arg4) setmovleft(.F.) keyboard Chr(13) case setmovrigh() Arg3:= barright(Arg1, Arg3, Arg4) setmovrigh(.F.) keyboard Chr(13) case setmovflag() .AND. !setbarmsg() .AND. (Local3[2] == 19 ; .OR. Local3[2] == 4) keyboard Chr(13) case Arg3 == Local8 .AND. LastKey() == K_ESC keyboard Chr(13) InKey(0.05) //.2 Local8:= 0 endcase Local3:= waitstate() do case case Local3[1] == 1 Local8:= 0 do case case (Local5:= ascan(Arg1, {|_1| Upper(Chr(Local3[2])) == ; Upper(_1[5])})) != 0 Arg3:= bargoto(Arg1, Arg3, Local5, Arg4) Arg3:= barexecute(Arg1, Arg3, Arg2, Local5, Arg4) Local6:= .T. case Local3[2] == 19 Arg3:= barleft(Arg1, Arg3, Arg4) case Local3[2] == 4 Arg3:= barright(Arg1, Arg3, Arg4) case Local3[2] == 27 Arg3:= barescape(Arg1, Arg3, Arg4) case Local3[2] == 13 .AND. Arg1[Arg3][4] Arg3:= barexecute(Arg1, Arg3, Arg2, Arg3, Arg4) Local6:= .T. endcase case Local3[1] == 2 if ((Local4:= chkbrmouse(Arg1, Arg2, Local3, Arg3)) > 0) setbarmsg(.T.) setmovflag(.F.) Arg3:= bargoto(Arg1, Arg3, Local4, Arg4) Local7:= .T. else Local7:= .F. endif case Local3[1] == 3 if ((Local4:= chkbrmouse(Arg1, Arg2, Local3, Arg3)) > 0 ; .AND. Local7 .AND. Local8 != Arg3 .OR. Local4 > 0 ; .AND. ISBLOCK(Arg1[Arg3][3])) setbarmsg(.T.) setmovflag(.F.) Arg3:= bargoto(Arg1, Arg3, Local4, Arg4) Local8:= Arg3 Arg3:= barexecute(Arg1, Local4, Arg2, Local4, Arg4) Local6:= .T. elseif (Local4 > 0) Local8:= 0 endif case Local3[1] == 4 if ((Local4:= chkbrmouse(Arg1, Arg2, Local3, Arg3)) > 0 ; .AND. Local4 != Arg3 .AND. Local7) setbarmsg(.T.) setmovflag(.F.) Arg3:= bargoto(Arg1, Arg3, Local4, Arg4) Local8:= 0 elseif (Local4 == -1 .AND. Local7) setbarmsg(.T.) setmovflag(.F.) Local8:= Arg3 Arg3:= barexecute(Arg1, Arg3, Arg2, Local4, Arg4) Local6:= .T. endif endcase enddo setcursor(Local2) return Arg3 ******************************** static function DRAWBARITE(Arg1, Arg2, Arg3) local Local1, Local2, Local3, Local4 Local3:= padr(" " + textmenu(Arg1[1]), Arg1[8]) Local4:= At("&", Arg1[1]) if (Arg2 == 1) Local1:= iif(Arg1[4], Arg3[1], Arg3[2]) Local2:= iif(Arg1[4], Arg3[6], Arg3[8]) elseif (Arg2 == 2) Local1:= iif(Arg1[4], Arg3[3], Arg3[4]) Local2:= iif(Arg1[4], Arg3[5], Arg3[7]) endif DevPos(Arg1[6], Arg1[7]) vldevout(Local3, Local1) DevPos(Arg1[6], Arg1[7] + Local4) vldevout(Arg1[5], Local2) return Nil ******************************** static function SHOWBARMSG(Arg1, Arg2) if (setbarmsg() .AND. (Arg1[2] != Nil .OR. Arg1[2] = "")) dwnmsg(Arg1[2], Arg2[10]) endif return Nil ******************************** static function SHOWBARFOC(Arg1, Arg2) drawbarite(Arg1, 2, Arg2) showbarmsg(Arg1, Arg2) return Nil ******************************** static function HIDEBARFOC(Arg1, Arg2) drawbarite(Arg1, 1, Arg2) return Nil ******************************** static function CHKBRMOUSE(Arg1, Arg2, Arg3, Arg4) local Local1, Local2, Local3 nret:= 0 if (Arg3[2] == Arg2 + 2) Local2:= Arg1[Arg4][7] Local3:= Arg1[Arg4][7] + Arg1[Arg4][8] if (Arg3[3] >= Local2 .AND. Arg3[3] <= Local3) nret:= -1 endif elseif (Arg3[2] == Arg2) for Local1:= 1 to Len(Arg1) Local2:= Arg1[Local1][7] Local3:= Arg1[Local1][7] + Arg1[Local1][8] if (Arg3[3] >= Local2 .AND. Arg3[3] <= Local3) nret:= Local1 setmovflag(.F.) exit endif next endif return nret ******************************** function SETMOVLEFT(Arg1) local Local1 Local1:= Static14 if (Arg1 != Nil) Static14:= Arg1 endif return Local1 ******************************** static function BARLEFT(Arg1, Arg2, Arg3) if (setmovflag() .AND. setbarmsg()) setbarmsg(.F.) endif hidebarfoc(Arg1[Arg2], Arg3) Arg2:= iif(--Arg2 == 0, Len(Arg1), Arg2) showbarfoc(Arg1[Arg2], Arg3) return Arg2 ******************************** static function BARRIGHT(Arg1, Arg2, Arg3) if (setmovflag() .AND. setbarmsg()) setbarmsg(.F.) endif hidebarfoc(Arg1[Arg2], Arg3) Arg2:= iif(++Arg2 > Len(Arg1), 1, Arg2) showbarfoc(Arg1[Arg2], Arg3) return Arg2 ******************************** static function BARGOTO(Arg1, Arg2, Arg3, Arg4) hidebarfoc(Arg1[Arg2], Arg4) Arg2:= iif(Len(Arg1) >= Arg3, Arg3, Arg2) showbarfoc(Arg1[Arg2], Arg4) return Arg2 ******************************** static function BAREXECUTE(Arg1, Arg2, Arg3, Arg4, Arg5) local Local1 if (ISARRAY(Arg1[Arg2][3]) .AND. Arg1[Arg2][4]) Local1:= downmenu(Arg1[Arg2][3], 1, Arg1[Arg2][6] + 1, ; Arg1[Arg2][7], 1, Arg5, Arg3, Arg1) Arg2:= iif(Local1 == -1, Arg2, Local1) elseif (ISBLOCK(Arg1[Arg2][3]) .AND. Arg1[Arg2][4] .AND. Arg4 != ; -1) if (setmovflag() .AND. !setbarmsg()) setbarmsg(.T.) else setmovflag(.F.) eval(Arg1[Arg2][3]) endif endif return Arg2 ******************************** function SETMOVRIGHT(Arg1) RETURN SETMOVRIGH(Arg1) function SETMOVRIGH(Arg1) local Local1 Local1:= Static15 if (Arg1 != Nil) Static15:= Arg1 endif return Local1 ******************************** function SETMOVFLAG(Arg1) local Local1 Local1:= Static16 if (Arg1 != Nil) Static16:= Arg1 endif return Local1 ******************************** function MENUCOLORS local Local1 Local1:= {} AAdd(Local1, "N*/W") AAdd(Local1, "W*/W") AAdd(Local1, "W+/N") AAdd(Local1, "W/N") AAdd(Local1, "R+/N") AAdd(Local1, "R+*/W") AAdd(Local1, "W+/N") AAdd(Local1, "N*/W") AAdd(Local1, "N*/W") AAdd(Local1, "R*/W") return Local1 ******************************** function ADDDOWNSEP(Arg1, Arg2) local Local1, Local2, Local3 Local3:= Len(Arg1) Arg2:= iif(ISNIL(Arg2), 1, Arg2) Local2:= iif(ISNIL(Local2), 3, Local2) if (Local3 == 0) Local1:= iif(ISNIL(Local1), 3, Local1) else Local1:= iif(ISNIL(Local1), Arg1[Local3][6] + 1, Local1) endif AAdd(Arg1, {Nil, Nil, Nil, .T., "", Local1, Local2, .F., .T., ; Arg2}) return Nil ******************************** static function HIDEDWNFOC(Arg1, Arg2) drawdownit(Arg1, 1, Arg2) return Nil ******************************** function ADDDOWNITE(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8) RETURN ADDDOWNITEM(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8) function ADDDOWNITEM(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8) local Local1, Local2 Local2:= Len(Arg1) Arg2:= iif(At("&", Arg2) == 0, "&" + Arg2, Arg2) Arg4:= iif(ISNIL(Arg4), {|| nret()}, Arg4) Arg6:= iif(ISNIL(Arg6), .T., Arg6) Arg8:= iif(ISNIL(Arg8), 3, Arg8) Local1:= SubStr(Arg2, At("&", Arg2) + 1, 1) if (Local2 == 0) Arg7:= iif(ISNIL(Arg7), 3, Arg7) Arg5:= iif(ISNIL(Arg5), Len(Arg2) + 4, Arg5) else Arg7:= iif(ISNIL(Arg7), Arg1[Local2][6] + 1, Arg7) Arg5:= iif(ISNIL(Arg5), Max(Arg1[Local2][10], Len(Arg2) + 4), ; Arg5) endif AAdd(Arg1, {Arg2, Arg3, Arg4, Arg6, Local1, Arg7, Arg8, .F., .F., ; Arg5}) return Nil ******************************** static function DRAWDOWNIT(Arg1, Arg2, Arg3) local Local1, Local2, Local3, Local4, Local5, Local6 Local5:= iif(Arg1[8], "û ", " ") Local6:= iif(ISARRAY(Arg1[3]), iif(sbGuiSupport,'>',Chr(16)), " ") Local3:= iif(Arg1[9], Replicate("Ä", Arg1[10]), padr(Local5 + ; textmenu(Arg1[1]), Arg1[10] - 1) + Local6) Local4:= iif(Arg1[9], 0, At("&", Arg1[1]) + 1) if (Arg2 == 1) Local1:= iif(Arg1[4], Arg3[1], Arg3[2]) Local2:= iif(Arg1[4], Arg3[6], Arg3[8]) elseif (Arg2 == 2) Local1:= iif(Arg1[4], Arg3[3], Arg3[4]) Local2:= iif(Arg1[4], Arg3[5], Arg3[7]) endif if (Arg1[9]) if !sbGuiSupport DevPos(Arg1[6], Arg1[7]) vldevout(Local3, Local1) else DevPos(Arg1[6], Arg1[7]-1) if sbGuiSupportEX * vldevout(' '+Local3+' ', Local1) vldevout('Ã'+Local3+'´', Local1) else * vldevout('Ã'+Local3+'´', Local1) vldevout('Ã'+Local3+'´', Local1) end end else DevPos(Arg1[6], Arg1[7]) vldevout(Local3, Local1) DevPos(Arg1[6], Arg1[7] + Local4) vldevout(Arg1[5], Local2) endif return Nil ******************************** function CHKDOWNITEM(Arg1, Arg2, Arg3) return CHKDOWNITE(Arg1, Arg2, Arg3) function CHKDOWNITE(Arg1, Arg2, Arg3) local Local1 Local1:= Arg1[Arg2][8] if (Arg3 != Nil) Arg1[Arg2][8]:= Arg3 endif return Local1 ******************************** function SETDOWNITEM(Arg1, Arg2, Arg3) return SETDOWNITE(Arg1, Arg2, Arg3) function SETDOWNITE(Arg1, Arg2, Arg3) local Local1 Local1:= Arg1[Arg2][4] if (Arg3 != Nil) Arg1[Arg2][4]:= Arg3 endif return Local1 ******************************** static function DISPLAYDOWN(Arg1, Arg2) return DISPLAYDOW(Arg1, Arg2) static function DISPLAYDOW(Arg1, Arg2) local Local1 for Local1:= 1 to Len(Arg1[2]) drawdownit(Arg1[2][Local1], 1, Arg2) next return Nil ******************************** static function SHOWDOWNMS(Arg1, Arg2) if (Arg1[2] != Nil .OR. Arg1[2] = "") dwnmsg(Arg1[2], Arg2[10]) endif return Nil ******************************** function GETTIMER return Static17 ******************************** function DOWNMENU(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8) local Local1, Local2, Local3, Local4, Local5, Local6, Local7, ; Local8, Local9, Local10, Local11, Local12, Local13, Local14, ; Local15, Local16 Local1:= array(4) Local2:= setcursor(0) Local3:= Len(Arg1) Local4:= Arg1[1][10] Local8:= 1 Local11:= {} Local15:= 0 Local16:= .T. Arg7:= iif(ISNIL(Arg7), -1, Arg7) Arg8:= iif(ValType(Arg8) != "A", {}, Arg8) Arg6:= iif(PCount() < 6, menucolors(), Arg6) if sbGuiSupportEx //Arg3 += 2 endif auxpshdown(Local11, Arg1, Arg2, Arg3, Arg4, Arg5, Local8, Arg6) do while (Local15 == 0) setmovflag(.F.) Local12:= Local11[Local8][1] Local13:= Local11[Local8][2] Arg2:= Local12[1] do while (Local13[Arg2][9]) Arg2:= iif(++Arg2 > Len(Local13), 1, Arg2) enddo do while (Arg2 != 0) if (Local16) displaydow(Local11[Local8], Arg6) showdwnfoc(Local13[Arg2], Arg6) Local16:= .F. endif Local7:= waitstate() do case case Local7[1] == 1 do case case (Local10:= ascan(Local13, {|_1| ; Upper(Chr(Local7[2])) == Upper(_1[5])})) != 0 Arg2:= dwngoto(Local13, Arg2, Local10, Arg6) Arg2:= dwnexecute(Local11, Local13, Arg2, Local12, ; Local8, Arg6) Local8:= Len(Local11) Local16:= .T. case Local7[2] == 5 Arg2:= dwnup(Local13, Arg2, Arg6) case Local7[2] == 24 Arg2:= dwndown(Local13, Arg2, Arg6) case Local7[2] == 19 Arg2:= dwnleft(Local11, Local13, Local8, Arg6) Local8:= Len(Local11) Local15:= -1 case Local7[2] == 4 Arg2:= dwnrigh(Local11, Local13, Local8, Arg6) Local8:= Len(Local11) Local15:= -1 case Local7[2] == 27 Arg2:= dwnescape(Local11, Local13, Arg2, Arg6) Local8-- Local15:= iif(Local8 == 0, -1, Local15) case Local7[2] == 13 .AND. Local13[Arg2][4] Arg2:= dwnexecute(Local11, Local13, Arg2, Local12, ; Local8, Arg6) Local8:= Len(Local11) Local16:= .T. endcase case Local7[1] == 2 Local14:= chkdnmouse(Local11, Local13, Arg2, Local7, ; Local8, Arg8, Arg7) if (Local14[2] != 0) do while (Local8 > Local14[1]) auxpopdown(Local11) Local8-- enddo if (Local8 > 0) Local11[Local8][1][1]:= Local14[2] else Local15:= Local14[2] endif Arg2:= 0 Local16:= .T. endif case Local7[1] == 3 if (Local8 > 0 .AND. (Local9:= chkupmouse(Local11, ; Local13, Arg2, Local7, Local8)) != 0) Arg2:= dwngoto(Local13, Arg2, Local9, Arg6) Arg2:= dwnexecute(Local11, Local13, Arg2, Local12, ; Local8, Arg6) Local8:= Len(Local11) Local16:= .T. endif case Local7[1] == 4 if (Local8 > 0 .AND. (Local9:= chkupmouse(Local11, ; Local13, Arg2, Local7, Local8)) != 0) Arg2:= dwngoto(Local13, Arg2, Local9, Arg6) endif endcase enddo if (Local8 == 0) exit endif enddo setcursor(Local2) return Local15 ******************************** static function CHKDNMOUSE(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) local Local1, Local2, Local3, Local4, Local5, Local6, Local7, ; Local8, Local9, Local10, Local11 Local11:= xmik2:= 0 if (Arg4[2] == Arg7) for Local3:= 1 to Len(Arg6) Local4:= Arg6[Local3][7] Local5:= Arg6[Local3][7] + Arg6[Local3][8] if (Arg4[3] >= Local4 .AND. Arg4[3] <= Local5) Local11:= 0 xmik2:= Local3 exit endif next else for Local1:= 1 to Arg5 Local10:= Len(Arg1[Local1][2]) Local6:= Arg1[Local1][1][3] + 1 Local7:= Arg1[Local1][1][4] + 1 Local8:= Arg1[Local1][1][5] - 1 Local9:= Arg1[Local1][1][6] - 1 if (Arg4[2] >= Local6 .AND. Arg4[2] <= Local8 .AND. Arg4[3] ; >= Local7 .AND. Arg4[3] <= Local9) for Local2:= 1 to Local10 if (Arg4[2] == Arg1[Local1][2][Local2][6] .AND. ; !Arg1[Local1][2][Local2][9]) Local11:= Local1 xmik2:= Local2 exit endif next endif if (Local11 != 0) exit endif next endif return {Local11, xmik2} ******************************** static function CHKUPMOUSE(Arg1, Arg2, Arg3, Arg4, Arg5) local Local1, Local2, Local3, Local4, Local5, Local6, Local7 Local7:= 0 Local6:= Len(Arg2) Local2:= Arg1[Arg5][1][3] + 1 Local3:= Arg1[Arg5][1][4] + 1 Local4:= Arg1[Arg5][1][5] - 1 Local5:= Arg1[Arg5][1][6] - 1 if (Arg4[2] >= Local2 .AND. Arg4[2] <= Local4 .AND. Arg4[3] >= ; Local3 .AND. Arg4[3] <= Local5) for Local1:= 1 to Local6 if (Arg4[2] == Arg2[Local1][6] .AND. !Arg2[Local1][9]) Local7:= Local1 exit endif next endif return Local7 ******************************** function NRET return Nil ******************************** static function AUXPSHDOWN(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, ; Arg8) local Local1, Local2, Local3, Local4, Local5, Local6, Local7 local r22 := MaxRow()-2 local c80 := MaxCol() Local1:= Len(Arg2) Local2:= Arg2[1][10] Arg3:= iif(ISNIL(Arg3), 1, Arg3) for Local4:= 1 to Local1 Local2:= Max(Arg2[Local4][10], Local2) next for Local4:= 1 to Local1 Arg2[Local4][10]:= Local2 next Local5:= Arg4 + Local1 + 1 Local6:= Arg5 + Arg2[1][10] + 1 if (Arg7 > 1 .AND. (Arg5 > 45 .OR. Arg5 + Arg6 > 65)) Arg5:= Arg5 + Arg6 Local6:= Local6 + Arg6 Arg5:= Arg5 - iif(Local6 + 3 > c80, Arg6 + Arg2[1][10] + 2, 0) Local6:= Local6 - iif(Local6 + 3 > c80, Arg6 + Arg2[1][10] + 2, ; 0) Arg4:= Arg4 - iif(Local5 + 1 > r22, Local5 + 1 - r22, 0) Local5:= Local5 - iif(Local5 + 1 > r22, Local5 + 1 - r22, 0) if (Arg5 < 0) Arg5:= 77 - (Local6 - Arg5) Local6:= Arg5 + Arg2[1][10] + 1 endif elseif (Arg7 > 1) Arg5:= Arg5 + Arg6 Local6:= Local6 + Arg6 Arg5:= Arg5 - iif(Local6 + 3 > c80, Local6 + 3 - c80, 0) Local6:= Local6 - iif(Local6 + 3 > c80, Local6 + 3 - c80, 0) Arg4:= Arg4 - iif(Local5 + 1 > r22, Local5 + 1 - r22, 0) Local5:= Local5 - iif(Local5 + 1 > r22, Local5 + 1 - r22, 0) else Arg5:= Arg5 - iif(Local6 + 3 > c80, Local6 + 3 - c80, 0) Local6:= Local6 - iif(Local6 + 3 > c80, Local6 + 3 - c80, 0) Arg4:= Arg4 - iif(Local5 + 1 > r22, Local5 + 1 - r22, 0) Local5:= Local5 - iif(Local5 + 1 > r22, Local5 + 1 - r22, 0) endif if sbGuiSupportEx Local7:= nbox(Arg4, Arg5, Local5, Local6, Arg8[9],.T.) else Local7:= nbox(Arg4, Arg5, Local5, Local6, Arg8[9]) end for Local4:= 1 to Local1 Arg2[Local4][6]:= Arg4 + Local4 Arg2[Local4][7]:= Arg5 + 1 next AAdd(Arg1, {{Arg3, Local7, Arg4, Arg5, Local5, Local6}, Arg2}) return Nil ******************************** static function AUXPOPDOWN(Arg1) local Local1 Local1:= Len(Arg1) rstenv(Arg1[Local1][1][2]) asize(Arg1, Local1 - 1) return Nil ******************************** static function SHOWDWNFOC(Arg1, Arg2) drawdownit(Arg1, 2, Arg2) showdownms(Arg1, Arg2) return Nil ******************************** static function DWNUP(Arg1, Arg2, Arg3) hidedwnfoc(Arg1[Arg2], Arg3) Arg2:= iif(--Arg2 == 0, Len(Arg1), Arg2) do while (Arg1[Arg2][9]) Arg2:= iif(--Arg2 == 0, Len(Arg1), Arg2) enddo showdwnfoc(Arg1[Arg2], Arg3) return Arg2 ******************************** static function DWNDOWN(Arg1, Arg2, Arg3) hidedwnfoc(Arg1[Arg2], Arg3) Arg2:= iif(++Arg2 > Len(Arg1), 1, Arg2) do while (Arg1[Arg2][9]) Arg2:= iif(++Arg2 > Len(Arg1), 1, Arg2) enddo showdwnfoc(Arg1[Arg2], Arg3) return Arg2 ******************************** static function DWNLEFT(Arg1, Arg2, Arg3) do while (Arg3 > 0) auxpopdown(Arg1) Arg3-- enddo setmovflag(.T.) setmovleft(.T.) setbarmsg(.F.) return 0 ******************************** static function DWNRIGH(Arg1, Arg2, Arg3) do while (Arg3 > 0) auxpopdown(Arg1) Arg3-- enddo setmovflag(.T.) setmovrigh(.T.) setbarmsg(.F.) return 0 ******************************** static function DWNGOTO(Arg1, Arg2, Arg3, Arg4) hidedwnfoc(Arg1[Arg2], Arg4) Arg2:= iif(Arg1[Arg3][9], Arg2, Arg3) showdwnfoc(Arg1[Arg2], Arg4) return Arg2 ******************************** static function DWNEXECUTE(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) if (ISARRAY(Arg2[Arg3][3]) .AND. Arg2[Arg3][4]) Arg4[1]:= Arg3 Arg5++ auxpshdown(Arg1, Arg2[Arg3][3], 1, Arg2[Arg3][6] - 1, ; Arg2[Arg3][7], Arg2[Arg3][10], Arg5, Arg6) Arg3:= 0 elseif (ISBLOCK(Arg2[Arg3][3]) .AND. Arg2[Arg3][4]) eval(Arg2[Arg3][3]) endif return Arg3 ******************************** static function DWNESCAPE(Arg1, Arg2, Arg3) auxpopdown(Arg1) setbarmsg(.T.) return 0 ******************************** function NINKEY(Arg1) local Local1, Local2, Local3 do while (.T.) Local1:= .F. if (Arg1 = Nil) Local2:= InKey(0.10,159) else Local2:= InKey(Arg1,159) endif if Local2 >= K_MINMOUSE .and. ; Local2 <= K_MAXMOUSE if Local2 == K_LBUTTONDOWN .or. ; Local2 == K_LBUTTONUP .or. ; Local2 == K_LDBLCLK if Local2 == K_LDBLCLK arrMouseInfLeft[1] := 2 else arrMouseInfLeft[1] := 1 end arrMouseInfLeft[2] := mRow() arrMouseInfLeft[3] := mCol() end if Local2 == K_RBUTTONDOWN .or. ; Local2 == K_RBUTTONUP .or. ; Local2 == K_RDBLCLK if Local2 == K_RDBLCLK arrMouseInfRight[1] := 2 else arrMouseInfRight[1] := 1 end arrMouseInfRight[2] := mRow() arrMouseInfRight[3] := mCol() end Local2 := 0 Setswmouse(.t.) end if (Local2 != 0 .AND. (Local3:= SetKey(Local2)) != Nil) eval(Local3, procname(2), procline(2), "") Local1:= .T. resettimer() endif if (!Local1) exit endif enddo return Local2 ******************************** function DWNMSG(Arg1, Arg2) local r23 := MaxRow()-1 local c80 := MaxCol()+1 Arg2:= iif(ISNIL(Arg2), "R*/W", Arg2) DevPos(r23, 0) vldevout(padc(Arg1, c80), Arg2) return .T. ******************************** function CLOCK local Local1, Local2, Local3, Local4 Local3:= vlscrsaver() Local4:= array(3) Local1:= win(10, 29, 13, 50, "Rel¢gio - " + DToC(Date()), ; "W+*/B", "B+*/W") setcursor(0) resettimer() vlmousedn(0, Local4) do while (.T.) DevPos(12, 36) vldevout(Time(), "N*/W") if ((Local2:= InKey(1)) != 0) exit endif vlmousedn(0, Local4) if (Local4[1] > 0) exit endif if (Seconds() - gettimer() > Local3[1]) eval(Local3[2]) resettimer() endif enddo rstenv(Local1) return Nil ******************************** function CHKPRN local Local1 Local1:= .T. do while (!isprinter()) if (msgbox2("Impressora nao preparada. Continuar ?") == 2) Local1:= .F. exit endif enddo return Local1 ******************************** function SAVENV(Arg1, Arg2, Arg3, Arg4,lNoCaption) local Local1 local win local a,b,c Local1:= {} AAdd(Local1, Arg1) AAdd(Local1, Arg2) AAdd(Local1, Arg3) AAdd(Local1, Arg4) AAdd(Local1, vlsavescre(Arg1, Arg2, Arg3, Arg4)) AAdd(Local1, SetColor()) AAdd(Local1, setcursor()) AAdd(Local1, Row()) AAdd(Local1, Col()) AADD(Local1, 00 ) // 10 item AADD(Local1, 00 ) // 11 item AADD(Local1, nil ) // 12 item RETURN Local1 ******************************** function RSTENV(Arg1) LOCAL i := 00 LOCAL b,c,d vlrestscre(Arg1[1], Arg1[2], Arg1[3], Arg1[4], Arg1[5]) set color to (Arg1[6]) setcursor(Arg1[7]) SetPos(Arg1[8], Arg1[9]) return Nil ******************************** function VLEXIT(Arg1, Arg2, Arg3, Arg4) local Local1 //Local1:= savenv(33, 0, 33, MAXCOL()) Arg4:= iif(ISNIL(Arg4), .T., Arg4) if (!Arg4) if sbGuiSupport vlmouseoff() set color to vlscroll() SetPos(0, 0) close databases setcursor(1) else vlmouseoff() set color to n/n setcursor(0) vlscroll() * run vlfont.exe off set color to vlscroll() SetPos(0, 0) vlsetmode(MAXROW(), MAXCOL()) close databases vlsetblink(.T.) setcursor(1) end quit elseif (msgbox2("Confirma o encerramento ?", "Sa¡da", Nil, Nil, ; Nil, Nil, 2) == 1) if sbGuiSupport setcursor(0) vlmouseoff() set color to vlscroll() SetPos(0, 0) close databases setcursor(1) else setcursor(0) vlmouseoff() set color to n/n vlscroll() * run vlfont.exe off set color to vlscroll() SetPos(0, 0) vlsetmode(MAXROW(), MAXCOL()) close databases vlsetblink(.T.) setcursor(1) end quit endif //rstenv(Local1) return Nil ******************************** function QEXIT(Arg1, Arg2, Arg3, Arg4) vlexit(Arg1, Arg2, Arg3, Arg4) return Nil ******************************** function VLSCROLL(Arg1, Arg2, Arg3, Arg4, Arg5) local Local1 Local1:= vlsetmouse(.F.) Scroll(Arg1, Arg2, Arg3, Arg4, Arg5) vlsetmouse(Local1) return Nil ******************************** function RESETTIMER return Static17:= Seconds() ******************************** function VLSETMODE(Arg1, Arg2) local Local1, Local2 Local1:= vlsetmouse(.F.) Local2:= setmode(Arg1, Arg2) vlmouseini() vlsetmouse(Local1) return Local2 ******************************** function VLSAVESCREEN(Arg1, Arg2, Arg3, Arg4) RETURN VLSAVESCRE(Arg1, Arg2, Arg3, Arg4) function VLSAVESCRE(Arg1, Arg2, Arg3, Arg4) local Local1, Local2 Local2:= vlsetmouse(.F.) Local1:= SaveScreen(Arg1, Arg2, Arg3, Arg4) vlsetmouse(Local2) return Local1 ******************************** function VLRESTSCREEN(Arg1, Arg2, Arg3, Arg4, Arg5) RETURN VLRESTSCRE(Arg1, Arg2, Arg3, Arg4, Arg5) function VLRESTSCRE(Arg1, Arg2, Arg3, Arg4, Arg5) local Local1 Local1:= vlsetmouse(.F.) RestScreen(Arg1, Arg2, Arg3, Arg4, Arg5) vlsetmouse(Local1) return Nil ******************************** function VLQOUT(Arg1) local Local1, Local2 Local1:= vlsetmouse(.F.) Local2:= Len(Arg1) do case case Local2 == 1 ? Arg1[1] case Local2 == 2 ? Arg1[1], Arg1[2] case Local2 == 3 ? Arg1[1], Arg1[2], Arg1[3] case Local2 == 4 ? Arg1[1], Arg1[2], Arg1[3], Arg1[4] case Local2 == 5 ? Arg1[1], Arg1[2], Arg1[3], Arg1[4], Arg1[5] endcase vlsetmouse(Local1) return Nil ******************************** function VLQQOUT(Arg1) local Local1 Local1:= vlsetmouse(.F.) aeval(Arg1, {|_1| QQOut(_1)}) vlsetmouse(Local1) return Nil ******************************** function VLDEVOUT(Arg1, Arg2) local Local1 Local1:= vlsetmouse(.F.) DevOut(Arg1, Arg2) vlmouseon(Local1) return Nil ******************************** function VLDEVOUTPICT(Arg1, Arg2, Arg3) return VLDEVOUTPI(Arg1, Arg2, Arg3) function VLDEVOUTPI(Arg1, Arg2, Arg3) local Local1 Local1:= vlsetmouse(.F.) DevOutPict(Arg1, Arg2, Arg3) vlmouseon(Local1) return Nil ******************************** function VLDISPBOX(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) local Local1 Local1:= vlsetmouse(.F.) @ Arg1, Arg2, Arg3, Arg4 box Arg5 color Arg6 vlmouseon(Local1) return Nil ******************************** function DESKTOP(Arg1, Arg2,lCallSetMode,lCallSetFont) local Local1 local c80 := MaxCol()+1 local r24 := MaxRow() Arg1:= iif(ISNIL(Arg1), ; "ASIMOES", Arg1) Arg2:= iif(ISNIL(Arg2), "W+/BG", Arg2) vl850(lCallSetMode,lCallSetFont) if (vlmouseini(@Local1)) vlmouseon() endif vlsetblink(.F.) set color to W+/W vlscroll() SetPos(0, 0) DevPos(0, 0) vldevout(padc(Arg1, c80), Arg2) DevPos(r24, 0) vldevout(padc(" ", c80), Arg2) DevPos(1, 0) vldevout(padc(" ", c80), "N*/W") DevPos(r24-1, 0) vldevout(padc(" ", c80), "N*/W") return Nil ******************************** function DRAWFN(Arg1, Arg2, Arg3, Arg4) local Local1 local r24 := MaxRow() Local1:= {1, 9, 17, 25, 33, 41, 49, 57, 65, 73} Arg3:= iif(ISNIL(Arg3), "W+/BG", Arg3) Arg4:= iif(ISNIL(Arg4), "N/BG", Arg4) DevPos(r24, Local1[Arg1]) vldevout(Left(Arg2, 7), Arg4) DevPos(r24, Local1[Arg1] - 1) if sbGuiSupport if Arg1 == 10 Arg1 := 48 else Arg1 += 48 end vldevout(Chr(Arg1), Arg3) else vldevout(Chr(Arg1), Arg3) end return Nil ******************************** function NBOX(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) local Local1 * if sbGuiSupportEX * Local1:= savenv(Arg1, Arg2, Arg3, Arg4, Arg6 ) * dispbox(Arg1, Arg2, Arg3, Arg4, " ", Arg5) * else Local1:= savenv(Arg1, Arg2, Arg3 + 1, Arg4 + 2) Arg5:= iif(ISNIL(Arg5), "N*/W", Arg5) Arg6:= iif(ISNIL(Arg6), .T., Arg6) if sbGuiSupport vldispbox(Arg1, Arg2, Arg3, Arg4, "ÚÄ¿³ÙÄÀ³ " /*"ÉÍ»º¼ÍȺ "*/, Arg5) else vldispbox(Arg1, Arg2, Arg3, Arg4, "ÉÐËÜÊÌȺ ", Arg5) end if (Arg6) sombra(Arg1, Arg2, Arg3, Arg4) endif * end return Local1 ******************************** function WIN(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8,lNoCaption) local Local1 local a Arg5:= iif(ISNIL(Arg5), "", Arg5) Arg6:= iif(ISNIL(Arg6), "W+/B", Arg6) Arg7:= iif(ISNIL(Arg7), "B*/W", Arg7) Arg8:= iif(ISNIL(Arg8), .T., Arg8) * if sbGuiSupportEX * Local1:= nbox(Arg1, Arg2, Arg3, Arg4, Arg7, /*Arg8*/lNoCaption) * a := &( "{|_1,_2| WVW_SETTITLE(_1,_2) }") * a:Eval(,hb_oemtoansi(Arg5)) * else Local1:= nbox(Arg1, Arg2, Arg3, Arg4, Arg7, Arg8) DevPos(Arg1, Arg2) vldevout(padc(Arg5, Arg4 - Arg2 + 1), Arg6) * end return Local1 ******************************** function SOMBRA(Arg1, Arg2, Arg3, Arg4) local Local1, Local2, Local3, Local4 Local3:= vlsavescre(Arg1 + 1, Arg4 + 1, Arg3 + 1, Arg4 + 2) Local4:= vlsavescre(Arg3 + 1, Arg2 + 2, Arg3 + 1, Arg4 + 2) for Local1:= 2 to Len(Local3) step 2 Local2:= shadow(Asc(SubStr(Local3, Local1, 1))) Local3:= stuff(Local3, Local1, 1, Local2) next for Local1:= 2 to Len(Local4) step 2 Local2:= shadow(Asc(SubStr(Local4, Local1, 1))) Local4:= stuff(Local4, Local1, 1, Local2) next vlrestscre(Arg1 + 1, Arg4 + 1, Arg3 + 1, Arg4 + 2, Local3) vlrestscre(Arg3 + 1, Arg2 + 2, Arg3 + 1, Arg4 + 2, Local4) return Nil ******************************** static function SHADOW(Arg1) local Local1, Local2, Local3 Local1:= Arg1 % 16 Local2:= (Arg1 - Local1) / 16 Local3:= {0, 0, 8, 8, 0, 8, 0, 8, 0, 1, 2, 3, 4, 5, 6, 7} Local1:= Local3[Local1 + 1] Local2:= Local3[Local2 + 1] return Chr(16 * Local2 + Local1) ******************************** FUNCTION MSGBOX3D1(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) local Local1:= i:= 0, Local2:= obut:= {} lPress:=.F. Arg4:= iif(ISNIL(Arg4), "&OK", Arg4) Arg1:= iif(ISNIL(Arg1), "", Arg1) Arg2:= iif(ISNIL(Arg2), "Aten‡Æo!", Arg2) Local1:= iif(ISARRAY(Arg1), Len(Arg1), 1) Arg3:= iif(ISNIL(Arg3), Int(12 - (Local1 + 8) / 2), Arg3) Arg5:= iif(ISNIL(Arg5), "W+/N", Arg5) // AQUI Arg6:= iif(ISNIL(Arg6), "N/W", Arg6) // AQUI Arg7:= iif(ISNIL(Arg7), "N/W", Arg7) // AQUI obut:= newbutton() addbutton(obut, Arg3 + 5 + Local1, 31, 18, Arg4, Nil, .T.) Local2:= win(Arg3, 10, Arg3 + 8 + Local1, 69, Arg2, Arg5, Arg6) /* vldispbox(Arg3 + 2, 11, Arg3 + 7 + Local1, 11, "ÜÜÜÜÜÜÜÜÜ", "W+/W") vldispbox(Arg3 + 2, 68, Arg3 + 7 + Local1, 68, "ººººººººº", "N+/W") DevPos(Arg3 + 2, 12) vldevout(Replicate("Ð", 56), "W+/W") DevPos(Arg3 + 7 + Local1, 12) vldevout(Replicate("Ì", 56), "N+/W") */ DESKBOX(Arg3 + 2, 11, Arg3 + 7 + Local1, 68, , "W+/W", "N+/W") if (ISARRAY(Arg1)) for i:= 1 to Local1 DevPos(Arg3 + 2 + i, 13) vldevout(padc(Arg1[i], 54), Arg7) next else DevPos(Arg3 + 3, 13) vldevout(padc(Arg1, 54), Arg7) endif setcursor(0) procbutton(obut, 1, 1) rstenv(Local2) return Nil ******************************** function DESKBOX(Arg1, Arg2, Arg3, Arg4, Arg5, COR1, COR2) local Local1:= "N+/W", Local2:= "W+/W" Arg5:= iif(ISNIL(Arg5), 1, Arg5) if (Arg5 == 2) Local1:= "W+/W" Local2:= "N+/W" endif if cor1 <> nil;Local1 := cor1; end if cor2 <> nil;Local2 := cor2; end if sbGuiSupport if sbGuiSupportEx dispbox(Arg1, Arg2, Arg3, Arg4, " ", Local1) /* vldispbox(Arg1, Arg2, Arg3, Arg4, "ÚÄ¿³ÙÄÀ³ ", Local1) vldispbox(Arg1, Arg2, Arg3, Arg4, "ÚÄ¿³ÙÄÀ³ ", Local2) DevPos(Arg1, Arg2) vldevout(Replicate("Ä", Arg4 - Arg2 + 1), Local1) DevPos(Arg3, Arg2) vldevout(Replicate("Ä", Arg4 - Arg2 + 1), Local2) DevPos(Arg1, Arg2) vldevout("Ú", Local1) DevPos(Arg1, Arg4) vldevout("¿", Local2) DevPos(Arg3, Arg4) vldevout("Ù", Local2) DevPos(Arg3, Arg2) vldevout("À", Local1) @ arg1, arg2 say '' ?? Arg1, Arg2, Arg3, Arg4 /**/ else vldispbox(Arg1, Arg2, Arg3, Arg2, "ÚÄ¿³ÙÄÀ³ ", Local1) vldispbox(Arg1, Arg4, Arg3, Arg4, "ÚÄ¿³ÙÄÀ³ ", Local2) DevPos(Arg1, Arg2) vldevout(Replicate("Ä", Arg4 - Arg2 + 1), Local1) DevPos(Arg3, Arg2) vldevout(Replicate("Ä", Arg4 - Arg2 + 1), Local2) DevPos(Arg1, Arg2) vldevout("Ú", Local1) DevPos(Arg1, Arg4) vldevout("¿", Local2) DevPos(Arg3, Arg4) vldevout("Ù", Local2) DevPos(Arg3, Arg2) vldevout("À", Local1) end else vldispbox(Arg1, Arg2, Arg3, Arg2, "ººººººººº", Local1) vldispbox(Arg1, Arg4, Arg3, Arg4, "ÜÜÜÜÜÜÜÜÜ", Local2) DevPos(Arg1, Arg2) vldevout(Replicate("Ì", Arg4 - Arg2 + 1), Local1) DevPos(Arg3, Arg2) vldevout(Replicate("Ð", Arg4 - Arg2 + 1), Local2) end return Nil ******************************** function MSGBOX3D2(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, ; Arg9, Arg10) local Local1:= i:= 0, Local2:= obut:= {} lPress:=.F. Arg4:= iif(ISNIL(Arg4), "&Sim", Arg4) Arg5:= iif(ISNIL(Arg5), "&NÆo", Arg5) Arg6:= iif(ISNIL(Arg6), 1, Arg6) Arg7:= iif(ISNIL(Arg7), 2, Arg7) Arg1:= iif(ISNIL(Arg1), "", Arg1) Arg2:= iif(ISNIL(Arg2), "Aten‡Æo!", Arg2) Local1:= iif(ISARRAY(Arg1), Len(Arg1), 1) Arg3:= iif(ISNIL(Arg3), Int(12 - (Local1 + 8) / 2), Arg3) Arg8:= iif(ISNIL(Arg8), "W+/N", Arg8) Arg9:= iif(ISNIL(Arg9), "N/W", Arg9) Arg10:= iif(ISNIL(Arg10), "N/W", Arg10) obut:= newbutton() addbutton(obut, Arg3 + 5 + Local1, 21, 18, Arg4, Nil, iif(Arg7 == ; 1, .T., .F.)) addbutton(obut, Arg3 + 5 + Local1, 41, 18, Arg5, Nil, iif(Arg7 == ; 2, .T., .F.)) Local2:= win(Arg3, 10, Arg3 + 8 + Local1, 69, Arg2, Arg8, Arg9) /* vldispbox(Arg3 + 2, 11, Arg3 + 7 + Local1, 11, "ÜÜÜÜÜÜÜÜÜ", "W+/W") vldispbox(Arg3 + 2, 68, Arg3 + 7 + Local1, 68, "ººººººººº", "N+/W") DevPos(Arg3 + 2, 12) vldevout(Replicate("Ð", 56), "W+/W") DevPos(Arg3 + 7 + Local1, 12) vldevout(Replicate("Ì", 56), "N+/W") */ DESKBOX(Arg3 + 2, 11, Arg3 + 7 + Local1, 68, , "W+/W", "N+/W") if (ISARRAY(Arg1)) for i:= 1 to Local1 DevPos(Arg3 + 2 + i, 13) vldevout(padc(Arg1[i], 54), Arg10) next else DevPos(Arg3 + 3, 13) vldevout(padc(Arg1, 54), Arg10) endif setcursor(0) i:= procbutton(obut, 1, iif(Arg6 < 3, Arg6, 2)) rstenv(Local2) return i ******************************** static function CLEARGETSYS RETURN CLEARGETSYS() static function CLEARGETSY local Local1[9] Local1[1]:= Static3 Local1[2]:= Static4 Local1[3]:= Static5 Local1[4]:= Static6 Local1[5]:= Static7 Local1[6]:= getactive(Nil) Local1[7]:= readvar("") Local1[8]:= Static9 Local1[9]:= Static10 Static3:= .F. Static4:= .F. Static5:= .F. Static6:= 0 Static7:= 0 Static9:= "" Static10:= 0 Static2:= .F. return Local1 ******************************** function MSGBOX3D3(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, ; Arg9, Arg10, Arg11) local Local1, Local2, Local3, Local4 lPress:=.F. Arg4:= iif(ISNIL(Arg4), "&Sim", Arg4) Arg5:= iif(ISNIL(Arg5), "&NÆo", Arg5) Arg6:= iif(ISNIL(Arg6), "&Cancelar", Arg6) Arg7:= iif(ISNIL(Arg7), 1, Arg7) Arg8:= iif(ISNIL(Arg8), 3, Arg8) Arg1:= iif(ISNIL(Arg1), "", Arg1) Arg2:= iif(ISNIL(Arg2), "Aten‡Æo!", Arg2) Local1:= iif(ISARRAY(Arg1), Len(Arg1), 1) Arg3:= iif(ISNIL(Arg3), Int(12 - (Local1 + 8) / 2), Arg3) Arg9:= iif(ISNIL(Arg9), "W+/N", Arg9) Arg10:= iif(ISNIL(Arg10), "N/W", Arg10) Arg11:= iif(ISNIL(Arg11), "N/W", Arg11) Local3:= newbutton() addbutton(Local3, Arg3 + 5 + Local1, 13, 18, Arg4, Nil, iif(Arg8 ; == 1, .T., .F.)) addbutton(Local3, Arg3 + 5 + Local1, 31, 18, Arg5, Nil, iif(Arg8 ; == 2, .T., .F.)) addbutton(Local3, Arg3 + 5 + Local1, 49, 18, Arg6, Nil, iif(Arg8 ; == 3, .T., .F.)) Local2:= win(Arg3, 10, Arg3 + 8 + Local1, 69, Arg2, Arg9, Arg10) /* vldispbox(Arg3 + 2, 11, Arg3 + 7 + Local1, 11, "ÜÜÜÜÜÜÜÜÜ", "W+/W") vldispbox(Arg3 + 2, 68, Arg3 + 7 + Local1, 68, "ººººººººº", "N+/W") DevPos(Arg3 + 2, 12) vldevout(Replicate("Ð", 56), "W+/W") DevPos(Arg3 + 7 + Local1, 12) vldevout(Replicate("Ì", 56), "N+/W") */ DESKBOX(Arg3 + 2, 11, Arg3 + 7 + Local1, 68, , "W+/W", "N+/W") if (ISARRAY(Arg1)) for Local4:= 1 to Local1 DevPos(Arg3 + 2 + Local4, 13) vldevout(padc(Arg1[Local4], 54), Arg11) next else DevPos(Arg3 + 3, 13) vldevout(padc(Arg1, 54), Arg11) endif setcursor(0) Local4:= procbutton(Local3, 1, iif(Arg7 < 4, Arg7, 3)) rstenv(Local2) return Local4 ******************************** function CLRTED(Arg1, Arg2) local Local1 local r22 := maxrow()-2 local c79 := maxcol()//-1 Local1:= SetColor("N/W") Arg1:= iif(ISNIL(Arg1), 2, Arg1) Arg2:= iif(ISNIL(Arg2), r22, Arg2) vlscroll(Arg1, 0, Arg2, c79) set color to (Local1) return Nil ******************************** function MSGBOX1(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) local Local1, Local2, Local3, Local4 private lPress:=.F. Arg4:= iif(ISNIL(Arg4), "&OK", Arg4) Arg1:= iif(ISNIL(Arg1), "", Arg1) Arg2:= iif(ISNIL(Arg2), "Aten‡Æo!", Arg2) Local1:= iif(ISARRAY(Arg1), Len(Arg1), 1) Arg3:= iif(ISNIL(Arg3), Int(12 - (Local1 + 5) / 2), Arg3) Arg5:= iif(ISNIL(Arg5), "W+*/R", Arg5) Arg6:= iif(ISNIL(Arg6), "R+*/W", Arg6) Arg7:= iif(ISNIL(Arg7), "N*/W", Arg7) Local3:= newbutton() addbutton(Local3, Arg3 + 3 + Local1, 31, 18, Arg4, Nil, .T.) Local2:= win(Arg3, 10, Arg3 + 5 + Local1, 69, Arg2, Arg5, Arg6) if (ISARRAY(Arg1)) for Local4:= 1 to Local1 DevPos(Arg3 + 1 + Local4, 12) vldevout(padc(Arg1[Local4], 56), Arg7) next else DevPos(Arg3 + 2, 12) vldevout(padc(Arg1, 56), Arg7) endif setcursor(0) procbutton(Local3, 2, 1) rstenv(Local2) return Nil ******************************** function LINBUTTON3(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, ; Arg9, Arg10, Arg11, Arg12) local Local1 Local1:= newbutton() Arg1:= iif(ISNIL(Arg1), .T., Arg1) Arg2:= iif(ISNIL(Arg2), 1, Arg2) Arg3:= iif(ISNIL(Arg3), 21, Arg3) Arg4:= iif(ISNIL(Arg4), 1, Arg4) Arg5:= iif(ISNIL(Arg5), 3, Arg5) Arg6:= iif(ISNIL(Arg6), "&OK", Arg6) Arg8:= iif(ISNIL(Arg8), "&Alterar", Arg8) Arg10:= iif(ISNIL(Arg10), "&Cancelar", Arg10) addbutton(Local1, Arg3, 11, 18, Arg6, Arg7, iif(Arg5 == 1, .T., ; .F.)) addbutton(Local1, Arg3, 31, 18, Arg8, Arg9, iif(Arg5 == 2, .T., ; .F.)) addbutton(Local1, Arg3, 51, 18, Arg10, Arg11, iif(Arg5 == 3, .T., ; .F.)) if (Arg1) Arg3:= procbutton(Local1, Arg2, iif(Arg4 < 4, Arg4, 3), Arg12) else showbutton(Local1, Arg2, Arg12) endif return Arg3 ******************************** function MSGBOX2(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, ; Arg9, Arg10) local Local1, Local2, Local3, Local4 private lPress:=.F. Arg4:= iif(ISNIL(Arg4), "&Sim", Arg4) Arg5:= iif(ISNIL(Arg5), "&NÆo", Arg5) Arg6:= iif(ISNIL(Arg6), 1, Arg6) Arg7:= iif(ISNIL(Arg7), 2, Arg7) Arg1:= iif(ISNIL(Arg1), "", Arg1) Arg2:= iif(ISNIL(Arg2), "Aten‡Æo!", Arg2) Local1:= iif(ISARRAY(Arg1), Len(Arg1), 1) Arg3:= iif(ISNIL(Arg3), Int(12 - (Local1 + 7) / 2), Arg3) Arg8:= iif(ISNIL(Arg8), "W+*/R", Arg8) Arg9:= iif(ISNIL(Arg9), "R+*/W", Arg9) Arg10:= iif(ISNIL(Arg10), "N*/W", Arg10) Local3:= newbutton() addbutton(Local3, Arg3 + 3 + Local1, MAXCOL()+3-69, 18, Arg4, Nil, iif(Arg7 ; //21 AQUI == 1, .T., .F.)) addbutton(Local3, Arg3 + 3 + Local1, MAXCOL()+3-49, 18, Arg5, Nil, iif(Arg7 ; //41 AQUI == 2, .T., .F.)) Local2:= win(Arg3, 10, Arg3 + 5 + Local1, MAXCOL()-10, Arg2, Arg8, Arg9) if (ISARRAY(Arg1)) for Local4:= 1 to Local1 DevPos(Arg3 + 1 + Local4, 13) vldevout(padc(Arg1[Local4], MAXCOL()-26), Arg10) // 54 AQUI next else DevPos(Arg3 + 2, 13) vldevout(padc(Arg1, MAXCOL()-26), Arg10) // 54 AQUI endif setcursor(0) Local4:= procbutton(Local3, 2, iif(Arg6 < 3, Arg6, 2)) rstenv(Local2) return Local4 ******************************** function LINBUTTON2(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, ; Arg9, Arg10) local Local1 Local1:= newbutton() Arg1:= iif(ISNIL(Arg1), .T., Arg1) Arg2:= iif(ISNIL(Arg2), 1, Arg2) Arg3:= iif(ISNIL(Arg3), 21, Arg3) Arg4:= iif(ISNIL(Arg4), 1, Arg4) Arg5:= iif(ISNIL(Arg5), 2, Arg5) Arg6:= iif(ISNIL(Arg6), "&OK", Arg6) Arg8:= iif(ISNIL(Arg8), "&Cancelar", Arg8) addbutton(Local1, Arg3, 21, 18, Arg6, Arg7, iif(Arg5 == 1, .T., ; .F.)) addbutton(Local1, Arg3, 41, 18, Arg8, Arg9, iif(Arg5 == 2, .T., ; .F.)) if (Arg1) Arg3:= procbutton(Local1, Arg2, iif(Arg4 < 3, Arg4, 2), Arg10) else showbutton(Local1, Arg2, Arg10) endif return Arg3 ******************************** function MSGBOX3(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, ; Arg9, Arg10, Arg11) local Local1, Local2, Local3, Local4 private lPress:=.F. Arg4:= iif(ISNIL(Arg4), "&Sim", Arg4) Arg5:= iif(ISNIL(Arg5), "&NÆo", Arg5) Arg6:= iif(ISNIL(Arg6), "&Cancelar", Arg6) Arg7:= iif(ISNIL(Arg7), 1, Arg7) Arg8:= iif(ISNIL(Arg8), 3, Arg8) Arg1:= iif(ISNIL(Arg1), "", Arg1) Arg2:= iif(ISNIL(Arg2), "Aten‡Æo!", Arg2) Local1:= iif(ISARRAY(Arg1), Len(Arg1), 1) Arg3:= iif(ISNIL(Arg3), Int(12 - (Local1 + 7) / 2), Arg3) Arg9:= iif(ISNIL(Arg9), "W+*/R", Arg9) Arg10:= iif(ISNIL(Arg10), "R+*/W", Arg10) Arg11:= iif(ISNIL(Arg11), "N*/W", Arg11) Local3:= newbutton() addbutton(Local3, Arg3 + 3 + Local1, 13, 18, Arg4, Nil, iif(Arg8 ; == 1, .T., .F.)) addbutton(Local3, Arg3 + 3 + Local1, 31, 18, Arg5, Nil, iif(Arg8 ; == 2, .T., .F.)) addbutton(Local3, Arg3 + 3 + Local1, 49, 18, Arg6, Nil, iif(Arg8 ; == 3, .T., .F.)) Local2:= win(Arg3, 10, Arg3 + 5 + Local1, 69, Arg2, Arg9, Arg10) if (ISARRAY(Arg1)) for Local4:= 1 to Local1 DevPos(Arg3 + 1 + Local4, 13) vldevout(padc(Arg1[Local4], 54), Arg11) next else DevPos(Arg3 + 2, 13) vldevout(padc(Arg1, 54), Arg11) endif setcursor(0) Local4:= procbutton(Local3, 2, iif(Arg7 < 3, Arg7, 2)) rstenv(Local2) return Local4 ******************************** function LINBUTTON1(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) local Local1 Local1:= newbutton() Arg1:= iif(ISNIL(Arg1), .T., Arg1) Arg2:= iif(ISNIL(Arg2), 1, Arg2) Arg3:= iif(ISNIL(Arg3), 21, Arg3) Arg4:= iif(ISNIL(Arg4), "&OK", Arg4) addbutton(Local1, Arg3, 31, 18, Arg4, Arg5, .T.) if (Arg1) Arg3:= procbutton(Local1, Arg2, 1, Arg6) else showbutton(Local1, Arg2, Arg6) endif return Arg3 ******************************** function VLSCRSAVER(Arg1, Arg2) local Local1 Local1:= aclone(Static22) Static22[1]:= iif(Arg1 != Nil, Arg1, Static22[1]) Static22[2]:= iif(Arg2 != Nil, Arg2, Static22[2]) return Local1 ******************************** function MSGBOX3D(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) local Local1, Local2, Local3 private lPress:=.F. Arg1:= iif(ISNIL(Arg1), "", Arg1) Arg2:= iif(ISNIL(Arg2), "Aguarde", Arg2) Local1:= iif(ISARRAY(Arg1), Len(Arg1), 1) Arg3:= iif(ISNIL(Arg3), 12 - (Local1 + 6) / 2, Arg3) Arg4:= iif(ISNIL(Arg4), "W+/N", Arg4) Arg5:= iif(ISNIL(Arg5), "N/W", Arg5) Arg6:= iif(ISNIL(Arg6), "N/W", Arg6) Local2:= win(Arg3, 16, Arg3 + 6 + Local1, 63, Arg2, Arg4, Arg5)