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.