Canvas.drawFocusRect num funfa
Olá!
Estou fazendo um componente, e o DrawFocusRect nao esta funcionando.
Quando eu troco pelo Rectangle pra desenhar um quadrado no lugar do focus ele desenha normal.
Alguem sabe me dizer porque ?
Obrigado!
Estou fazendo um componente, e o DrawFocusRect nao esta funcionando.
Quando eu troco pelo Rectangle pra desenhar um quadrado no lugar do focus ele desenha normal.
Alguem sabe me dizer porque ?
Obrigado!
Nildo
Curtidas 0
Respostas
Marcelo Saviski
01/08/2003
Você deve estar passando um Width negativo
Ou seja , criando um Rect(100,100,0,0) ou algo parecido
Ou seja , criando um Rect(100,100,0,0) ou algo parecido
Isso porque o retângulo passado como pa-râmetro para DrawFocusRect deve ter um valor de Top menor do que o valor de Bottom, e o mesmo é verdade para os valores de Left e Right. Em outras palavras, um retângulo que se estende para olado negativo não funciona de forma correta.
Entretanto, no final ele é pintado corretamente, pois afunção de desenho Rectangle não tem esse problema.Para corrigir esse problema, escrevemos uma função simples que inverte as coordenadas de um retângulo para fazê-las refletir os pedidos da chamada a DrawFocusRect:
function NormalizeRect (ARect: TRect): TRect; var tmp: Integer; begin if ARect.Bottom < ARect.Top then begin tmp := ARect.Bottom; ARect.Bottom := ARect.Top; ARect.Top := tmp; end; if ARect.Right < ARect.Left then begin tmp := ARect.Right; ARect.Right := ARect.Left; ARect.Left := tmp; end; Result := ARect; end
GOSTEI 0