Listagens de Impressoras
Enviado: 02 Mai 2015 12:54
Esse assunto é continuação de um outro tópico, mas conforme orientação do "PC Toledo", abri esse outro para não dar confusão.
Através da ajuda de vocês já caminhei bastante nessa minha luta para fazer a conversão. Passei a noite em claro e consegui resolver vários probleminhas, só que agora caí em outra situação: No velho Clipper, o mesmo captava todas as impressoras da rede, porém no Harbour está mostrando uma listagem que eu desconheço. Talvez os colegas entendam melhor o que está acontecendo(Num faço a melhor ideia do que é isso). Eu confesso a vocês que não tenho um grande domínio de programação dessa linguagem. Por isso conto muito com a ajuda desse fórum para resolver esses probleminhas. Como as imagens fala melhor do que 1000 palavras, resolvi colocar as duas imagens:
Feito no CLIPPER....Está perfeito do jeito que eu quero.

Feito no Harbour....Listagem sem sentido.

Código:
Por favor me ajudem...só está faltando isso para finalizar o mesmo..
Josmar
Através da ajuda de vocês já caminhei bastante nessa minha luta para fazer a conversão. Passei a noite em claro e consegui resolver vários probleminhas, só que agora caí em outra situação: No velho Clipper, o mesmo captava todas as impressoras da rede, porém no Harbour está mostrando uma listagem que eu desconheço. Talvez os colegas entendam melhor o que está acontecendo(Num faço a melhor ideia do que é isso). Eu confesso a vocês que não tenho um grande domínio de programação dessa linguagem. Por isso conto muito com a ajuda desse fórum para resolver esses probleminhas. Como as imagens fala melhor do que 1000 palavras, resolvi colocar as duas imagens:
Feito no CLIPPER....Está perfeito do jeito que eu quero.

Feito no Harbour....Listagem sem sentido.

Código:
Código: Selecionar todos
FUNCTION FUN_IMP1
DO CASE
CASE LASTKEY()=27
RETURN 0
CASE LASTKEY()=-1
VSTRING=SPACE(78)
SET CURSOR ON
@ 24,11 SAY "Procurar por: "
@ 24,25 GET VSTRING PICT "@S44"
READ
SET CURSOR OFF
IF !LASTKEY()=27
IF !EMPTY(VSTRING)
LOCATE FOR UPPER(ALLTRIM(VSTRING)) $ &(VINDEX)
IF FOUND()
FOR I=1 TO FCOUNT()
IF ALLTRIM(VSTRING) $ FIELDGET(I)
KEYBOARD CHR(26)+REPLICATE(CHR(4),I-1)
EXIT
ENDIF
NEXT
ENDIF
ENDIF
ENDIF
CASE LASTKEY()=-2 .AND. VALTYPE(VSTRING)="C"
SKIP
LOCATE REST FOR ALLTRIM(VSTRING) $ &(VINDEX)
IF FOUND()
FOR I=1 TO FCOUNT()
IF ALLTRIM(VSTRING) $ FIELDGET(I)
KEYBOARD CHR(26)+REPLICATE(CHR(4),I-1)
EXIT
ENDIF
NEXT
ELSE
KEYBOARD CHR(0)
ENDIF
CASE LASTKEY()=-5 // F6
FICA:=.T.
DO WHILE FICA=.T.
nVias:=1
cTela2:=SAVESCREEN(20,33,23,48)
GWEXPLODE(20,34,22,46,200,"T","BG+/B")
MENSAGEM("Informe a quantidade de vias a serem impressas")
@ 20,35 SAY PADC(" N§ vias ",9,"Ä") COLOR "BG+/B"
SET CURSOR ON
@ 21,39 GET nVias PICT "9" COLOR "W+/N"
READ
IF LASTKEY()=27
FICA:=.F.
ELSE
IF nVias=0
if alert("Deseja cancelar a impress„o ?",{"N„o","Sim"})=2
return 1
endif
ELSE
FICA:=.F.
ENDIF
ENDIF
SET CURSOR OFF
RESTSCREEN(20,33,23,48,cTela2)
ENDDO
if IMPRESSORA="Impressora"
aPrinters:=GETPRINTERS(.T.)
VT:=LEN(aPrinters)
IF VT=0
IMPRESSORA:="Paralela (local)"
cImp:="LPT1" /* ou p/impres.em rede colocando o caminho:
cImp:="\\pc3\epson
*/
FOR I=1 TO nVias
COPY FILE(ARQUIVO+".PRN") TO (cImp)
NEXT
ELSEIF VT=1
IMPRESSORA:=aPrinters[1,2]
cImp:=CHARREM(":",aPrinters[1,3])
ELSE
aImpressora:={}
FOR I=1 TO VT
AADD(aImpressora,aPrinters[I,2]) // Controi VETOR da MATRIZ
NEXT
cColor:=SETCOLOR()
ctela1:=SAVESCREEN(14,15,23,64)
JANELA1(14,16,VT+15,63,"Selecao de impressora")
SETCOLOR(CONTECOR[4])
IF (OP:=ACHOICE(15,17,22,62,aImpressora))!=0
IMPRESSORA:=aImpressora[OP]
cImp:=CHARREM(":",aprinters[OP,3])
ELSE
// Verifica qual ‚ a impressora padrão
OP:=0
FOR I=1 TO VT
IF aPrinters[I,1] := .T.
OP:=I
ENDIF
NEXT
IMPRESSORA:=aPrinters[OP,2]
cImp:=CHARREM(":",aPrinters[OP,3])
ENDIF
SETCOLOR(cColor)
RESTSCREEN(14,15,23,64,ctela1)
ENDIF
endif
DELETE FILE("LOG.TXT")
SWPRUNCMD("WAPI -PRINT:"+CHR(34)+IMPRESSORA+CHR(34)+";"+CHR(34)+ARQUIVO+".PRN"+CHR(34)+";"+CHR(34)+"Clientes - Tipo Ficha"+CHR(34)+";F;"+CHR(34)+"A"+CHR(34)+";F;"+str(nVias,1,0)+";F;LOG.TXT",0,"","")
lSucesso:=.f.
IF FILE("LOG.TXT")
IF ALLTRIM(MEMOREAD("LOG.TXT"))="0"
lSucesso:=.t.
ENDIF
DELETE FILE("LOG.TXT")
ENDIF
IF lSucesso:=.f.
ALERT("Falha na tentativa de impressao")
ENDIF
CASE LASTKEY()=1
GOTO TOP
CASE LASTKEY()=6
GOTO BOTT
ENDCASE
@ VULT_POS,78 SAY CHR(176) COLOR "W+/B"
VULT_POS=3+(((RECNO()*100)/VQUAN_REG)/5)
IF RECNO()=1
VULT_POS=3
ENDIF
IF VULT_POS=23
VULT_POS=22
ENDIF
@ VULT_POS,78 SAY CHR(219) COLOR "GR+/B"
RETURN 1
Josmar