Identificar tipo da impressora

Delphi

22/04/2004

Gostaria de saber se existe alguma função para descobrir se um
determinado drive de impressora é de uma impressora matricial ou não.
É que estou fazendo a impressão direta para a porta e gostaria de validar o a impressora configurada é uma matricial.

Obrigado,


Mcd

Mcd

Curtidas 0

Respostas

Emir Neto

Emir Neto

22/04/2004

Caso alguém saiba, por favor mande para mim, pois o meu problema é idêntico ao nosso colega.


GOSTEI 0
Tiba

Tiba

22/04/2004

Existe ou não essa possibilidade ??


GOSTEI 0
Joker

Joker

22/04/2004

seguinte... Tem uma forma que conheço, mas nào chega a ser um comando de baixo nível: tem uma determinada fonte que só existe se a impressora selecionada ou padrão for matricial: ´Draft 10cpi´. Eu costumo usar um objeto TPrinter pois ele recolhe as fontes da impressora padrão. Faz-se uma procura no TStringList assim:
.
.
.
begin
if (Printer.IndexOf(´Draft 10cpi´) >= 0) then

else

end;
.
.
.
Se vc vai dar opção do usuário selecionar a impressora, procure nas relação de fontes dela e vai conseguir.
Espero ter ajudado.


GOSTEI 0
Tiba

Tiba

22/04/2004

. . begin if (Printer.IndexOf(´Draft 10cpi´) >= 0) then else end; . .


Não seria :
Printer.Fonts.IndexOf(´Draft 10cpi´) >= 0


??

Eu pensei em fazer assim, mas algumas impressoras NÃO Matriciais estão vindo com essa fonte tbm ...

Será se existe alguma outra forma de descobrir o tipo da Impressora ?


GOSTEI 0
Joker

Joker

22/04/2004

putz, vc pegou alguma impressora que tem essa fonte? sacanagem... eu acreditava que o método era super eficiente... A princípio vou ficar te devendo, mas vou pesquisar.


GOSTEI 0
Tiba

Tiba

22/04/2004

Esse tipo de impressora, que possue essa fonte, ainda são raras ...

mas ..

e se for uma tendência a inclusão dessa fonte nas próximas impressoras ?? ..

por isso ainda estou a procura de um novo método de [b:551f92e3ce]identificação do tipo de impressora [/b:551f92e3ce].


GOSTEI 0
Tiba

Tiba

22/04/2004

sobe


GOSTEI 0
Vinicius2k

Vinicius2k

22/04/2004

Colegas,

Vcs já pensaram em fazer um teste pela resolução ?
Até aonde eu sei (posso estar enganado), impressoras matriciais tem uma resolução X máxima de 144 Pixels e as InkJet e Laser são, no mínimo, 300 Pixels...
Vejam um exemplo de como extrair a resolução usando a GetDeviceCaps da API do Windows :
procedure TForm1.Button1Click(Sender: TObject);
var Device, Driver, Port : array[0..255] of char;
    hDMode: THandle;
    ResolucaoX: Integer;
begin
  if PrintDialog1.Execute then
    begin
      // Esta linha é para forçar a seleção da impressora
      // escolhida no PrintDialog. Caso contrário será a
      // Impressora Padrão
      Printer.GetPrinter(Device, Driver, Port, hDMode);

      // Leitura da Resolução
      ResolucaoX:= GetDeviceCaps(Printer.Handle, ASPECTX);

      // Simples Teste
      ShowMessage(IntToStr(ResolucaoX));
    end;
end;


Espero ter ajudado...
T+


GOSTEI 0
POSTAR