Fórum Calculo de area de um texto #330578
03/10/2006
0
Estou fazendo um sistema para um cliente que controla os custos gastos com artigos em um determinado jornal. O meu problema é o seguinte: o jornal é divido em colunas cada coluna tem 5 cm. Eu preciso pegar uma noticia e jogar no sistema e o sistema tem que calcular a altura em cm da noticia, e com esta informação calcular a area ocupada pela noticia. A noticia é somente texto.
Problema:
- Como calular a altura da noticia? A noticia vai estar em um campo RichEdit. Tem dois tamanho de fontes diferentes(arial 10 e Times New Roman 18).
Desde ja agradecido
Emilio
Curtir tópico
+ 0Posts
03/10/2006
Campsoft
Agora, eu acho meio complicado vc tentar definir uma formula 100¬ eficiente para esse tipo de calculo que seu cliente esta necessitando, dado as variantes de tamanho da impressão, se determinadas paginas do jornal, como a primeira e a ultima teriam valores maiores.. eu sinceramente nao sei.
Assim como vc, tambem estou aqui na espectativa de que alguma cerebro iluminado nos dê a resposta para essa duvida.
Um grande abraço.
Gostei + 0
04/10/2006
Micheus
Num form, adicione um RichEdit (sem bordas - bsNone), um botão, e três labels. No OnClick do botão coloque o seguinte código:
procedure TForm1.Button1Click(Sender: TObject); var ColunaPx, AlturaPx :Integer; AlturaCM, InchToCM :Double; begin InchToCM := (PixelsPerInch /2.5401); // acha relação pixels/cm ColunaPx := Round(InchToCM *5); // força largura do RichEdit em 5cm // TextHeight retornará a máxima altura de uma linha AlturaPx := (Canvas.TextHeight(´Aj´) *RichEdit1.Lines.Count) -1; AlturaCM := AlturaPx/InchToCM; // Calcula altura em cm RichEdit1.Width := ColunaPx; RichEdit1.Height := AlturaPx; Label1.Caption := IntToStr(RichEdit1.Lines.Count); Label2.Caption := FormatFloat(´0.00´, AlturaCM); Label3.Caption := Format(´¬fcm x 5cm = ¬fcm´, [AlturaCM, AlturaCM*5]); end;
Uma vez que são realizadas conversões de unidades, acho que o resultado pode ser aplicado ao impresso. Faça um teste.
[]s
Gostei + 0
04/10/2006
Emilio
Valeu!!! O código funcionou.
Gostei + 0
04/10/2006
Marco Salles
esta relaçao , vai depender do monitor ???? de onde veio este numero ???
Gostei + 0
04/10/2006
Night_man
1 polegada eh 2,5401 centimetros
Gostei + 0
05/10/2006
Marco Salles
O que determina o valor de PixelsPerInch ????....
Por exemplo aqui no meu Pc , este valor e de 96
Tb não entendo o que determina o valor de Canvas.TextHeight(´Aj´) ???.
Por exemplo aqui no meu Pc , este valor e de 13.. Que é o mesmo valor de canvas.TextHeight(´qualquerCoisaDiferenteDeVazio´)...[b:a5dd225447]Não muda nada[/b:a5dd225447]
Bem o fato é que tenho um monitor de 17 polegadas e tenho valores diferentes do esperado... :?: :?:
Alem disso , [b:a5dd225447]aumentando[/b:a5dd225447] o tamanho da fonte , não muda esses valores, o que me parece estranho , pois para fontes diferentes deveria ter valores diferentes....
Achei interresante , porque acredito que qualquer solução deveria levar em conta o Texto do Richeedit , mas não consigo ver nenhuma relação com o mesmo
Gostei + 0
05/10/2006
Micheus
esta relaçao , vai depender do monitor ???? de onde veio este numero ???[/quote:1a2660d402]A idéia é simular no monitor a relação que o colega deseja, já que há uma relação entre o tamanho do fonte e ppp (pixel por polegada).
AlturaPx := ([b:1a2660d402]-RichEdit1.Font.Height[/b:1a2660d402] *RichEdit1.Lines.Count) -1;
[color=darkred:1a2660d402]Atentar para o sinal negativo invertendo o valor da propriedade que é negativa.[/color:1a2660d402]
Minha observação no post inicial:
[b:1a2660d402]Marco Salles[/b:1a2660d402], espero ter exclarecido as dívidas e [i:1a2660d402]estou certo de que posso não estar certo 100¬[/i:1a2660d402]
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)