abaixo outras telas do sistema comercial que gostaria de melhorar o visual.
Foi desenvolvido em gaspro e copilado em harbour 3.0
Alguém poderia me ajudar a colocar pano de fundo e usar um fonte grande para mostrar o resultado da venda?
Moderador: Moderadores
bcm escreveu:os relatorios que tinha mais de 100 colunas estão imprimindo em 80 colunas e não estao cabendo na folha.
******[LAURO DE OLIVEIRA]*************************************************
FUNC OPCOES_EHB(l_m,c_m,linmin_,colmin_,sos_cod,fil_ini)
LOCAL li_, tpx, i_, op_x:=1, ant_, cr_i, or_i, t_opc:=SAVESCREEN(0,0,MAXROW(),79)
LOCAL aPrinters := WIN_PRINTERLIST()
IF Empty( aPrinters )
ALERTA(4)
DBOX("Nenhuma impressora Instalada!",,,,,"ATEN€ŽO, "+usuario)
RETU .F.
ENDIF
for i=1 to len(aPrinters)
IF aPrinters[i] == WIN_PRINTERGETDEFAULT()
//drvprn:=i comentado para deixar sempre a ultima impressora que escolhe igual ao anterior
exit
ENDIF
next
nucop=1
or_i=cpord // salva ordenacao inicial
fil_ini=IF(fil_ini=NIL,"",fil_ini)
ant_=STR(qtlin_)+STR(qtcol_)+; // salva situacao atual da etiqueta
STR(qtcse_)+STR(qtcar_)+qtreg_
DO WHIL op_x>0
cod_sos=sos_cod
msg="Prosseguir|Sa¡da: " // monta menu de opcoes
IF tps=1 .AND. !EMPTY(drvporta) // se a saida e para prn
msg+=aPrinters[drvprn]
ELSE // caso contrario
msg+="Arquivo" // coloca a palavra "Arquivo"
ENDI
msg+="|Filtrar|Ordenar"+;
"|C¢pia(s). ("+TRAN(nucop ,"999")+")"+;
"|Altura... ("+TRAN(qtlin_,"99")+")"+;
"|Largura.. ("+TRAN(qtcol_,"999")+")"+;
"|Separa‡„o ("+TRAN(qtcse_,"99")+")"+;
"|Carreiras ("+TRAN(qtcar_,"99")+")"+;
"|Qtde/Reg. ("
msg+=IF(LEN(qtreg_)>30,LEFT(qtreg_,20)+"...",qtreg_)+" )"
RESTSCR(0,0,MAXROW(),79,t_opc)
op_x=DBOX(msg,l_m,c_m,E_MENU,NAO_APAGA,,,,op_x)
DO CASE
CASE op_x=1 // prossegue...
IF tps=1 // vai para impressora.....
drvporta:=drvdbf+"TMP"+ide_maq
ENDI
IF LEN(fil_ini)>0 // se tem filtro inicial
IF LEN(criterio)>0 // vamos concatenar com filtro feito pelo usuario
criterio=fil_ini+".AND. ("+criterio+")"
ELSE
criterio=fil_ini // usuario nao fez filtro. Pega o inicial...
ENDI
ENDI
INDTMP() // verifica/indexa o arquivo se for necessario
EXIT
CASE op_x=2 // tipo de saida
tps=TP_SAIDA(IF(l_m=NIL,NIL,l_m+2),IF(c_m=NIL,NIL,c_m+8),.t.)
CASE op_x=3 // pega criterio de selecao dos registro
FILTRA(.f.) // parametro .f. = nao indexa ao final da selecao
CASE op_x=4 // escolhe uma nova ordem
cpord=or_i // inicializa ordenacao
CLASS(.f.)
CASE op_x=5 // numero de copias
nucop=DBOX("(de 1 a 999)",IF(l_m=NIL,NIL,l_m+2),IF(c_m=NIL,NIL,c_m+8),,,"QUANTIDADE DE C¢PIAS",nucop,"999")
nucop=IF(nucop<1.OR.LASTKEY()=K_ESC,1,nucop)
CASE op_x=6 // modifica numero de linhas
i_=DBOX("(de"+TRAN(linmin_,"99")+" a 66 linhas)",IF(l_m=NIL,NIL,l_m+2),IF(c_m=NIL,NIL,c_m+8),,,"ALTURA DA ETIQUETA",qtlin_,"99")
IF i_>=linmin_.AND.i_<=66.AND.LASTKEY()!=K_ESC
qtlin_=i_
ENDI
CASE op_x=7 // modifica largura da etiqueta
i_=DBOX("(de"+TRAN(colmin_,"999")+" a 254 caracteres)",IF(l_m=NIL,NIL,l_m+2),IF(c_m=NIL,NIL,c_m+8),,,"LARGURA DA ETIQUETA",qtcol_,"999")
IF i_>=colmin_.AND.i_<=254.AND.LASTKEY()!=K_ESC
qtcol_=i_
ENDI
CASE op_x=8 // separacao entre carreiras
i_=DBOX("(de 1 a 99 caracteres)",IF(l_m=NIL,NIL,l_m+2),IF(c_m=NIL,NIL,c_m+8),,,"SEPARA€ŽO ENTRE AS CARREIRAS",qtcse_,"99")
IF i_>=1.AND.LASTKEY()!=K_ESC
qtcse_=i_
ENDI
CASE op_x=9 // num de carreiras do formulario
i_=DBOX("(de 1 a 30)",IF(l_m=NIL,NIL,l_m+2),IF(c_m=NIL,NIL,c_m+8),,,"CARREIRAS DO FORMULRIO",qtcar_,"99")
IF i_>=1.AND.i_<=30.AND.LASTKEY()!=K_ESC
qtcar_=i_
ENDI
CASE op_x=10 // numero de qtde por registro
tpx=qtreg_
DO WHILE .t.
cod_sos=59
SET KEY K_F10 TO ve_campos// F10 monta menu de campos
tpx=DBOX("F10=Campos do arquivo",IF(l_m=NIL,NIL,l_m+2),IF(c_m=NIL,NIL,c_m+8),,,"QTDE POR REGISTRO",PADR(tpx,100),"@S40")
SET KEY K_F10 TO
IF LASTKEY()=K_ESC // cancelou
EXIT
ENDI
tpx=ALLTRIM(tpx) // retira brancos do expressao
i_=TYPE(tpx) // se a expressao=indeterminada
IF i_="UI" // existe funcao fora da clipper.lib na
i_=VALTYPE(&tpx.) // expressao, logo avalia o seu
ENDI // conteudo
IF i_="N" // se o tipo da expressao for
qtreg_=tpx // numerico, entao segue em frente
EXIT
ENDI // expressao e' ilegal avisa
ALERTA(3) // e recebe outra expressao
DBOX("EXPRESSŽO ILEGAL",15)
ENDD
ENDC
ENDD
IF ant_!=STR(qtlin_)+; // se alterou parametros da etiqueta
STR(qtcol_)+STR(qtcse_)+; // entao grava na variavel de memoria
STR(qtcar_)+qtreg_ // monta nome da variavel a publicar
vr_memo="drv"+; // com "drv" + as ultima 7 letras do
RIGHT(PROCNAME(1),7) // nome do prg da etiqueta
i_=TRAN(qtlin_,"999")+; // prepara parametros da etiqueta
TRAN(qtcol_,"999")+; // para serem gravados
TRAN(qtcse_,"999")+;
TRAN(qtcar_,"999")+qtreg_
PUBL &vr_memo.:=i_ // publica/inicializa variavel
SAVE TO (arqconf) ALL LIKE drv*
REST FROM (arqconf) ADDI // grava/restaura variaveis
ENDI // restaura a tela
RESTSCR(0,0,MAXROW(),79,t_opc)
RETU(op_x=1) // retorna .t. se quiser prosseguir
******[PCToledo]****************************************************
FUNC OPCOES_RHB(l_m,c_m,op_rel,sos_cod,fil_ini)
LOCAL li_, op_x, ant_, cr_i, or_i, t_opc:=SAVESCREEN(0,0,MAXROW(),79)
LOCAL aPrinters := WIN_PRINTERLIST()
IF Empty( aPrinters )
ALERTA(4)
DBOX("Nenhuma impressora Instalada!",,,,,"ATEN€ŽO, "+usuario)
RETU .F.
ENDIF
for i=1 to len(aPrinters)
IF aPrinters[i] == WIN_PRINTERGETDEFAULT()
//drvprn:=i comentado para deixar sempre a ultima impressora que escolhe igual ao anterior
exit
ENDIF
next
op_x=LRELA(l_m,c_m,op_rel) // verifica/seleciona relatorios gravados
IF op_x=2 // leu um relatorio gravado anteriormente
improk=.t.
IF tps=1 // vai para impressora...
improk=PREPIMP() // confima preparacao da impressora
ENDI
IF !improk // cancelou
op_x=0
ELSE
INDTMP() // verifica/indexa o arquivo se for necessario
ENDI
RETU .t. // retorna
ENDI
fil_ini=IF(fil_ini=NIL,"",fil_ini)
nucop=1
or_i=cpord // salva ordenacao inicial
ant_=criterio+cpord+titrel // salva criterio, ordenacao e titulo atuais
DO WHIL op_x>0
cod_sos=sos_cod
msg="Prosseguir|Sa¡da: " // monta menu de opcoes
IF tps=1 .AND. !EMPTY(drvporta) // se a saida e para prn
msg+=aPrinters[drvprn] // pega conf atual
ELSE // caso contrario
msg+="Arquivo/Video" // coloca a palavra "Arquivo/Video"
ENDI
msg+="|Filtrar|C¢pia(s) ("+TRAN(nucop,"99")+")"+;
"|Ordenar|T¡tulo"
IF !EMPTY(titrel) // se tem titulo coloca-o no menu
msg+=": "+IF(LEN(titrel)>30,LEFT(titrel,30)+"...",titrel)
ENDI
cr_i=criterio+cpord+titrel // se tem alteracao, liga
gr_rela=(ant_!=cr_i) // flag de gravacao de relatorio
RESTSCREEN(0,0,MAXROW(),79,t_opc)
op_x=DBOX(msg,l_m,c_m,.t.,.f.,,,,op_x)
DO CASE
CASE op_x=1 // prossegue...
IF tps=1 // vai para impressora.....
drvporta:=drvdbf+"TMP"+ide_maq
ENDI
IF LEN(fil_ini)>0 // se tem filtro inicial
IF LEN(criterio)>0 // vamos concatenar com filtro feito pelo usuario
criterio=fil_ini+".AND. ("+criterio+")"
ELSE
criterio=fil_ini // usuario nao fez filtro. Pega o inicial...
ENDI
ENDI
INDTMP() // verifica/indexa o arquivo se for necessario
EXIT
CASE op_x=2 // tipo de saida
tps=TP_SAIDAHB(IF(l_m=NIL,NIL,l_m+2),IF(c_m=NIL,NIL,c_m+8),.t.,aPrinters)
CASE op_x=3 // pega criterio de selecao dos registro
FILTRA(.f.) // parametro .f. = nao indexa ao final da selecao
CASE op_x=4 // numero de copias a emitir
nucop=DBOX("(de 1 a 99)",IF(l_m=NIL,NIL,l_m+2),IF(c_m=NIL,NIL,c_m+8),,,"QUANTIDADE DE C¢PIAS",nucop,"99")
nucop=IF(nucop<1.OR.LASTKEY()=K_ESC,1,nucop)
CASE op_x=5 // escolhe uma nova ordem
cpord=or_i // inicializa ordenacao
CLASS(.f.)
CASE op_x=6 // recebe um titulo para o sistema
msg="Informe, se Desejar:"
titrel=LEFT(titrel+SPAC(70),70)
titrel=ALLTRIM(DBOX(msg,,,,,"T¡TULO DO RELAT¢RIO",titrel))
RESTSCREEN(0,0,MAXROW(),79,t_opc)
ENDC
ENDD // restaura a tela
RESTSCREEN(0,0,MAXROW(),79,t_opc)
RETU(op_x=1) // retorna .t. se quiser prosseguir
if AT( "IMP_BRW", cBuf ) == 0
nArqCvt+=1
@ row()+1,0 say "Ajustando arquivo '"+upper(cArq_CH)+"' ..."
nEnd := AT( "* \\ Final", cBuf )
cCH := "//#command INDTMP() => INDTMPHB()"+hb_eol() +;
"#define opcoes_rel(l_m,c_m,op_rel,sos_cod,fil_ini) OPCOES_RHB(l_m,c_m,op_rel,sos_cod,fil_ini)" + hb_eol() +;
"#command TP_SAIDA(<l_tp>,<c_tp>,<arq_vid>) => TP_SAIDAHB(<l_tp>,<c_tp>,<arq_vid>)"+hb_eol() ...
"#command OPCOES_ETQ(<l_m>,<c_m>,<linmin_>,<colmin_>,<sos_cod>,<fil_ini>) => OPCOES_EHB(<l_m>,<c_m>,<linmin_>,<colmin_>,<sos_cod>,<fil_ini>)"+hb_eol()+;
if AT( "lpp_033", cBuf )!= 0.and.AT( "so_um_reg", cBuf )!= 0.and.lcopias //ajusta relatorios meia pagina para 2 copias apos a inserção
@ row()+1,0 say "Ajustando arquivo '"+upper(cArquivo)+"' ..."
nArqCvt+=1
cBuf := StrTran( cBuf, "nucop=1", "nucop=NumeroCopias()" )
hb_memoWrit( cArquivo, cBuf )
endif
if AT( " qtcar_", cBuf )!= 0 //ajusta etiquetas para impressão
@ row()+1,0 say "Ajustando arquivo '"+upper(cArquivo)+"' ..."
nArqCvt+=1
//cBuf := StrTran( cBuf, "SET PRINTER TO (drvporta)", "" )
cBuf := StrTran( cBuf, "opcoes_etq", "opcoes_ehb" )
cBuf := StrTran( cBuf, "// mostra o arquivo gravado", "// mostra o arquivo gravado"+hb_eol()+"GRELA(99)" )
cBuf := StrTran( cBuf, "SET PRINT OFF", "SET PRINT OFF"+HB_EOl()+"SET PRINTER TO "+HB_EOl()+"set devi to scre" )
cBuf := StrTran( cBuf, "SET PRINT ON", "SET PRINT ON "+HB_EOL()+"SET DEVI TO PRIN" )
cBuf := StrTran( cBuf, "EJEC" , "//EJECT " )
//cBuf := StrTran( cBuf, "SET CONSOLE ON ","SET PRINTER TO (drvporta)")
//cBuf := StrTran( cBuf, "?? ","@ PROW()+1,0 SAY ")
//cBuf := StrTran( cBuf, "? ","@ PROW(),0 SAY ")
hb_memoWrit( cArquivo, cBuf )
endif
Usuários vendo este fórum: Google [Bot], Itamar M. Lins Jr. e 5 visitantes