LX 300 + winxp

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

wagnervidal
Usuário Nível 1
Usuário Nível 1
Mensagens: 27
Registrado em: 21 Out 2010 11:35
Localização: Araguari/MG

LX 300 + winxp

Mensagem por wagnervidal »

Galera blz?
Estive olhando aki no forum e encontrei varios topicos falando sobre o problema da lx-300 + winxp, lentidão na hora de imprimir, segui varios topicos aqui do forum e não consegui encontra a solução, compilei o programa com harbour e o problema continua, aqui eu uso papel formulario cont. meia folha, segue o prg para vcs darem uma olhada pra ver o que esta faltando, pois começa a imprimir normal ae a impressao para demora pra volta, as vezes tenho que sair do programa para terminar de imprimir.
Vlw

Código: Selecionar todos


SET DATE AMERI
CLOSE DATA
SELE 1
USE EMPRESAS INDEX COEMPCOD,COEMPNOM,COEMPROT,COEMPEXC
SELE 2
USE ITENPEDI INDEX COITECOD,COITEMER,COITEEMI,COITEIMP,COITECME
SET RELA TO CODITENCLI INTO EMPRESAS
SELE 3
USE VENDEDOR INDEX COVENCOD,COVENNOM,COVENEXC
SELE 4
USE MERCADO  INDEX COMERCOD,COMERDES,COMEREXC,COMERGRU
SELE 5
USE PEDIATAC INDEX COPATCOD,COPATMER,COPATEMI
SELE 6
USE RECEBER  INDEX CORECCOD,CORECCLI,CORECVEN
*
nCtlin := 00
DO WHILE .T.
   SELE 2
   SETCOLOR(cCor1)
   @ 07,21 CLEAR TO 19,78
   cPedido = SPACE(08)
   @ 13,36 SAY "Codigo do Pedido " GET cPedido PICT "99999999"
   READ
   IF LASTKEY()=27
      nCtlin := 00
      SET DATE BRIT
      EXIT
   ENDIF
   cPedido=STRZERO(VAL(cPedido),8,0)
   @ 13,54 SAY cPedido
   SEEK cPedido
   IF EOF()
      Msg("Codigo Informado nÆo existe.")
      INKEY(3)
      Limpalinha()
      IF nCtlin>=30
         nCtlin=33
      ELSE
         nCtlin=00
      ENDIF
      LOOP
   ENDIF         
   cCoditencli := CODITENCLI 
   COMTEIMP()
   IF LASTKEY()=27
      nCtlin := 00
      SET DATE BRIT
      RETURN
   ENDIF
   SET DEVI TO PRIN
   SET CONSOLE OFF
   SET PRINT ON
   *
   nSubValor=0.00
   nTotValor=0.00
   *
   SELE 5
   SEEK cPedido
   dEmissao   := EMISSAO
   dVencimento:= VENCIMENTO
   cCodven    := VENDEDOR
   SELE 1
   SEEK cCoditencli
   cNomeemp   := SUBSTR(NOMEFANT,1,35)
   cEndereco  := SUBSTR(ENDERECO,1,35)
   cBairro    := SUBSTR(BAIRRO,1,15)
   cCidade    := SUBSTR(CIDADE,1,15)
   cUf        := SUBSTR(UF,1,2)
   cCgc       := CGC
   cIe        := SUBSTR(INSCEST,1,13)
   ??" C O M I L  -  Comercio de Milho - Fone(34) 3242-3783"
   ? "+------------------------------------------------------------------------------+"
   ? "| Pedido...: "+cPedido+space(58)+"|"
   ? "| Cliente..: "+cNomeemp+SPACE(05)+"Data....: "+TRAN(dEmissao,"@E 99/99/9999")+"      |"
*   ? "| Cliente..: "+cCoditencli+" - "+cNomeemp+" Data....: "+TRAN(dEmissao,"@E 99/99/9999")+"      |"
   ? "| Endereco.: "+cEndereco+SPACE(05)+"Bairro..: "+cBairro+" |"
   ? "| Cidade...: "+cCidade+SPACE(24)+" Uf......: "+cUf+SPACE(13)+" |"
*   ? "| CGC/CPF..: "+cCgc+SPACE(22)+"Insc.Est: "+TRAN(cIe,"@R 999.999999.9999")+SPACE(1)+"|"
*   IIF(len(cCgc)<1,'',IIF(LEN(cCGC)==14,tran(cCgc,'@R 99.999.999/9999-99'),tran(cCgc,'@R 999.999.999-99'+"    ")))
*   IF LEN(cCGC)=14
   IF LEN(ALLTRIM(cCgc))==14
      ? "| CGC/CPF..: "+tran(cCgc,"@R 99.999.999/9999-99")+SPACE(22)+"Insc.Est: "+TRAN(cIe,"@R 999.999999.9999")+SPACE(1)+"|"
   ELSE
      ? "| CGC/CPF..: "+tran(cCgc,"@R 999.999.999-99"+" ")+SPACE(22)+"Insc.Est: "+TRAN(cIe,"@R 999.999999.9999")+SPACE(1)+"|"
   ENDIF
*   ? "+-------+----------------------------+-----------+--------------+--------------+"
*   ? "| CODI. |  DESCRICAO DA MERCADORIA   | QUANTIDADE| VLR.UNITARIO | VALOR  TOTAL |"
*   ? "+-------+----------------------------+-----------+--------------+--------------+"
   ? "+------------------------------------+-----------+--------------+--------------+"
   ? "|      DESCRICAO DA MERCADORIA       | QUANTIDADE| VLR.UNITARIO | VALOR  TOTAL |"
   ? "+------------------------------------+-----------+--------------+--------------+"
   SELE 2
   nCtlin=09
   DO WHILE CODITENPED=cPedido .AND. (.NOT. EOF())
      TECLA=INKEY()
      DO CASE  
         CASE TECLA=80
            PAUSA()
         CASE TECLA=27
            CLOSE DATABASES
            TELAABER()
            nCtlin := 00
            SET DATE BRIT
            EXIT
      ENDCASE
*      cCoditenmer := SUBSTR(CODITENMER,1,26)
      cCoditenmer := CODITENMER
      nQuantidade := QUANTIDADE
      nValorunita := VALORUNITA
      nValortotal := VALORTOTAL
      SELE 4
      SEEK cCoditenmer
      cNomemer   := SUBSTR(DESCRICAO,1,34)
      SELE 2
      *
*      ? "| "+cCoditenmer+" | "+cNomemer+" | "+TRAN(nQuantidade,"@R 99,999.99")+" | "+TRAN(nValorunita,"@R 9,999,999.99")+" | "+TRAN(nValortotal,"@R 9,999,999.99")+" |"
      ? "| "+cNomemer+" | "+TRAN(nQuantidade,"@R 99,999.99")+" | "+TRAN(nValorunita,"@R 9,999,999.99")+" | "+TRAN(nValortotal,"@R 9,999,999.99")+" |"
      *
      REPLA IMPRESSO WITH "S"
      nSubValor=nSubValor+nValortotal
      nTotValor=nTotValor+nValortotal
      nCtlin := nCtlin + 1
      SKIP
   ENDDO
   IF nCtlin<24
      DO WHILE nCtlin<>24
*         ? "|       |                            |           |              |              |"
         ? "|                                    |           |              |              |"
         nCtlin := nCtlin + 1
         LOOP
      ENDDO
   ENDIF
   SELE 2
   IF nCtlin=24
      SELE 5
      SEEK cPedido
      dVencimento := VENCIMENTO
      dVenci      := VENCIMENTO
      SELE 2
      SEEK cPedido
      cTipo       := TIPO
      *
      ? "+------------------------------------+-----------+--------------+--------------+"
      IF cTipo = "C"
         SELE 5
         dVencimento := VENCIMENTO
         ? "| Data do Vencimento.: "+"CHEQUE P/ "+TRAN(dVencimento,"@E 99/99/9999")+SPACE(11)+" TOTAL....: "+TRAN(nTotValor,"@R 9,999,999.99")+" |"
      ENDIF
      IF cTipo = "A"
         dVencimento = " A V I S T A"
         ? "| Data do Vencimento.: "+dVencimento+SPACE(19)+" TOTAL....: "+TRAN(nTotValor,"@R 9,999,999.99")+" |"
      ENDIF
      IF cTipo = "N"
         SELE 5
         SEEK cPedido
         dVencimento := VENCIMENTO
         ? "| Data do Vencimento.: "+TRAN(dVencimento,"@E 99/99/9999")+SPACE(21)+" TOTAL....: "+TRAN(nTotValor,"@R 9,999,999.99")+" |"
      ENDIF
      nSubValor = 0.00
      ? "+------------------------------------------------------------------------------+"
      ? "| Recebi(emos) as mercadorias discriminadas acima       Data....:  __/__/____  |"
      ? "| Assinatura.: __________________________________                              |"
      ? "+------------------------------------------------------------------------------+"
      ?
      ?
      nCtlin=0
   ENDIF
   SET DEVICE TO SCREEN
   SELE 6
   SEEK cPedido
   REPLACE VALOR       WITH nTotValor
   LOOP
ENDDO
SET CONSOLE ON
SET PRINT OFF
SET DEVICE TO SCREEN
SET DATE BRIT
CLOSE DATABASES
RETURN

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: LX 300 + winxp

Mensagem por Itamar M. Lins Jr. »

Ola!
Eu uso assim:

Código: Selecionar todos


set printer to &arquivo
set print on
set console off

.....

set print off
set printer to
set console on

Gero um arquivo no disco porque depois eu posso visualizar ou imprimir.
Para imprimir eu uso RAW printer no caso de TEXTO PURO.

Código: Selecionar todos

*****************************
Function Imprime(cArq,cPrint)
*****************************
*
*
Local oPrn, aPrn:=GetPrinters()

if empty(aPrn)
   MsgInfo('Não há impressoras instaladas')
   return .f.
endif
If cPrint == Nil
 cPrint := GetDefaultPrinter()
EndIf

 nRet := PrintFileRaw(cPrint,cArq,'Pedido')
 if nRet < 1
    cMsg := 'Erro Imprimindo: '
   SWITCH nRet
      CASE -1
         cMsg += "Invalid parameters passed to function" ; EXIT
      CASE -2
         cMsg += "WinAPI OpenPrinter() call failed"      ; EXIT
      CASE -3
         cMsg += "WinAPI StartDocPrinter() call failed"  ; EXIT
      CASE -4
         cMsg += "WinAPI StartPagePrinter() call failed" ; EXIT
      CASE -5
         cMsg += "WinAPI malloc() of memory failed"      ; EXIT
      CASE -6
         cMsg += "Arquivo " + cArq + " não Localizado"   ; EXIT
      //DEFAULT
      //   cMsg += cFile + " PRINTED OK!!!"
      END

     MsgStop(cMsg)
 EndIf

Return .t.
Se não deseja mexer muito no código, veja se o comando "SET PRINTER TO" resolve.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

LX 300 + winxp

Mensagem por Pablo César »

Oi Wagner,

Na minha opinião, você deveria desmembrar esse módulo onde tem a questão de seleção de impressão com a função que imprime propriamente dita. Isto é, desdobre a função que apenas imprime. Isso ajudará a você comprender melhor ficando tudo separado, você não vai perder performance com isto. Lendo seu código o que pude notar como tinha dito, a impressão no mesmo laço de repetição sobre a seleção dos pedidos e no final desse laço além de ter o "loop" que é desnecessário (linha 174) você não está permitindo fechar a impressão com o SET PRINT OFF e SET DEVICE TO SCREEN. E outra coisa que eu indico para todo mundo que pretende imprimir, é criar arquivo de impressão em lugar de mandar linha a linha como fazíamos no WIN98. Experimente, crie o arquivo e depois mande para o spool de impressão. Esta prática evita o reprocessamento caso precisar mandar mais d euma via e você poderá visualizar a impressão sem precisar de reprocessar a impressão.

O quê faz a COMTEIMP() ?

Olhe eu desdobraria assim esse seu módulo de impressão:

Código: Selecionar todos

SET DATE AMERI
CLOSE DATA
SELE 1
USE EMPRESAS INDEX COEMPCOD,COEMPNOM,COEMPROT,COEMPEXC
SELE 2
USE ITENPEDI INDEX COITECOD,COITEMER,COITEEMI,COITEIMP,COITECME
SET RELA TO CODITENCLI INTO EMPRESAS
SELE 3
USE VENDEDOR INDEX COVENCOD,COVENNOM,COVENEXC
SELE 4
USE MERCADO INDEX COMERCOD,COMERDES,COMEREXC,COMERGRU
SELE 5
USE PEDIATAC INDEX COPATCOD,COPATMER,COPATEMI
SELE 6
USE RECEBER INDEX CORECCOD,CORECCLI,CORECVEN

DO WHILE .T.
   SETCOLOR(cCor1)
   @ 07,21 CLEAR TO 19,78
   nPedido = 0
   @ 13,36 SAY "Codigo do Pedido " GET nPedido PICT "99999999" VALID VE_C_EXIST(nPedido)
   READ
   IF LASTKEY()=27 .OR. nPedido=0
      SET DATE BRIT
      CLOSE DATABASES
      RETURN .F.
   ENDIF
   cPedido=STRZERO(nPedido,8,0)
   @ 13,54 SAY cPedido

   // COMTEIMP() // o que faz isto ?

   IMP_PEDIDO(cPedido)
ENDDO

FUNCTION IMP_PEDIDO(cPedido)
/*
SET DEVI TO PRIN
SET CONSOLE OFF
SET PRINT ON
*/
SET ALTERNATE TO C:PEDIDO.TXT // Criando arquivo de impress„o
SET ALTERNATE ON

nCtlin := 00
nSubValor=0.00
nTotValor=0.00

SELE 2
cCoditencli := CODITENCLI

SELE 5
SEEK cPedido
dEmissao := EMISSAO
dVencimento:= VENCIMENTO
cCodven  := VENDEDOR

SELE 1
SEEK cCoditencli
cNomeemp := SUBSTR(NOMEFANT,1,35)
cEndereco := SUBSTR(ENDERECO,1,35)
cBairro  := SUBSTR(BAIRRO,1,15)
cCidade  := SUBSTR(CIDADE,1,15)
cUf    := SUBSTR(UF,1,2)
cCgc   := CGC
cIe    := SUBSTR(INSCEST,1,13)

??" C O M I L - Comercio de Milho - Fone(34) 3242-3783"
? "+------------------------------------------------------------------------------+"
? "| Pedido...: "+cPedido+space(58)+"|"
? "| Cliente..: "+cNomeemp+SPACE(05)+"Data....: "+TRAN(dEmissao,"@E 99/99/9999")+"   |"
* ? "| Cliente..: "+cCoditencli+" - "+cNomeemp+" Data....: "+TRAN(dEmissao,"@E 99/99/9999")+"   |"
? "| Endereco.: "+cEndereco+SPACE(05)+"Bairro..: "+cBairro+" |"
? "| Cidade...: "+cCidade+SPACE(24)+" Uf......: "+cUf+SPACE(13)+" |"
* ? "| CGC/CPF..: "+cCgc+SPACE(22)+"Insc.Est: "+TRAN(cIe,"@R 999.999999.9999")+SPACE(1)+"|"
* IIF(len(cCgc)<1,'',IIF(LEN(cCGC)==14,tran(cCgc,'@R 99.999.999/9999-99'),tran(cCgc,'@R 999.999.999-99'+"  ")))
* IF LEN(cCGC)=14
IF LEN(ALLTRIM(cCgc))==14
   ? "| CGC/CPF..: "+tran(cCgc,"@R 99.999.999/9999-99")+SPACE(22)+"Insc.Est: "+TRAN(cIe,"@R 999.999999.9999")+SPACE(1)+"|"
ELSE
   ? "| CGC/CPF..: "+tran(cCgc,"@R 999.999.999-99"+" ")+SPACE(22)+"Insc.Est: "+TRAN(cIe,"@R 999.999999.9999")+SPACE(1)+"|"
ENDIF
* ? "+-------+----------------------------+-----------+--------------+--------------+"
* ? "| CODI. | DESCRICAO DA MERCADORIA | QUANTIDADE| VLR.UNITARIO | VALOR TOTAL |"
* ? "+-------+----------------------------+-----------+--------------+--------------+"
? "+------------------------------------+-----------+--------------+--------------+"
? "|   DESCRICAO DA MERCADORIA   | QUANTIDADE| VLR.UNITARIO | VALOR TOTAL |"
? "+------------------------------------+-----------+--------------+--------------+"
SELE 2
nCtlin=09
DO WHILE CODITENPED=cPedido .AND. (.NOT. EOF())
   TECLA=INKEY()
   DO CASE 
      CASE TECLA=80
           PAUSA()
      CASE TECLA=27
           CLOSE DATABASES
           TELAABER()
           nCtlin := 00
           SET DATE BRIT
           RETURN .F.
   ENDCASE
   *   cCoditenmer := SUBSTR(CODITENMER,1,26)
   cCoditenmer := CODITENMER
   nQuantidade := QUANTIDADE
   nValorunita := VALORUNITA
   nValortotal := VALORTOTAL
   SELE 4
   SEEK cCoditenmer
   cNomemer := SUBSTR(DESCRICAO,1,34)
   SELE 2

   *  ? "| "+cCoditenmer+" | "+cNomemer+" | "+TRAN(nQuantidade,"@R 99,999.99")+" | "+TRAN(nValorunita,"@R 9,999,999.99")+" | "+TRAN(nValortotal,"@R 9,999,999.99")+" |"
   ? "| "+cNomemer+" | "+TRAN(nQuantidade,"@R 99,999.99")+" | "+TRAN(nValorunita,"@R 9,999,999.99")+" | "+TRAN(nValortotal,"@R 9,999,999.99")+" |"

   REPLA IMPRESSO WITH "S"
   nSubValor=nSubValor+nValortotal
   nTotValor=nTotValor+nValortotal
   nCtlin := nCtlin + 1
   SKIP
ENDDO
IF nCtlin<24
   DO WHILE nCtlin<>24
      ? "|                  |     |       |       |"
      nCtlin := nCtlin + 1
   ENDDO
ENDIF
SELE 2
IF nCtlin=24
   SELE 5
   SEEK cPedido
   dVencimento := VENCIMENTO
   dVenci   := VENCIMENTO
   SELE 2
   SEEK cPedido
   cTipo   := TIPO

   ? "+------------------------------------+-----------+--------------+--------------+"
   IF cTipo = "C"
      SELE 5
      dVencimento := VENCIMENTO
      ? "| Data do Vencimento.: "+"CHEQUE P/ "+TRAN(dVencimento,"@E 99/99/9999")+SPACE(11)+" TOTAL....: "+TRAN(nTotValor,"@R 9,999,999.99")+" |"
   ENDIF
   IF cTipo = "A"
      dVencimento = " A V I S T A"
      ? "| Data do Vencimento.: "+dVencimento+SPACE(19)+" TOTAL....: "+TRAN(nTotValor,"@R 9,999,999.99")+" |"
   ENDIF
   IF cTipo = "N"
      SELE 5
      SEEK cPedido
      dVencimento := VENCIMENTO
      ? "| Data do Vencimento.: "+TRAN(dVencimento,"@E 99/99/9999")+SPACE(21)+" TOTAL....: "+TRAN(nTotValor,"@R 9,999,999.99")+" |"
   ENDIF
   nSubValor = 0.00
   ? "+------------------------------------------------------------------------------+"
   ? "| Recebi(emos) as mercadorias discriminadas acima   Data....: __/__/____ |"
   ? "| Assinatura.: __________________________________               |"
   ? "+------------------------------------------------------------------------------+"
   ?
   ?
   nCtlin=0
ENDIF
SET DEVICE TO SCREEN
SELE 6
SEEK cPedido
REPLACE VALOR   WITH nTotValor

/*
SET CONSOLE ON
SET PRINT OFF
SET DEVICE TO SCREEN
*/

SET ALTERNATE OFF
SET ALTERNATE TO

SET DATE BRIT
CLOSE DATABASES
COPY FILE("C:PEDIDO.TXT") TO ("LPT1")
RETURN

FUNCTION VE_C_EXIST(nPedido)
SELE 2
SEEK STRZERO(cPedido,8,0)
IF !FOUND()
   Msg("Codigo Informado nÆo existe.")
   INKEY(3)
   Limpalinha()
   RETURN .F.
ENDIF
RETURN .T.
Observe que substitui o SET DEVICE pelo SET ALTERNATE e no final imprimo na LPT1, mas você com [x]Harbour pode utilizar a função de impressão de arquivo da propria ferramenta.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

LX 300 + winxp

Mensagem por Pablo César »

Enquanto eu elaborava a minha resposta o Itamar contribuiu com a sua indicação, observe Wagner que ele postou a função de impressão de arquivo como tinha te indicado e também é indicado desdobrar as funções.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
wagnervidal
Usuário Nível 1
Usuário Nível 1
Mensagens: 27
Registrado em: 21 Out 2010 11:35
Localização: Araguari/MG

Re: LX 300 + winxp

Mensagem por wagnervidal »

Agradeço a todos que estão me ajudando ...
Vlw dimais
Pablo comtimp()

Código: Selecionar todos

FUNC COMTEIMP
*************
*
DO WHILE .T.
@ 12,33 CLEA TO 18,66
@ 14,36 SAY "Ligue a impressora, ajuste o"
@ 16,36 SAY "formulario e tecle < ENTER >"
WAIT ""
IF LASTKEY()=27
   SET CONSOLE ON
   SET DEVICE TO SCREEN
   CLOSE DATABASES
   EXIT
ENDIF
DO WHILE .T.
   IF .NOT. ISPRINTER()
      @ 14,36 SAY "A impressora nao esta ligada"
      @ 16,36 SAY "Ligue-a  e  tecle  < ENTER >"
      WAIT ""
      IF LASTKEY()=27
         SET CONSOLE ON
         SET DEVICE TO SCREEN
         CLOSE DATABASES
         RETURN
      ENDIF
   ELSE
      EXIT
   ENDIF
ENDDO
@ 14,36 SAY "                            "
@ 16,36 SAY "                            "
SET COLO TO N/W
@ 15,36 SAY " .......            ....... "
SET COLO TO *N/W
@ 15,45 SAY "IMPRIMINDO"
SET COLO TO W/N
RETURN
ENDDO
RETURN
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Re: LX 300 + winxp

Mensagem por Pablo César »

Wagner, eu acho que a função isprinter() não tem mais serventia no WINXP.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
wagnervidal
Usuário Nível 1
Usuário Nível 1
Mensagens: 27
Registrado em: 21 Out 2010 11:35
Localização: Araguari/MG

LX 300 + winxp

Mensagem por wagnervidal »

Itamar essa função sua quando eu coloco ela não consigo compilar
aparece esse erro
Microsoft Windows XP [versão 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Pessoal>CD\COMIL

C:\COMIL>CD PRG

C:\COMIL\PRG>HBMK2 COMIL.hbp
hbmk2: Processando arquivo de configuração: C:\hb20\BIN\hbmk.cfg
Harbour 2.0.0 (Rev. 13372)
Copyright (c) 1999-2010, http://www.harbour-project.org/
Compiling 'Comil.prg'...
Compiling 'COMSEROR.prg'...
Compiling 'COMCADAS.prg'...
Compiling 'COMBALCA.prg'...
Compiling 'COMPEDID.prg'...
Compiling 'COMMANUT.prg'...
Compiling 'COMTABEL.prg'...
Compiling 'COMSERVI.prg'...
Compiling 'COMRELAT.prg'...
Compiling 'comilpro.prg'...
Compiling 'COMEMPRE.prg'...
Compiling 'COMCLIEN.prg'...
Compiling 'COMVENDE.prg'...
Compiling 'COMFORNE.prg'...
Compiling 'COMPRODU.prg'...
Compiling 'COMGRUPO.prg'...
Compiling 'COMMERCA.prg'...
Compiling 'COMBANCO.prg'...
Compiling 'COMCHEQE.prg'...
Compiling 'COMCAIXA.prg'...
Compiling 'COMSERSE.prg'...
Compiling 'COMREFOR.prg'...
Compiling 'COMREDEB.prg'...
Compiling 'COMREPED.prg'...
Compiling 'COMRECOM.prg'...
Compiling 'COMREDER.prg'...
Compiling 'COMREPEP.prg'...
Compiling 'IMPPED.prg'...
Compiling 'teste.prg'...
Compiling 'COMRECOQ.prg'...
Compiling 'COMRE13S.prg'...
Compiling 'COMRECOA.prg'...
Lines 19077, Functions/Procedures 205
Generating C source output to 'Comil.c'... Done.
Comil.c:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_HWG_LASTKEY' referenced from C:\COMIL\PRG\COMIL.OBJ
Error: Unresolved external '_HB_FUN_HSTATIC' referenced from C:\COMIL\PRG\COMIL.OBJ
Error: Unresolved external '_HB_FUN_GETPRINTERS' referenced from C:\COMIL\PRG\COMIL.OBJ
Error: Unresolved external '_HB_FUN_MSGINFO' referenced from C:\COMIL\PRG\COMIL.OBJ
Error: Unresolved external '_HB_FUN_GETDEFAULTPRINTER' referenced from C:\COMIL\PRG\COMIL.OBJ
Error: Unresolved external '_HB_FUN_PRINTFILERAW' referenced from C:\COMIL\PRG\COMIL.OBJ
Error: Unresolved external '_HB_FUN_MSGSTOP' referenced from C:\COMIL\PRG\COMIL.OBJ
hbmk2: Erro: Executando linkeditor. 2
ilink32.exe @C:\DOCUME~1\Pessoal\CONFIG~1\Temp\il9bvz.lnk

C:\COMIL\PRG>
sera que esta faltando algum include
estou indo por partes .. depois vo faze igual o Pablo disse

Vlw
wagnervidal
Usuário Nível 1
Usuário Nível 1
Mensagens: 27
Registrado em: 21 Out 2010 11:35
Localização: Araguari/MG

Re: LX 300 + winxp

Mensagem por wagnervidal »

Itamar pode me ajuda com o erro da compilação em harbour.. vlw
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: LX 300 + winxp

Mensagem por Itamar M. Lins Jr. »

É que essa função HWG_LASTKEY é da Hwgui, tem ela no fonte ?
As outras creio que estejam nas HBWIN, HBXHB.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
wagnervidal
Usuário Nível 1
Usuário Nível 1
Mensagens: 27
Registrado em: 21 Out 2010 11:35
Localização: Araguari/MG

Re: LX 300 + winxp

Mensagem por wagnervidal »

Itamar obrigado pela atenção...
Converti o programa para harbour e ele ainda continua em modo texto, não converti ele para grafico ainda.. apenas inseri seu exemplo, de pegar o arquivo em .txt e jogar para a impressora.

Código: Selecionar todos


***************************************************************
** COMREPEP.PRG                                              **
** SISTEMA DE CONTROLE ADMINISTRATIVO - RELATORIO DE EMPRESAS**
** 09.08.91                                                  **
***************************************************************
*
SET DATE AMERI
CLOSE DATA
SELE 1
USE EMPRESAS INDEX COEMPCOD,COEMPNOM,COEMPROT,COEMPEXC
SELE 2
USE ITENPEDI INDEX COITECOD,COITEMER,COITEEMI,COITEIMP,COITECME
SET RELA TO CODITENCLI INTO EMPRESAS
SELE 3
USE VENDEDOR INDEX COVENCOD,COVENNOM,COVENEXC
SELE 4
USE MERCADO  INDEX COMERCOD,COMERDES,COMEREXC,COMERGRU
SELE 5
USE PEDIATAC INDEX COPATCOD,COPATMER,COPATEMI
SELE 6
USE RECEBER  INDEX CORECCOD,CORECCLI,CORECVEN
*
nCtlin := 00
DO WHILE .T.
   SELE 2
   SETCOLOR(cCor1)
   @ 07,21 CLEAR TO 19,78
   cPedido = SPACE(08)
   @ 13,36 SAY "Codigo do Pedido " GET cPedido PICT "99999999"
   READ
   IF LASTKEY()=27
      nCtlin := 00
      SET DATE BRIT
      EXIT
   ENDIF
   cPedido=STRZERO(VAL(cPedido),8,0)
   @ 13,54 SAY cPedido
   SEEK cPedido
   IF EOF()
      Msg("Codigo Informado nÆo existe.")
      INKEY(3)
      Limpalinha()
      IF nCtlin>=30
         nCtlin=33
      ELSE
         nCtlin=00
      ENDIF
      LOOP
   ENDIF         
   cCoditencli := CODITENCLI 
   COMTEIMP()
   IF LASTKEY()=27
      nCtlin := 00
      SET DATE BRIT
      RETURN
   ENDIF
   SET PRIN TO C:PEDIDO.TXT
*   SET DEVI TO PRIN
   SET CONSOLE OFF
   SET PRINT ON
   *
   nSubValor=0.00
   nTotValor=0.00
   *
   SELE 5
   SEEK cPedido
   dEmissao   := EMISSAO
   dVencimento:= VENCIMENTO
   cCodven    := VENDEDOR
   SELE 1
   SEEK cCoditencli
   cNomeemp   := SUBSTR(NOMEFANT,1,35)
   cEndereco  := SUBSTR(ENDERECO,1,35)
   cBairro    := SUBSTR(BAIRRO,1,15)
   cCidade    := SUBSTR(CIDADE,1,15)
   cUf        := SUBSTR(UF,1,2)
   cCgc       := CGC
   cIe        := SUBSTR(INSCEST,1,13)
   ??" C O M I L  -  Comercio de Milho - Fone(34) 3242-3783"
   ? "+------------------------------------------------------------------------------+"
   ? "| Pedido...: "+cPedido+space(58)+"|"
   ? "| Cliente..: "+cNomeemp+SPACE(05)+"Data....: "+TRAN(dEmissao,"@E 99/99/9999")+"      |"
*   ? "| Cliente..: "+cCoditencli+" - "+cNomeemp+" Data....: "+TRAN(dEmissao,"@E 99/99/9999")+"      |"
   ? "| Endereco.: "+cEndereco+SPACE(05)+"Bairro..: "+cBairro+" |"
   ? "| Cidade...: "+cCidade+SPACE(24)+" Uf......: "+cUf+SPACE(13)+" |"
*   ? "| CGC/CPF..: "+cCgc+SPACE(22)+"Insc.Est: "+TRAN(cIe,"@R 999.999999.9999")+SPACE(1)+"|"
*   IIF(len(cCgc)<1,'',IIF(LEN(cCGC)==14,tran(cCgc,'@R 99.999.999/9999-99'),tran(cCgc,'@R 999.999.999-99'+"    ")))
*   IF LEN(cCGC)=14
   IF LEN(ALLTRIM(cCgc))==14
      ? "| CGC/CPF..: "+tran(cCgc,"@R 99.999.999/9999-99")+SPACE(22)+"Insc.Est: "+TRAN(cIe,"@R 999.999999.9999")+SPACE(1)+"|"
   ELSE
      ? "| CGC/CPF..: "+tran(cCgc,"@R 999.999.999-99"+" ")+SPACE(22)+"Insc.Est: "+TRAN(cIe,"@R 999.999999.9999")+SPACE(1)+"|"
   ENDIF
*   ? "+-------+----------------------------+-----------+--------------+--------------+"
*   ? "| CODI. |  DESCRICAO DA MERCADORIA   | QUANTIDADE| VLR.UNITARIO | VALOR  TOTAL |"
*   ? "+-------+----------------------------+-----------+--------------+--------------+"
   ? "+------------------------------------+-----------+--------------+--------------+"
   ? "|      DESCRICAO DA MERCADORIA       | QUANTIDADE| VLR.UNITARIO | VALOR  TOTAL |"
   ? "+------------------------------------+-----------+--------------+--------------+"
   SELE 2
   nCtlin=09
   DO WHILE CODITENPED=cPedido .AND. (.NOT. EOF())
      TECLA=INKEY()
      DO CASE  
         CASE TECLA=80
            PAUSA()
         CASE TECLA=27
            CLOSE DATABASES
            TELAABER()
            nCtlin := 00
            SET DATE BRIT
            EXIT
      ENDCASE
*      cCoditenmer := SUBSTR(CODITENMER,1,26)
      cCoditenmer := CODITENMER
      nQuantidade := QUANTIDADE
      nValorunita := VALORUNITA
      nValortotal := VALORTOTAL
      SELE 4
      SEEK cCoditenmer
      cNomemer   := SUBSTR(DESCRICAO,1,34)
      SELE 2
      *
*      ? "| "+cCoditenmer+" | "+cNomemer+" | "+TRAN(nQuantidade,"@R 99,999.99")+" | "+TRAN(nValorunita,"@R 9,999,999.99")+" | "+TRAN(nValortotal,"@R 9,999,999.99")+" |"
      ? "| "+cNomemer+" | "+TRAN(nQuantidade,"@R 99,999.99")+" | "+TRAN(nValorunita,"@R 9,999,999.99")+" | "+TRAN(nValortotal,"@R 9,999,999.99")+" |"
      *
      REPLA IMPRESSO WITH "S"
      nSubValor=nSubValor+nValortotal
      nTotValor=nTotValor+nValortotal
      nCtlin := nCtlin + 1
      SKIP
   ENDDO
   IF nCtlin<24
      DO WHILE nCtlin<>24
*         ? "|       |                            |           |              |              |"
         ? "|                                    |           |              |              |"
         nCtlin := nCtlin + 1
         LOOP
      ENDDO
   ENDIF
   SELE 2
   IF nCtlin=24
      SELE 5
      SEEK cPedido
      dVencimento := VENCIMENTO
      dVenci      := VENCIMENTO
      SELE 2
      SEEK cPedido
      cTipo       := TIPO
      *
      ? "+------------------------------------+-----------+--------------+--------------+"
      IF cTipo = "C"
         SELE 5
         dVencimento := VENCIMENTO
         ? "| Data do Vencimento.: "+"CHEQUE P/ "+TRAN(dVencimento,"@E 99/99/9999")+SPACE(11)+" TOTAL....: "+TRAN(nTotValor,"@R 9,999,999.99")+" |"
      ENDIF
      IF cTipo = "A"
         dVencimento = " A V I S T A"
         ? "| Data do Vencimento.: "+dVencimento+SPACE(19)+" TOTAL....: "+TRAN(nTotValor,"@R 9,999,999.99")+" |"
      ENDIF
      IF cTipo = "N"
         SELE 5
         SEEK cPedido
         dVencimento := VENCIMENTO
         ? "| Data do Vencimento.: "+TRAN(dVencimento,"@E 99/99/9999")+SPACE(21)+" TOTAL....: "+TRAN(nTotValor,"@R 9,999,999.99")+" |"
      ENDIF
      nSubValor = 0.00
      ? "+------------------------------------------------------------------------------+"
      ? "| Recebi(emos) as mercadorias discriminadas acima       Data....:  __/__/____  |"
      ? "| Assinatura.: __________________________________                              |"
      ? "+------------------------------------------------------------------------------+"
      ?
      ?
      nCtlin=0
   ENDIF
   SET DEVICE TO SCREEN
   SET PRINT TO
   SELE 6
   SEEK cPedido
   REPLACE VALOR       WITH nTotValor
   LOOP
ENDDO
IMPRIME()
SET CONSOLE ON
SET PRINT OFF
SET PRINT TO
SET DEVICE TO SCREEN
SET DATE BRIT
CLOSE DATABASES
RETURN

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: LX 300 + winxp

Mensagem por Itamar M. Lins Jr. »

Então, link a HBWIN que é a lib que tem o código (funções) da impressora no windows.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: LX 300 + winxp

Mensagem por Itamar M. Lins Jr. »

Veja que usando o HBMK2 podemos ter um arquivo padrão para compilar.

Código: Selecionar todos

{win}incpaths=c:\hwgui\include;c:\letodb\include
{win}libpaths=c:\hwgui\lib
{win}libpaths=c:\letodb\lib
{win}libpaths=c:\blat\blat262\full
{win}gt=gtgui

{win}libs=hwgui hbxml procmisc hwg_qhtm
{win}libs=hbwin hbct hbnf gtwvg 
{win}libs=rddleto hbxpp
{win}libs=xhb hbblat blat
Esse arquivo de extensão HBC, é lido automaticamente pelo HBMK2, pode ter qualquer nome.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
wagnervidal
Usuário Nível 1
Usuário Nível 1
Mensagens: 27
Registrado em: 21 Out 2010 11:35
Localização: Araguari/MG

Re: LX 300 + winxp

Mensagem por wagnervidal »

acho que vc nao esta entendendo so gostaria de sabe se devo acrescenta mais algo em relação a isso

#Include "guilib.ch"
#Include "inkey.ch"
#Include "windows.ch"
#include "hbcompat.ch"
#include "hbwin.ch"


vlw
wagnervidal
Usuário Nível 1
Usuário Nível 1
Mensagens: 27
Registrado em: 21 Out 2010 11:35
Localização: Araguari/MG

Re: LX 300 + winxp

Mensagem por wagnervidal »

agora eu consegui compilar estava faltando eu coloca as lib hwgui e hwwin no arquivo .hbp, so que o problema é que o programa não roda em modo grafico quando eu acrecento essas lib ele apenas executa mais não abre. O que eu faço?
Vlw
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: LX 300 + winxp

Mensagem por Itamar M. Lins Jr. »

Ola!
Agora ficou mais fácil.

Código: Selecionar todos

ANNOUNCE HB_GTSYS
REQUEST HB_GT_WVG_DEFAULT
REQUEST HB_GT_WVG
REQUEST DBFCDX,DBFFPT,DBFDBT,LETO
REQUEST HB_LANG_PT,HB_CODEPAGE_PTISO,HB_CODEPAGE_PT850
REQUEST HB_GT_GUI
#include "common.ch"
#include "rddleto.ch"
#include "inkey.ch"
#include "setcurs.ch"
#include "dbinfo.ch"
#include "wvtwin.ch"
#include "hbgtinfo.ch"
#include "hbgtwvg.ch"
#include "wvgparts.ch"

****************
Function Main
***************
*
*
HB_CDPSELECT([PTISO])
hb_langselect([PT])

   hb_gtInfo( HB_GTI_ICONFILE, "imagens\sciwin.ico" )
   hb_gtInfo( HB_GTI_WINTITLE, "XYZ - SISTEMA XYZ" )
   Hb_GtInfo( HB_GTI_SELECTCOPY,.T.)
   Hb_GtInfo( HB_GTI_RESIZABLE, .T. )
   HB_GTINFO( HB_GTI_CLOSABLE, .T. )
   HB_GTINFO( HB_GTI_RESIZABLE, .T. )

   HB_GTINFO( HB_GTI_CODEPAGE, 850) // 255 )

   Hb_GTInfo(HB_GTI_MOUSESTATUS, 1 )

nRows := HB_GTINFO( HB_GTI_DESKTOPROWS )
nCols := HB_GTINFO( HB_GTI_DESKTOPCOLS )
//msginfo(str(nRows))
//msginfo(str(nCols))

set epoch to 1960
set date to brit
setcancel(.f.)
hb_gtInfo( HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_MAXIMIZED ) 

SetarVideo()
... //seu código aqui !!!

*******************
Function SetarVideo
*******************
*
*


   screenWIDTH:= HB_GTINFO( HB_GTI_SCREENWIDTH, HB_GTINFO(HB_GTI_DESKTOPWIDTH ) )

   screenHEIGHT := HB_GTINFO( HB_GTI_SCREENHEIGHT, HB_GTINFO(HB_GTI_DESKTOPHEIGHT ) -50 )

   HB_GTInfo(HB_GTI_FONTNAME, "Courier New")

   HB_GTInfo(HB_GTI_FONTQUALITY,HB_GTI_FONTQ_HIGH )


   if screenWidth >=  1920

    Hb_GtInfo( HB_GTI_FONTWIDTH, 21  )
    HB_GTInfo(HB_GTI_FONTSIZE, 40)

   ELSEIF screenWidth >= 1600               // 1280 *960

    Hb_GtInfo( HB_GTI_FONTWIDTH, 18  )
    HB_GTInfo(HB_GTI_FONTSIZE, 32)

   elseif screenWidth >= 1280               // 1280 *960

    Hb_GtInfo( HB_GTI_FONTWIDTH, 13  )
    HB_GTInfo(HB_GTI_FONTSIZE, 20)                     // 15*80=1200  36*25=900

   elseif screenWidth >= 1024           // 1024*760

    Hb_GtInfo( HB_GTI_FONTWIDTH, 12.5  )
    HB_GTInfo(HB_GTI_FONTSIZE, 20)

   elseif screenWidth >= 800

    Hb_GtInfo( HB_GTI_FONTWIDTH, 10  )
    HB_GTInfo(HB_GTI_FONTSIZE, 18)

   ELSE

      Hb_GtInfo( HB_GTI_FONTWIDTH, 15  )
      HB_GTInfo(HB_GTI_FONTSIZE, 35)

   ENDIF


return
Faz tempo que não mexo nesse código só copiei e colei.

A vantagem dele é que voce pode usar as telas da HWGUI junto com a WVG.
Por exemplo, voce pode chamar MSGINFO('OLA',"Atenção !") que aparece uma tela totalmente "for windows"

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Responder