Página 15 de 19

Convertendo Sistema do GASPRO para Harbour

Enviado: 19 Jul 2015 22:37
por bcm
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?

Convertendo Sistema do GASPRO para Harbour

Enviado: 10 Set 2015 09:34
por leozirio
Bom dia

no meu projeto em gás quando eu mudava a data no inicio do sistema ele aceitava e tudo dentro do sistema usava a data do inicio quando converti para o habour essa função não esta mais funcionando (DOSDATA), alguém sabe dizer como fazer isso agora em habour?

Convertendo Sistema do GASPRO para Harbour

Enviado: 10 Set 2015 09:55
por Itamar M. Lins Jr.
Ola!
Cadê sua função ?
Penso que na verdade você estava mudando a DATA o DOS... No windows tem o relógio e data no canto inferior direito...

Saudações,
Itamar M. Lins Jr.

Convertendo Sistema do GASPRO para Harbour

Enviado: 10 Set 2015 10:35
por Jairo Maia
Olá Leozirio,

Você poderia trocar a função DOSDATA() pela função SetDate( dNewDate ), porém, para que ela funcione o usuário precisa ter privilégio para essa alteração. No Seven ou superior se você entrar no prompt de comando e tentar alterar a data pelo comando date, receberá a mensagem: O cliente não tem o privilégio necessário.

Você com certeza está tentando primeiro alterar a data do sistema como foi dito pelo Itamar e depois colocando na sua variável publica datac lendo a data com a função Date(). Você precisa mudar, setando a variavel datac diretamente com o resultado obtido no campo de atualização de data.

Quanto a alterar a data do sistema via aplicativo não sei dizer como fazer.

Convertendo Sistema do GASPRO para Harbour

Enviado: 11 Mai 2016 11:03
por bcm
bom dia!

Como faço para comprimir os relatórios?
Pois eu compilei os codigo que eu tinha gaspro40 e os relatorios que tinha mais de 100 colunas estão imprimindo em 80 colunas e não estao cabendo na folha.

um abraço

Convertendo Sistema do GASPRO para Harbour

Enviado: 14 Mai 2016 13:01
por Jairo Maia
Olá bcm,

Como você está fazendo essa impressão? Usando as funções do Toledo no Gaspro40 ou suas próprias? Se for própria, poste o código. Como uso funções próprias não sei o que pode estar acontecendo.

Convertendo Sistema do GASPRO para Harbour

Enviado: 18 Mai 2016 11:41
por bcm
bom dia!

estou compilando com o utilitario gas4harbour.exe que inclui na compilação o fonte gasp40hb.prg e getsys.prg.

desde já agradeço

Convertendo Sistema do GASPRO para Harbour

Enviado: 18 Mai 2016 11:48
por bcm
estou enviando em anexo o relatorio

Convertendo Sistema do GASPRO para Harbour

Enviado: 18 Mai 2016 11:49
por bcm
segue o gasp40hb.prg

Convertendo Sistema do GASPRO para Harbour

Enviado: 18 Mai 2016 13:47
por Toledo
bcm escreveu:os relatorios que tinha mais de 100 colunas estão imprimindo em 80 colunas e não estao cabendo na folha.
Amigo, veja esta mensagem:
https://pctoledo.org/forum/viewto ... 321#p79321

Abraços,

Convertendo Sistema do GASPRO para Harbour

Enviado: 19 Mai 2016 15:44
por bcm
Boa tarde!

quero lhe agradecer pela ajuda
deu certo.

um grande abraço

Convertendo Sistema do GASPRO para Harbour

Enviado: 19 Mai 2016 16:18
por bcm
Boa tarde!

meu sistema foi desenvolvido em gaspro40 e compilado em harbour 3.0 em modo console.Existe algum a maneira de eu melhorar o visual do meu sistema, mesmo estando em modo console? Alguma biblioteca do tipo clbc?

desde já agradeço

Convertendo Sistema do GASPRO para Harbour

Enviado: 15 Jan 2017 19:35
por bcm
Boa tarde a todos!

Converti meu sistema feito em gaspro 4.0 para harbour mas quando vou imprimir uma etiqueta, não está capturando a impressora estalada na maquina como acontece nos relatórios.Poderiam me ajudar?

Convertendo Sistema do GASPRO para Harbour

Enviado: 24 Jan 2017 22:04
por LDOSISTEMAS
Boa noite, eu passei por isso ai descobri que a etiqueta tem uma rotina específica para impressão, diferente da opcoes_rhb , presente na gasp40hb, então fiz o seguinte criei uma copia da opcoes_rbh como opcoes_ehb com o seguinte código:

Código: Selecionar todos

******[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 FORMULRIO",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
nos relatórios da etiqueta também é preciso fazer a seguinte alteração , para não ter que alterar manualmente todos já que pode haver muitas etiquetas inclui os seguintes códigos no gas4harbour.prg
no trecho que contem :

Código: Selecionar todos

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() ...
inclui esse comando para trocar a opcoes_etq pela que foi listada acima com o seguinte código:

Código: Selecionar todos

  "#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()+;

após o trecho:

Código: Selecionar todos

    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
incluir

Código: Selecionar todos

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
Com essas alterações a etiqueta passou a imprimir corretamente
Espero ter ajudado
Qualquer duvida é só chamar

Convertendo Sistema do GASPRO para Harbour

Enviado: 30 Jan 2017 10:06
por bcm
Lauro, bom dia!

desde já agradeço pela ajuda irei fazer as alterações e assim que concluir te retorno.

um grande abraço