Maligno escreveu:Com você isso acontece sempre?
Isto acontece 60% das vezes no WIN98, no WINXP o titulo da fila de impressão faz (digamos sempre).
Isso é Windows. Quem vai entender? Nem a própria MS explica.

)))
Coloco entre aspas o nome certinho da impressora padrão, isto é o nome tal qual com minusculas e maiusculas. Ex.: "Epson LX-300"
Pode ser bobagem, mas tenta trocar o nome da impressora para "#", pra própria função pegar a impressora default. Provavelmente vai dar no mesmo. Mas de repente,...
gostaria de saber como é feito nas linguagens "for Windows", é dizer como é feito a instrução no proprio código fonte, que aquela determinada linha deveria ser impresso em NEGRITO, digamos. Porque imagino que essa instrução serve para qualquer tipo de impressora.
Negativo. Cada impressora é, pela sua própria natureza, um computador como outro qualquer. Tem processador, BIOS, memória, I/O, etc. A diferença é que a impressora é um computador dedicado a uma única tarefa. Para que ela funcione a contento, cada fabricante especifica um conjunto de comandos de impressão, ou "instruções", que são interpretadas pelo processador, assim que a "stream" de dados começa a chegar. Cada fabricante tem seu próprio conjunto de "instruções". Antigamente até havia impressora (Citizen matricial) que aceitava os códigos da Epson, que era a marca mais popular (e ainda é, para matriciais de impacto). Mas isso, se hoje ainda existir, é muito raro. Portanto, não dá pra generalizar.
Mas, como eu já disse antes, é fácil resolver esse problema, desde que você se disponha a implementar uma LIB com funções de abstração que forneçam os códigos de impressão da impressora previamente selecionada. Um exemplo do que eu já fiz:
Código: Selecionar todos
set date british
set century on
set margin to 5
set printer to "TST.PRN"
set device to print
SetPrinter(_kPRT_MODEL_PCL5e)
@prow(),0 say _kPRT_CMD_RESET +;
_kPRT_ORIENTATION_PORTRAIT +;
_kPRT_LINE_SPACING_8LPI +;
_kPRT_PAPER_SIZE_A4 +;
_kPRT_CHARACTER_SET_PC850 +;
_kPRT_COL_SPACING_FIXED +;
_kPRT_PITCH_17CPI +;
_kPRT_STYLE_SOLID +;
_kPRT_STROKE_BOLD +;
_kPRT_TYPEFACE_LETTER_GOTHIC
c := 0
for l := 1 to 84
c := if(c=132,1,c+1)
@prow()+1,0 say StrZero(l,3) + " " +;
if(l%2=0, _kPRT_STROKE_THIN, _kPRT_STROKE_BOLD) +;
Replicate("X",c)
next
@prow(),pcol() say _kPRT_CMD_EJECT
set device to screen
set printer to
if PrintFile("#","TST.PRN")
? "Impressao ok!"
else
? "Erro na impressão"
end
?
Isso é apenas um teste. Ainda não acabei. Esse código é só pra ter uma idéia. Neste exemplo eu configurei pra usar PCL, mas se usasse Epson matricial de impacto, não teria que mudar nada nesta configuração, já que o próprio sistema faz os ajustes, conforme ele vai recebendo os comandos. Exemplo: a LX300 não tem fonte "Letter Gothic". Neste caso ele usará "Sans Seriff" ao receber o comando para "Letter Gothic". Simples e limpo.
Na questão da função -GETWINDOWSINFO (no meu WINXP), nas "Propriedades do Sistema" do ícone "Sistema" do Painel de Controle, me aparece:
Microsoft Windows XP
Professional
Versão 2002
Service Pack 2
Difícil de entender esse tipo de coisa. Imaginei que o Windows utilizasse a mesma função de busca de versão que eu utilizei no WAPI. Pelo jeito eles utilizaram outro sistema. Nem imagino qual, já que na documentação que eu tenho, que é completa, não há outra forma de fazer isso.
Pois é, gostaria tirar essa dúvida. Porque o meu WINDOWS XP, está beleza, sem problemas nenhum a única diferença é a descrição doControle e o resultado do -GETWINDOWSINFO que diz: 9X,Windows 95,,4.0.950 . Mas acredito que se forem feito outros testes na mesma condição iremos descobrir.
Não tenho tanta certeza disso.
Esta semana não foi possível, mas ferei aquele teste nas máquinas de um cliente na segunda-feira. Depois comentarei o resultado.
[]'s
Maligno
http://www.buzinello.com/prg