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

Fórum sobre ferramentas de apoio à programação (Clipper/[x]Harbour)

Moderador: Moderadores

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á

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

Mensagem 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.
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
Tim9
Usuário Nível 3
Usuário Nível 3
Mensagens: 154
Registrado em: 14 Ago 2003 15:18
Localização: Ribeirão Preto
Contato:

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

Mensagem 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!
Até Breve!
Luz e Paz!
Tim9
------------------------------------------
olynthes@gmail.com
** Somos livres para escolher, mas prisioneiros das conseqüências **
------------------------------------------
Uso Clipper 5.2e, Blinker 7.0, Prwin 1.0 BFNTX migrando p/ xHarbour e Hwgui Dbfcdx
Avatar do usuário
Tim9
Usuário Nível 3
Usuário Nível 3
Mensagens: 154
Registrado em: 14 Ago 2003 15:18
Localização: Ribeirão Preto
Contato:

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

Mensagem 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á.
Até Breve!
Luz e Paz!
Tim9
------------------------------------------
olynthes@gmail.com
** Somos livres para escolher, mas prisioneiros das conseqüências **
------------------------------------------
Uso Clipper 5.2e, Blinker 7.0, Prwin 1.0 BFNTX migrando p/ xHarbour e Hwgui Dbfcdx
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

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

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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á

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

Mensagem 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 ?
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
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

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

Mensagem 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."
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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á

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

Mensagem 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 ?
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
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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á

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

Mensagem 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.
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
Tim9
Usuário Nível 3
Usuário Nível 3
Mensagens: 154
Registrado em: 14 Ago 2003 15:18
Localização: Ribeirão Preto
Contato:

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

Mensagem 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.
Até Breve!
Luz e Paz!
Tim9
------------------------------------------
olynthes@gmail.com
** Somos livres para escolher, mas prisioneiros das conseqüências **
------------------------------------------
Uso Clipper 5.2e, Blinker 7.0, Prwin 1.0 BFNTX migrando p/ xHarbour e Hwgui Dbfcdx
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

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

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Tim9
Usuário Nível 3
Usuário Nível 3
Mensagens: 154
Registrado em: 14 Ago 2003 15:18
Localização: Ribeirão Preto
Contato:

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

Mensagem 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.
Até Breve!
Luz e Paz!
Tim9
------------------------------------------
olynthes@gmail.com
** Somos livres para escolher, mas prisioneiros das conseqüências **
------------------------------------------
Uso Clipper 5.2e, Blinker 7.0, Prwin 1.0 BFNTX migrando p/ xHarbour e Hwgui Dbfcdx
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

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

Mensagem 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. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Tim9
Usuário Nível 3
Usuário Nível 3
Mensagens: 154
Registrado em: 14 Ago 2003 15:18
Localização: Ribeirão Preto
Contato:

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

Mensagem 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.
Até Breve!
Luz e Paz!
Tim9
------------------------------------------
olynthes@gmail.com
** Somos livres para escolher, mas prisioneiros das conseqüências **
------------------------------------------
Uso Clipper 5.2e, Blinker 7.0, Prwin 1.0 BFNTX migrando p/ xHarbour e Hwgui Dbfcdx
edegar_metodo
Usuário Nível 1
Usuário Nível 1
Mensagens: 40
Registrado em: 19 Ago 2008 18:29
Localização: Colorado - Pr

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

Mensagem 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
Responder