Página 45 de 51

WAPI v1.03 - Funções da API do Windows

Enviado: 15 Set 2008 15:57
por Pablo César
time9 escreveu:01. Neste programa uso os PCL para inicializar as impressoras Matricial ou Jato de tinta, a wapi dispensa este uso?
Os comando de impressão, são necessários para formatação do modo de impressão e são inerentes à impressora. A função PRINTFILE() da WAPI como o switch -PRINT do WAPI.EXE colocam o conteúdo do arquivo de impressão na fila de impressão (ou spooler) e consequente impressão.
time9 escreveu:02. A Wapi reconhece qualquer impressora local em lpt1 (não preciso mais inicializar cada uma) ?
A função PRINTFILE() mandará para qualquer impressora instalada naquele PC. Você pode mandar para o default (padrão) ou selecionar pelo nome da impressora (conforme está instalada no seu Windows). A Wapi possue outra função que devolve os nomes da impressoras que estão instaladas através do GETPRINTERS() e atribui a um array.
time9 escreveu:03. Para compilar com blinker só preciso copiar para o clipper5\lib a wapi.lib ou também os .h e .ch para clipper5\include, etc. enfim quais os arquivos que devo compilar junto com meu programa ?
Dependendo o que você exige da WAPI.LIB você apenas irá precisar linkar com o BLINKER (por exemplo) a WAPI.LIB e a CT.LIB (da CA-Tools), exemplo: BLINKER FI <seu_programa> LIB WAPI,CT e deixar o WAPI.EXE na pasta onde irá executar seu programa, pois a WAPI.LIB necessita do WPAI.EXE no diretório corrente ou no lugar predefinido pelo path.
time9 escreveu:04. Entendi que sempre devo gerar meu relatório em arquivo texto para depois imprimir. É isso mesmo?
Sim, normal como você faria com COPY FILE("arquivo_texto") TO ("LPT1")
time9 escreveu:05. Qual a sintaxe para imprimir com a wapi?
Sugiro você ler o README.TXT que está no pacote da WAPI. A sintaxe é:
PrintFile(cPrtName,cRptFile[,cRptTitle[,lPaged[,cPages[,lPrintAll[,lEven[,lOdd[,lReverse[,nCount[,lGroup]]]]]]]]]) -> logic
Infileira no spooler do Windows o conteúdio do arquivo <cRptFile>, que o apresenta sob o
título <cRptTitle>. Este será impresso na impressora de nome <cPrtName> (espaços são
permitidos). O resultado será TRUE, se o empilhamento for bem sucedido. Caso contrário,
FALSE, sendo o código do erro recuperável pela função WAPIError().
Se o título do relatório for omitido, será utilizado "clipper.report@DD/MM/AAAA,hh:mm:ss",
onde DD=dia, MM=mês, AAAA=ano, hh=horas, mm=minutos e ss=segundos.
A impressão será no modo RAW (crú), sem que haja qualquer modificação. O flag opcional
<lPaged>, se TRUE (default=FALSE), indica que cada página será identificada pela seqüência
de valores decimais 02, 11 e 03 (STX, VT e ETX, conforme a tabela ASCII). Obviamente, essa
tag será eliminada da impressão. Se <lPaged> for FALSE, não será feita qualquer referência
a números de páginas e todos os demais parâmetros perderão o sentido e serão ignorados, a
exceção de <nCount>.
Uma lista de números de páginas (mesmo que repetidos) poderá ser informada em <cPages>,
separados por vírgulas e em qualquer ordem (serão ordenados). Exemplo: "1,2,3". Seqüências
poderão ser informadas de forma reduzida, apenas com seus números inicial e final no
formato "i-f". Exemplo: "3-8" fará imprimir todas as páginas do número 3 a 8 (inclusive).
Um (e apenas um) desses valores poderá ser omitido. Se "i" for omitido, será substituído
por 1. Sendo omitido "f", será usado o número da última página encontrada. As duas formas
poderão ser usadas em conjunto.
O flag opcional <lPrintAll>, se TRUE (default), selecionará para impressão todas as
páginas. Os flags <lEven> e <lOdd>, também opcionais, se TRUE (ambos com o defaul FALSE),
selecionarão apenas as páginas pares ou ímpares, respectivamente.
O flag <lReverse> é opcional e, se informado TRUE (default=FALSE), fará a impressão das
páginas selecionadas em ordem inversa.
O parâmetro <nCount> permite definir uma quantidade de cópias (default=1) a imprimir.
O flag <lGroup>, se TRUE (default) e sendo <nCount> maior que 1, fará as páginas serem
impressas em sua seqüência natural. Exemplo: "1,2,3,1,2,3". Se for FALSE, as páginas de
números iguais serão impressas contíguas. Exemplo: "1,1,2,2,3,3".
Espero ter lhe ajudado.

Re: WAPI v1.03 - Funções da API do Windows

Enviado: 15 Set 2008 16:42
por Tim9
Muito obrigado Pablo, ajudou e muito, mas só fiquei triste pela limitação de ter que instalar o .exe no cliente e nem todos permitem.

Mas a contribuilçao do Buzinello é sensacional. Parabéns a ele pela iniciativa e trabalho e a vc pela presteza dos esclarecimentos necessários e suficientes.

Quero agradecer a todos que colaboram, aos moderadores e ao Toledo.
Não quero ser injusto e nem ingrato

Obrigado a este maravilhoso forum.

Valeu,

Luz e Paz!

Re: WAPI v1.03 - Funções da API do Windows

Enviado: 20 Set 2008 15:56
por Tim9
Tenho 2 erros na compilação, onde estou errando?
Estou fazendo assim:
------------------------------------------------------------------------------------
IMPLEMENTANDO A WAPI:
1. COPIEI A WAPI.LIB PARA C:\CLIPPER5\LIB
2, COPIEI O WAPI.EXE PARA O DIRETORIO DO MEU EXECUTÁVEL.
----------------------------------------------------------------------------------
INICIO DO PRG:
SET PRINTER TO REL.TXT
SET DEVI TO PRINTER
-------------------------------
FIM DO PRG:
SET PRINTER TO
SET DEVI TO SCREEN
PRINTFILE(LPT1;REL.TXT;"VENDAS";RESULTA.TXT)
-------------------------------
LNK:
LIB CTP, VL2, WAPI
--------------------------------
COMPILANDO:
clipper REL_VEN.PRG /m /n
282K available
Compiling REL_VEN.PRG
REL_VEN.PRG(260) Error C2002 Incomplete statement or unbalanced delimiters
REL_VEN.PRG(260) Error C2001 Syntax error: '.'
2 errors

No code generated
-------------------------------------
Aguardo e antecipo meus agradecimentos pela ajuda que por certo virá.

Re: WAPI v1.03 - Funções da API do Windows

Enviado: 20 Set 2008 17:31
por Maligno
PRINTFILE(LPT1;REL.TXT;"VENDAS";RESULTA.TXT)
Os argumentos de uma função são separados por vírgulas. Aproveite e dê uma no README do ZIP e note que esta função tem 11 argumentos em uma ordem específica. Aliás, o primeiro argumento é o nome da porta. Ou seja, é caractere.

WAPI v1.03 - Funções da API do Windows

Enviado: 22 Set 2008 09:46
por Pablo César
REL_VEN.PRG(260) Error C2002 Incomplete statement or unbalanced delimiters
REL_VEN.PRG(260) Error C2001 Syntax error: '.'
Tim9 (desconheço seu nome), pelo que me parece você está tendo algum erro de falta ou de sobra de aspas na linha 260 do seu código. Se não achar o erro poste para nós um trecho (pouco antes e pouco depois da linha 260) do seu código do REL_VEN.PRG

Aproveitando uma pergunta relacionado ao mesmo tema, Maligno. Caso queiramos utilizar o -PRINT: diretamente da linha de comando, isto é: através do WAPI.EXE. Digamos por razão de estarmos utilizando um arquivo BATCH (ja sabemos que sua indicação é utilizar em forma de LIB através do PRINTFILE(), por neste tem todo um tratamento sobre sua parametrização) mas digamos que é assim que queremos utilizar. A sintaxe segundo o WAPI.C do switch -PRINT é: -PRINT:<printer>;<report>;<title>;<paged>;<pages>;<reverse>;<count>;<group>;<resultFile>

É obrigatório informar TODOS os parâmetros deste switch ? Nesse caso quais são os parâmetros obrigatórios para enfileirar no spooler ?

Re: WAPI v1.03 - Funções da API do Windows

Enviado: 22 Set 2008 10:12
por Maligno
Se não achar o erro poste para nós um trecho
Já indiquei o erro pro colega. Observe como ele montou a lista de argumentos da chamada da função.
É obrigatório informar TODOS os parâmetros deste switch ?
Sim, conforme disposto no help contido no WAPI.C: "OBS1: Todos os parâmetros são obrigatórios."

WAPI v1.03 - Funções da API do Windows

Enviado: 22 Set 2008 10:27
por Pablo César
Já indiquei o erro pro colega.
Sim isso ja observei Maligno. O que eu me referia ao erro em si, pois mesmo que a sintaxe da chamada de função esteja incorreta (no seu aplicativo), mesmo assim não seria motivo para estar dando esse tipo de erro. Apenas quis complementar a detecção do erro na compilação.
Pablo César escreveu:É obrigatório informar TODOS os parâmetros deste switch ?
Maligno escreveu:Sim, conforme disposto no help contido no WAPI.C: OBS1: Todos os parâmetros são obrigatórios.
É uma pena para mim, que por causa da novas implementações (sobre impressão seletiva) venha a dificultar o uso do switch -PRINT. Digo isto, porque antes não era assim e foi também por esta razão que eu tinha te pedido para desvincular as funções de impressão seletiva. No entanto, eu entendí bem o seu motivo de estar tudo no mesmo switch (apesar de eu ainda discordar da vinculação). Mas repito, não tem problema ! Se o comandante diz que tem que ser assim... faremos assim então. Eu apenas ressaltei para que fique de forma mais esclarecedora quando a esta função (soa como crítica, mas sem distinção alguma). Ruim seria não ter opção alguma, certo ?

Enviado: 22 Set 2008 10:39
por Maligno
pois mesmo que a sintaxe da chamada de função esteja incorreta (no seu aplicativo), mesmo assim não seria motivo para estar dando esse tipo de erro.
Separar os argumentos de uma função com ponto-e-vírgula dá esse mesmo tipo de erro. Se puder, faça um teste e verá.
por causa da novas implementações (sobre impressão seletiva) venha a dificultar o uso do switch -PRINT.
Também por esse motivo sempre incentivei o uso da função. Tomei o cuidado de manter a lista de argumentos compatível entre as versões. Quem usou a função desde o início não teve esse problema de compatibilidade. Aliás, em todos os casos usar a biblioteca é muito melhor que usar o WAPI.EXE diretamente. Só o conforto já justifica o uso.

WAPI v1.03 - Funções da API do Windows

Enviado: 22 Set 2008 12:18
por Pablo César
Separar os argumentos de uma função com ponto-e-vírgula dá esse mesmo tipo de erro.
Tem toda razão colega, me desculpe !. Agora percebo que o que você denotava era os ponto e vírgulasem lugar de vírgula para separar os parâmetros. Perdão, errei na interpretação.

Re: WAPI v1.03 - Funções da API do Windows

Enviado: 02 Out 2008 11:39
por Tim9
Maligno e Pablo, muito obrigado pela atenção. Troquei os "ponto-e-vírgula" por "vírgula" e o erro persistiu, então diante da minha "leiguice" ficou muito difícil a utilização da Wapi, então busquei outra solução mais fácil e rápida.

E para os leigos como eu, foi assim como resolví o meu problema de impressão com o clipper e o Windows XP e com a vantagem que imprime em matricial, jato de tinta, laser e usb .

Primeiro verifiquei que os softwares disponíveis para impressão com o clipper, tipo, USB, WINPRIN, DOSPRIN, WAPI e outros exigem que seja gerado previamente um rel.txt ou rel.pr ou rel.prn.

Já que isso é necessário, então gero um rel.txt e abro o worpad.exe que me dá chance de escolher qualquer impressora através do seu gerenciador de impressão.

O comando que usei é aquele simples:

SWPRUNCMD("RUN /C START WORDPAD.EXE REL.TXT")

Pra mim satisfaz plenamente as minhas necessidades.

Volto a agradecer a todos e em particular ao grande mestre Malígno e ao atencioso Pablo Cesar.

A propósito o meu apelido na vida real é Tim e meu nome é Olynthes.

Um grande abraço a todos.

Tim.

Re: WAPI v1.03 - Funções da API do Windows

Enviado: 02 Out 2008 11:55
por Maligno
ficou muito difícil a utilização da Wapi
Se você quiser nos mostrar seu código de impressão e nos descrever exatamente como acontece o erro, podemos tentar ajudá-lo a resolver essa questão.

Re: WAPI v1.03 - Funções da API do Windows

Enviado: 06 Out 2008 11:43
por Tim9
Maligno mais uma vez obrigado, não me canso de agradecer a você e a todos deste maravilhoso forum, pois é aqui que algumas vezes dei a minha modesta contribuição e muitas vezes obtive ajuda imensurável.

Vou deixar pra tentar a Wapi em outra ocasião, pois já não tenho mais o código de impressão com a utilização da Wapi, uma vez que encontrei outra solução.

Valeu e obrigado.

Re: WAPI v1.03 - Funções da API do Windows

Enviado: 06 Out 2008 14:09
por Maligno
Se uma outra forma resolvou o seu problema, já fico contente. Quando quiser tentar a WAPI novamente e tiver alguma dúvida, é só dizer. :)

Re: WAPI v1.03 - Funções da API do Windows

Enviado: 06 Out 2008 19:07
por Tim9
Valeu Maligno.

Permita-me fazer uma correção no comando que utilizei, o correto é:

SWPRUNCMD("CMD C\START WORDPAD.EXE REL.TXT", 0, "", "")

Mais uma vez obrigado.

Re: WAPI v1.03 - Funções da API do Windows

Enviado: 04 Nov 2008 20:36
por edegar_metodo
amigo Tim9,
eu uso do jeito simples
wordpad /p recibo.rtf (ja esta formatado para rtf),
mas imprime apenas na impressora padrão, da forma como vc utiliza, temos outros parametros, sera que eles permitem a impressao em outra impressora que nao seja a padrao?

agora ao amigo maligno:
como disse anteriormente ja tenho o arquivo formatado para .rtf (lembra-se...rs) a função WAPI permite a impressao deste arquivo de uma forma direta (acredito que funciona perfeito com arquivos de texto..certo?) ou a funcao win32prn pode resolver o problema?
ou deveria esquecer a formatacao do .rtf e voltar a usar os comandos de impressao da epson?
outra pergunta:
tenho notado nos varios topicos que andei lendo nos ultimos dias, que existem algumas solucoes para a impressao usb, onde dizem que praticamente nao mudam quase nada no programa e imprime beleza.. ai vem a pergunta: eu uso em meus relatorios, expandido, condensado, italico, negrito, (isto no dos) agora no windows a letra tam 12 cabem 79 caracteres e nao 80, a tam 10 cabem 94 e nao 96, a tam 7 135 e nao 136 ....como disse em meus relatorios uso o tamanho total das colunas e embora perdi umas colunas ganhei algumas linhas...(ex. um pedido de venda feito em formulario razao que cabem no dos 12 itens no windows cabem 18..rs) a lista de precos (que imprimo em condensando....) caiu pela 60%,, como eles conseguiram ajustar seus programas com pouco trabalho....( nao vale dizer que usaram letras menores e deixaram os espacos sobrando a direita..rs)

Caso algum outro amigo tenha uma ideia estou no aguardo.

A todos mais uma vez obrigado

Edegar