Pegar o tamanho do texto em pixels
Olá, estou precisando pegar o tamanho do texto de uma edit em pixels, porém ao tentar utilizar o canvas ele informa identificador não declarado. Se eu criar uma variável do tipo TCanvas, ele retorna um erro em execução "canvas not allow drawing". Estou fazendo isso em uma classe, caso eu tente usar o canvas no form diretamente ele funciona. Porém trata-se de um componente meu que hera de TEdit. Se alguém puder me ajudar. Obrigado.
Alessandro Ribeiro
Curtidas 0
Melhor post
Alessandro Ribeiro
16/05/2018
Oi P2, consegui resolver, o problema era no trecho:
Como a minha classe herdava diretamente de TObject não possuia o field Canvas. Porém como seria somente para usar o método TextWidth, eu poderia instanciar qualquer objeto que herdasse em algum momento de TCanvas e utilizar somente o método destruindo ele depois, ficando assim:
Foi feito no Lazarus mas vale o mesmo para o Delphi
var oCanvas: TCanvas begin repeat texto := ' ' + texto; until oCanvas.TextWidth >= TEDit(Sender).Width end;
Como a minha classe herdava diretamente de TObject não possuia o field Canvas. Porém como seria somente para usar o método TextWidth, eu poderia instanciar qualquer objeto que herdasse em algum momento de TCanvas e utilizar somente o método destruindo ele depois, ficando assim:
var oForm: TForm begin repeat texto := ' ' + texto; until oForm.Canvas.TextWidth(texto) >= TEDit(Sender).Width; end;
Foi feito no Lazarus mas vale o mesmo para o Delphi
GOSTEI 1
Mais Respostas
Raimundo Pereira
15/05/2018
Post seu código para analisarmos
GOSTEI 0