Clipper On Line • Ver Tópico - VLIB - Visual Lib Modificada

VLIB - Visual Lib Modificada

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

VLIB - Visual Lib Modificada

Mensagempor asimoes » 29 Nov 2007 20:07

Pessoal,

Deu um trabalhão, mas valeu a pena, usei a wvw_boxdrawraised() e wvw_boxdrawrecessed(), os botões agora ficaram mais bonitos, quem quiser melhorar fique a vontade e não se esqueça de postar aqui também.

[]´s

Alexandre

Usar a lib gtwvw.

Código:

#include "common.ch"
#include "inkey.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)
/*
vldispbox(Arg3 + 2, 17, Arg3 + 5 + Local1, 17, "ÜÜÜÜÜÜÜÜÜ", "W+/W")
vldis
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Mensagempor janio » 02 Jan 2008 19:44

Olá Alexandre,

Sua modificação ficou realmente muito boa. Antes os botões ocupavam o espaço de 03 linhas, agora não.

O único problema que vi é que não da pra saber qual botão estão com foco a não ser pela cor diferente da tecla de atalho.

Parabéns!

Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Código fonte

Mensagempor dotNET-man » 22 Mar 2008 22:38

Alexandre,
Você poderia me enviar o arquivo fonte da VLib?
Aqui na página o fonte não está completo.
Obrigado!
Sérgio
dotNET-man
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 20
Data de registro: 05 Jan 2008 18:15
Cidade/Estado: SC
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor dotNET-man » 22 Mar 2008 22:39

Esqueci de pôr o meu email: cigcor@hotmail.com
dotNET-man
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 20
Data de registro: 05 Jan 2008 18:15
Cidade/Estado: SC
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor acelconsultoria » 25 Mar 2008 15:15

Também gostaria de receber o arquivo completo, se possível !!!

Obrigado

maickonsato@hotmail.com
Adm. Maickon Sato
Consultoria e Projetos
-------------------------------------------------------
Avatar de usuário

acelconsultoria
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 231
Data de registro: 10 Jan 2006 16:05
Cidade/Estado: Itápolis-SP
Curtiu: 6 vezes
Mens.Curtidas: 6 vezes

Mensagempor rochinha » 27 Mar 2008 02:11

Amiguinho

Envie para meu email irochinha@itelefonica.com.br que eu disponibilizo um link.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 17 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro