Fórum Como saber o Tamanho (Em Milímetros) de uma String Formatada #284390

10/06/2005

0

Tenho uma String Formatada e preciso saber o tamanho em Milímetros que ela representa ... o problema é que a fonte não pode ser Fixa, tipo, supondo que eu vou emitir uma listagem no Word de Produto e Preço e o Produto aparece com uma fonte (selecionada pelo Usuário) e o Preço aparece com outra fonte (selecionada pelo Usuário) ... seria mais ou menos assim:

[b:0dab24b3e1]Produto 1[/b:0dab24b3e1] ................................ [i:0dab24b3e1]R$ 100,00[/i:0dab24b3e1]
[b:0dab24b3e1]Produto 2[/b:0dab24b3e1] ................................ [i:0dab24b3e1]R$ 200,00[/i:0dab24b3e1]

Como faço para, no Delphi, descobrir o tamanho em milímetros dessas Strings ?


Juliopedroni

Juliopedroni

Responder

Posts

10/06/2005

Massuda

Assumindo que você tem acesso ao Canvas onde o texto vai ser escrito, o tamanho da string é...
var
  TamanhoEmPixels: Integer;
...
  TamanhoEmPixels := OCanvas.TextWidth(´...seu texto...´);
...sendo que o tamanho é dado em pixels. No seu [url=http://forum.clubedelphi.net/viewtopic.php?t=64055]outro tópico[/url] (converter milimetros para pixels) está a explicação de como converter de pixels para milimetros.


Responder

Gostei + 0

10/06/2005

Juliopedroni

Usei a Canvas.TextWidth(Edit1Text) e ele me retornou em Pixels o resultado, só que aí, reduzi o tamanho da fonte do Edit1 e para o mesmo texto continuoi dando o mesmo resultado, não deveria retornar um valor menor ?


Responder

Gostei + 0

10/06/2005

Massuda

Usei a Canvas.TextWidth(Edit1Text) e ele me retornou em Pixels o resultado, só que aí, reduzi o tamanho da fonte do Edit1 e para o mesmo texto continuoi dando o mesmo resultado, não deveria retornar um valor menor ?
Se você usou isso dentro de uma procedure/function de um form, o Canvas que você usou é o do form e não o canvas do edit.

Para obter o tamanho de um texto dentro de um edit faça algo assim:
var
  Canvas: TControlCanvas;
  TamanhoDoTexto: Integer;
...
  Canvas := TControlCanvas.Create;
  try
    Canvas.Control := Edit1;
    TamanhoDoTexto := Canvas.TextWidth(Edit.Text);
  finally
    Canvas.Free;
  end;
O canvas do edit é mais complicado de acessar porque o edit é um controle padrão do Windows, ou seja, é inteiramente implementado pelo Windows e não pela VCL.


Responder

Gostei + 0

10/06/2005

Mahdak

julio, da uma olhada nesse topico:


http://forum.clubedelphi.net/viewtopic.php?t=39374


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar