Fórum Canvas.drawFocusRect num funfa #172615

01/08/2003

0

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!


Nildo

Nildo

Responder

Posts

01/08/2003

Marcelo Saviski

Você deve estar passando um Width negativo

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



Responder

Gostei + 0

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

Aceitar