Página 1 de 1
Usar o Win32prn de forma mais inteligente
Enviado: 30 Set 2012 12:53
por lugab
Ola amigos, bom dia e bons votos a todos
Uso a classe Win32prn no [x]Harbour .
Caso 1)
Será que existe uma forma de ao detectar via programa que só existe apenas UMA ÚNICA IMPRESSORA instalada, enviar o relatório diretamente para ela , sem ter que abrir antes a caixa de seleção de impressora , só para fazer o usuário clicar na única impressora que existe ?
Caso 2)
Quando o programa souber que um determinado relatório só deve ser impresso na impressora matricial, é possível disparar a impressão diretamente para ela, sem ter q passar pela caixa de seleção de impressora ?
Grato,
gabriel
Usar o Win32prn de forma mais inteligente
Enviado: 30 Set 2012 13:39
por Imatech
Olá Gabriel !
.
.
.
Caso 01:
WIN_PRINTERLIST(): retorna lista com impressoras instaladas...
Código: Selecionar todos
// Somente 1 impressora instalada
IF LEN( WIN_PRINTERLIST() ) == 1
.
.
.
Caso 02:
Na tela de entrada do programa peça a seleção da impressora matricial...
Código: Selecionar todos
Private cPrinter_Default
// Somente 1 impressora instalada
aPrinters := WIN_PRINTERLIST()
M->cPrinter_Default := aChoice( aPrinters )
.
.
.
Usar o Win32prn de forma mais inteligente
Enviado: 30 Set 2012 14:55
por lugab
Imatech, valeu , muito brigado !
Ja incorporei as dicas no meu soft...
Agora, surgiu mais uma dúvida:
Suponha que existam 3 impressoras, 1 linkjet, 1 laser e 1 LX300, e que o relatorio atual só pode ser impresso na LX300, mas , as vezes, o usuário seleciona a impressora errada e manda o bicho ser impresso na laser.
Tem como resolver isso , ou seja, o programa saber q existe uma lx300 e mandar o relatório direto para ela, sem peassar pela seleção ao usuário ?
Usar o Win32prn de forma mais inteligente
Enviado: 30 Set 2012 16:00
por Imatech
.
.
.
Sugestão: conheça a classe hbHPDF
Vantagens: riquesa de recursos e impressão multiplataforma e preview usando qquer PdfReader
.
.
.
Sua resposta:
Solução para 99% das impressorar matriciais...
.
.
.
Código: Selecionar todos
FUNCTION Main()
Local oPrinter:=Win_Prn():New(Win_PrinterGetDefault())
If ISDOTPRINTER(oPrinter,Win_PrinterGetDefault(),Win_PrinterGetDefault())
?'Dot printer - YES'
Else
?'Dot printer - NO'
EndIf
RETURN NIL
#pragma BEGINDUMP
#include <windows.h>
#include "hbapi.h"
HB_FUNC( ISDOTPRINTER )
{
HDC hDC = (HDC) hb_parnl(1) ;
LPCSTR pPrinterName = hb_parcx(2) ;
LPCSTR pPort = hb_parcx(3) ;
// Printer can be dot-matrix when number of colors is maximum 16
// and when printer is capable to print only for TRUETYPE
// fonts as graphics (dot-matrix and PCL printers are capable for
that).
if( ( GetDeviceCaps( hDC, NUMCOLORS) <= 16 )
&&( DeviceCapabilities( pPrinterName, pPort,DC_TRUETYPE, NULL, NULL )
== DCTT_BITMAP ) )
hb_retl(TRUE);
else
hb_retl(FALSE);
}
#pragma ENDDUMP
Thanks to: Grzegorz
Usar o Win32prn de forma mais inteligente
Enviado: 03 Out 2012 19:53
por lugab
Certo, Imatech, agora é encaixar tudo no programa e botar pra funcionar...
Muito obrigado por tudo...
:{