Pegar o tamanho do texto em pixels

Delphi

15/05/2018

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

Alessandro Ribeiro

Curtidas 0

Melhor post

Alessandro Ribeiro

Alessandro Ribeiro

16/05/2018

Oi P2, consegui resolver, o problema era no trecho:
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

Raimundo Pereira

15/05/2018

Post seu código para analisarmos
GOSTEI 0
POSTAR