Ao desenvolver aplicações para Linux, no que se refere a recursos visuais como botões, Splitters(divisores), painéis e outros componentes gráficos precisamos estar atento as decorações Gtk e QT, pois elas sobrescrevem aspectos gráficos e estilos que manualmente você insira. Por exemplo, embora um Splitter possa ter sua cor escolhida, se estivermos num ambiente Gtk usando o tema adwaita, o Splitter será da cor da temática adwaita e não a cor que você escolheu e isso faz muito sentido, concorda? Pense bem, o ideal é que todos os programas respeitem a temática que eu escolhi e não os programadores que fizeram o programa, assim uma tema dark para o ambiente gráfico influenciará a temática de todos os programas e nenhum programa sentir-se-á um patinho feio.
Em poucas palavras, se pretende desenvolver para Windows e Linux, evite mexer em decorações de componentes que possam ser sobrescritas pela decoração do ambiente gráfico, pois além de ser um retrabalho, o resultado não será melhor do que a temática escolhida pelo usuário, da Microsoft ou da distribuição Linux.
Contudo, as vezes é necessário que nossa aplicação tenha uma aparência dessintonizante do restante do ambiente gráfico, neste caso, primeiro tome ciência que a alteração desejada é possível de ser feita sem atrapalhar a decoração Gtk ou QT, lembre-se do exemplo do Splitter, você pode até escolher uma cor para ele, mas ela será ignorada quando seu programa entrar em execução. Caso queira que um componente tenha uma aparência dessintonizante da temática, veja se há um evento no componente que permita manipular o desenho dele, geralmente uma propriedade chamada canvas, e também um evento que permita sobrescrever a aparência do componente, nosso exemplo de Splitter tem um evento chamado OnPaint o qual podemos usar para manipular a aparência, veja este exemplo:
procedure TForm1.Splitter1Paint(Sender: TObject);
begin
with (Sender as TSplitter) do
begin
Canvas.Color:=clBlack;
// use Canvas.FillRect se quiser desenhar algo diferente
end;
end;
Se estiver querendo sobrescrever a aparência de um componente em detrimento de uma decoração Gtk ou QT terá de aprender a procurar no componente um evento que possa manipular a aparência geralmente usando Canvas. Mas eu recomendo que evite.