Win32prn() só tem me dado dor de cabeça

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: Win32prn() só tem me dado dor de cabeça

Mensagem por gvc »

[Hasse]
O valor 54 CPI, da terceira linha, multiplicado por 3, resulta em 18 CPI, que é igual ao exemplo da primeira linha.
Só uma coisinha. 54 * 3 = 18??? (eh.eh.eh.)

Ah! Espero que vc entenda isso como uma brincadeira entre amigos. Sabe que hoje é segundona e tem que rir um pouco.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Win32prn() só tem me dado dor de cabeça

Mensagem por Toledo »

gvc, na verdade é divisão e não multiplicação.
Hasse escreveu:oPrinter:SetFont( 'Courier New',12,{1,18},,.F.,.F. )
oPrinter:SetFont( 'Courier New',12,{2,36},,.F.,.F. )
oPrinter:SetFont( 'Courier New',12,{3,54},,.F.,.F. )
{1,18} = 18 dividido por 1 é igual 18
{2,36} = 36 dividido por 2 é igual 18
{2,54} = 54 dividido por 3 é igual 18

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Re: Win32prn() só tem me dado dor de cabeça

Mensagem por Hasse »

Amigo GVC:
Uma boa brincadeira é sempre agradável e muito bemvinda.

É muito estranho essa conta, para nós, que estamos acostumados ao sistema métrico decimal.

Amigo Toledo:
Eu diria que, aparentemente, é uma divisão, mas técnicamente e matematicamente é multiplicação. Vejamos:

Se você tem uma fonte de 18 CPI (tamanho 1,41 mm) e deseja dobrar o tamanho dela, você multiplica ela por 2, e terás 9 CPI (tamanho 2,82 mm).
Se você triplica o tamanho, terás 6 CPI (tamanho 4,23 mm).

Coisas de inglês, sistema fracional (e americano, aliás também alemão, e grande parte do mundo civilizado, antes da guerra). Ainda bem que inventaram o sistema decimal, que tornou as coisas muito mais fáceis.

Contudo, muito mais importante do que essa balela toda, é o resultado final obtido.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Win32prn() só tem me dado dor de cabeça

Mensagem por Toledo »

Hasse, o que tentei explicar para o amigo gvc é que o terceiro parâmetro da função SetFont, quando passado em forma de matriz, para se calcular a largura da fonte em CPI, você deve dividir o segundo elemento da matriz pelo valor do primeiro elemento. Então, {1,18}, {2,36} e {3,54} é tudo a mesma coisa, pois o resultado será 18 CPI.

Se você observar a sintaxe da função SetFont() da classe Win32prn, vai notar que na descrição do parâmetro <nFontWidth> fala o seguinte:
<nFontWidth>:
Este pode ser um valor numérico que indica a largura da fonte em pixels. Se omitido, uma fonte de tamanho padrão é usado. Alternativamente, um array com dois elementos podem ser passados. Ele é usado para calcular a largura da fonte na unidade "caracteres por polegada" (CPI), dividindo o segundo elemento pelo primeiro elemento. Por exemplo:
aFontWidth: = (3, 50)

nCPI: = aFontWidth [2] / aFontWidth [1]

? nCPI // 16,67 caracteres por polegada

Quando a matriz (0,0) é passado, a largura da fonte padrão é selecionado.
Nota: quando o segundo elemento contém um valor negativo, o espaçamento de caracteres fixa é aplicada, mesmo se a fonte é uma fonte proporcional.
Hasse escreveu:Se você tem uma fonte de 18 CPI (tamanho 1,41 mm) e deseja dobrar o tamanho dela, você multiplica ela por 2, e terás 9 CPI (tamanho 2,82 mm).
Se você triplica o tamanho, terás 6 CPI (tamanho 4,23 mm).
Bom, neste caso você teria que passar a matriz {1,18} para 18 CPI, {2,18} para 9 CPI e {3,18} para 6 CPI. Onde dividindo o segundo elemento pelo primeiro elemento de cada matriz, você realmente vai ter 18, 9 e 6 CPI.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Responder