Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problema com Impressora Padrão - Delphi/Windows


jpchina

Pergunta

Boa tarde,

Trabalho no Suporte de uma empresa onde possuímos um Sistema em Delphi onde o mesmo faz impressão de relatórios e cartões em PVC.

Para isso nosso cliente devera possuir uma impressora Laser normal e uma impressora de PVC. O problema que estamos enfrentando é o seguinte:

Ele utiliza a impressora Laser como padrão, se ele desejar imprimir um cartão em PVC é necessário sair do Sistema e mudar a impressora PVC para padrão, só fazendo este procedimento é que ira conseguir imprimir os cartões. Acontece o mesmo ao contrário.

Ou seja, na hora de gerar o relatório ele assume as configurações da Impressora que esta como padrão no Windows, como os cartões são bem menores que uma folha A4, o relatório sai totalmente desconfigurado. E o cartão PVC também.

Gostaria de saber se já existe uma solução para isto??

Agradeço desde já!

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

basta voce definir qual sera a impressora padrão antes de imprimir

exemplo

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

uses Printers, WinSpool, Inifiles;

procedure DefaultPrinterSet(Impressora: string);
var
DriverPort : string;
s : array[0..64] of char;
WinIni : TIniFile;
WinIniFileName : array[0..MAX_PATH] of char;
begin
GetWindowsDirectory(WinIniFileName, SizeOf(WinIniFileName));
StrCat(WinIniFileName, '\win.ini');
WinIni := TIniFile.Create(WinIniFileName);
try
DriverPort := WinIni.ReadString('devices', Impressora, '');
WinIni.WriteString('windows','device', Impressora +',' + DriverPort);
finally
WinIni.Free;
end;
WritePrivateProfileString(NIL, NIL, NIL, WinIniFileName);
s := 'windows';
SendMessage(HWND_BROADCAST, WM_WININICHANGE,0,Cardinal(@s));
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
DefaultPrinterSet('Epson LX-300+'); // coloque o nome da impressora que será padrão
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
DefaultPrinterSet('Adobe PDF');
end;

end.

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...