Moderador: Moderadores
/***
* GETREADER()
* READ Modal padr„o de um GET simples
*/
Static PROC GETREADER(get)
LOCAL press, pp, Tecl_p, ar_db:=ALIAS(), n_cp, qt_lin_hlp, lihlp, mIniCol, tela_hlp,;
c_box, t_box, tmp_, vlr_defa:=.f., ncol, nrow
LOCAL original,; //num sei o que ‚ mcargo,; //para montar a vari vel da senha
mmascara := if(get:picture=NIL,'NIL',get:picture),; //mascara do get
mtamget // tamanho do get
PRIV im_aj_at_:=0
PRIVATE lPrimKey := .T.
mcargo:=''
IF TYPE("op_menu")!="N" .OR. op_menu=1 .OR.; // se op_menu nao existir ou
op_menu=4 .OR. (TYPE("cex_com_vl")!="U" .AND. op_menu = 5) // for inclusao ou tela
get:setfocus() // complementar entao ativa o GET
tmp_=READVAR()
IF !EMPT(get:cargo) .AND. EMPT(&tmp_.) // se o campo esta vazio e pode ter valor inicial
tmp_=get:cargo
IF VALTYPE(tmp_)="A" .AND. LEN(tmp_)>2 // se o valor definido no "cargo"
IF !EMPT(tmp_[3]).AND.EMPT(get:original) // é o valor inicial
tmp_=EVAL(&("{||"+tmp_[3]+"}")) // pega o default
lihlp=LEN(get:buffer)
IF get:picture=NIL .OR. AT("@K",get:picture)>0 .OR. AT("@S",get:picture)>0
pp="@X"
ELSE
pp=get:picture
ENDIF
get:buffer:=LEFT(TRAN(tmp_,pp)+SPAC(lihlp),lihlp)
get:assign()
updated:= .T.
vlr_defa:=.t.
ENDIF
ENDIF
ENDIF
get:killfocus() // desativa o GET
ENDIF
IF (GETPREVALIDATE(get)) // le o GET se condi‡„o WHEN satisfeita
get:setfocus() // ativa o GET para leitura
IF vlr_defa // se teve default, prepara para
get:clear := .t. // apagar se tecla diferente de letra
ENDIF
WHILE (get:exitstate==GE_NOEXIT)
lihlp=0
IF (get:typeout)
get:exitstate:= GE_ENTER
ENDIF
// clodoaldo
// Tratamento para entrada Direita -> Esquerda
IF ( Get:type == "N" ) .And. ( Len( Get:buffer ) > Get:DecPos )
Get:Pos := Len( Get:buffer ) + 1
Get:End()
Get:ToDecPos()
Get:Left()
ELSEIF ( Get:type == "N" )
Get:Pos := Len( Get:buffer ) + 1
Get:End()
ENDIF
// \clodoaldo
cKey := ''
nKey := 0
// Apply keystrokes until exit
original := Get:buffer
mtamget :=len(get:buffer) // tamanho do get
WHILE (get:exitstate==GE_NOEXIT) // aplica toques at‚ a sa¡da
IF im_aj_at_<2
IF DrvAutoHel .AND. !EMPT(get:cargo)
tmp_=get:cargo
IF !EMPT(tmp_[1])
qt_lin_hlp=CONTA("|",tmp_[1])+1
If TYPE('L_I2')=='N'
ml_i:=l_i2
Else
ml_i:=if(TYPE('L_I')=='N', l_i, MaxRow())
Endif
//Modifiquei para dicas muito grandes
IF get:row + qt_lin_hlp + 3 > ml_i .and. !(ReadVar() $ 'DEC_TIPO,DEC_MODO,DEC_TIPPUB,ATO_TIPOAG')
IF get:row-qt_lin_hlp-3>=0
lihlp=get:row-qt_lin_hlp-2
ENDIF
ELSE
lihlp=get:row+1
ENDIF
IF lihlp>0
mIniCol :=get:col
mTamanho :=TamanhoMsg(tmp_[1])
mMaxCol :=mIniCol+mTamanho+4
mc_i:=if(TYPE('C_I')=='N', c_i, MaxCol())
if mMaxCol > mc_i
mIniCol:= mc_i - mTamanho -5
mMaxCol:= mc_i-2
ENDIF
mName:=get:name
mc1&mName:=lihlp-1
ml1&mName:=mIniCol-1
mc2&mName:=LIHLP+qt_lin_hlp+2
ml2&mName:=mMAXCOL+1
th_&mName:=SaveScreen(mc1&mName, ml1&mName, mc2&mName, ml2&mName)
//@ 19, 60 say mName + ' ' + strzero(len(th_&mName),6)
c_box=drvcorbox; t_box=drvtitbox
drvcorbox=drvcorhlp; drvtitbox=drvtithlp
DBOX(tmp_[1], lihlp, mIniCol, , .f.)
drvcorbox=c_box; drvtitbox=t_box
ENDIF
ENDIF
ENDIF
IF im_aj_at_=1
DISPEND() // apresenta tela de uma vez so
ENDIF
ENDIF
im_aj_at_=3
tecl_p= Inkey(0)
novapos=.f.
IF tecl_p=-100
novapos=.t.
tecl_p=K_UP
ENDIF
nKey := tecl_p
if AT("@P",mmascara)=0
GETAPPLYKEY(get,tecl_p,original)
ENDIF
lPrimKey := .F. // clodoaldo
//tratamento de campo senha
If AT("@P",mmascara)>0
IF nKey >= 32 .AND. nKey <= 255
mcargo := mcargo+chr(nKey) //monta a saida do get
ELSEIF nkey = 8
mCARGO := SUBSTR(mCARGO, 1, LEN(mCARGO) - 1)
ELSEIF nKey = 27 //Sai com Tecla ESC e retorna vazio
mCargo := space(mTamget)
ELSEIF nkey = 5 //Volta para o get anterior
mCARGO := space(mTamget) //preenche o get com espa‡os
ENDIF
GETAPPLYKEY(get, nKey, original) //aplica a tecla pressionada
ENDIF
IF LASTKEY()=K_ALT_F1
im_aj_at_=1
DrvAutoHel=!DrvAutoHel
ELSEIF LASTKEY()=K_F8 .AND. !EMPT(get:cargo)
tmp_=get:cargo
mF8:=tmp_[2]
mGet:=get:buffer
IF !EMPTY(tmp_[2])
nrow:= ROW()
ncol:= COL()
JOGANOBUFF(" ")
Inkey(0)
get:assign()
AJUSTA_PICT(get)
if 'ABREARQUIVO' $ Upper (mF8)
WVW_SetClipboard( strtran(strtran(mGet,'.',''),'-','') )
//WVW_PasteFromClipboard()
endif
tmp_=EVAL(&("{||"+tmp_[2]+"}")) // executa comando especial...
If valtype(mF8) <> 'C'
mF8 := ''
Endif
IF !EMPT(tmp_) .and. !('ABREARQUIVO' $ Upper (mF8)) .and. !('VDBF2' $ Upper (mF8))
IF get:picture=NIL .OR. AT("@K", get:picture)>0 .OR. AT("@S", get:picture)>0
pp="@X"
ELSE
pp=get:picture
ENDIF
get:buffer:=PADR(TRAN(tmp_,pp),LEN(get:buffer))
get:assign()
get:display()
updated:= .T.
IF !SET(_SET_CONFIRM)
get:exitstate:=GE_ENTER
ENDIF
ENDIF
SETPOS(nrow, ncol)
ENDIF
ENDIF
IF get:exitstate!=GE_NOEXIT .OR. im_aj_at_=1
IF im_aj_at_=1
DISPBEGIN() // monta tela na pagina de traz
ENDIF
IF lihlp>0
mName:=get:name
RestScreen(mc1&mName, ml1&mName, mc2&mName, ml2&mName, th_&mName)
//@ 20, 60 say mName + ' ' + strzero(len(th_&mName),6)
ENDIF
IF im_aj_at_=1 .AND. op_menu!=3 .AND. op_menu!=4
x="INFOSIS"
&x.(.t.)
get:display()
ENDIF
ENDIF
END
IF get:exitstate != GE_UP .AND.; // se nao esta voltando campo
get:exitstate != GE_ESCAPE // e nao pressionou ESC
AJUSTA_PICT(get)
IF (!GETPOSTVALIDATE(get)) // n„o permite sa¡da se condi‡„o
im_aj_at_=0 // VALID nao estiver satisfeita
get:exitstate:= GE_NOEXIT
ELSE
IF !EMPT(get:cargo) // pode ter formulas?
tmp_=get:cargo
IF VALTYPE(tmp_)="A" .AND. LEN(tmp_)>3 // se existe a subscricao 4
IF !EMPT(tmp_[4]) // e ela nao esta vazia
pp="IMP_FORM"
FOR i_=1 TO LEN(tmp_[4]) // mostra todas as formulas
&pp.(tmp_[4,i_]) // requisitadas
NEXT
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
END
get:killfocus() // desativa o GET
END
//tratamento de campo senha senha
if '@P' $ mmascara
IF Get:EXITSTATE() <> 7
Get:VARPUT(mCARGO)
ENDIF
ENDIF
RETURN
Usuários vendo este fórum: Google [Bot] e 6 visitantes