Como saber o Tamanho (Em Milímetros) de uma String Formatada
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 ?
[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
Curtidas 0
Respostas
Massuda
10/06/2005
Assumindo que você tem acesso ao Canvas onde o texto vai ser escrito, o tamanho da string é......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.
var TamanhoEmPixels: Integer; ... TamanhoEmPixels := OCanvas.TextWidth(´...seu texto...´);
GOSTEI 0
Juliopedroni
10/06/2005
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 ?
GOSTEI 0
Massuda
10/06/2005
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;
GOSTEI 0
Mahdak
10/06/2005
julio, da uma olhada nesse topico:
http://forum.clubedelphi.net/viewtopic.php?t=39374
http://forum.clubedelphi.net/viewtopic.php?t=39374
GOSTEI 0