Fórum Pegar o tamanho do texto em pixels #593183

15/05/2018

0

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

Responder

Post mais votado

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

Alessandro Ribeiro

Alessandro Ribeiro
Responder

Gostei + 1

Mais Posts

16/05/2018

Raimundo Pereira

Post seu código para analisarmos
Responder

Gostei + 0

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

Aceitar