O maior problema foram os TBitBtn's que não eram desenhados de acordo com o tema do Windows pelo Theme Service. Procurei várias soluções e não encontrei nada, nem no FAQ da soft-gems. Depois de mais alguma pesquisa, finalmente descobri!
A causa e a solução do problema são relativamente simples:
O problema só ocorria em forms que continham TBitBtn e cujo Owner não era o objeto Application. Uso frequentemente diálogos chamando uma função de classe que cuida de sua criação e destruição da seguinte forma:
class function TMyDialog.Execute: boolean;
var
Dlg: TMyDialog;
begin
Dlg := TMyDialog.Create(nil);
try
Result := Dlg.ShowModal = mrOk;
finally
Dlg.Free;
end;
end;
Usado desta forma os TBitBtn's neste diálogo não serão desenhados de acordo com o tema do Windows. O melhor a fazer é substituir o código por:
class function TMyDialog.Execute: boolean;
var
Dlg: TMyDialog;
begin
Dlg := TMyDialog.Create(Application);
try
Result := Dlg.ShowModal = mrOk;
finally
Dlg.Free;
end;
end;
Neste caso o TBitBtn é desenhado corretamente!
No comments:
Post a Comment