Utilizando o componente dxSkinController da DevExpress
Veja neste artigo como alterar a aparência da aplicação utilizado o componente dxSkinController da biblioteca DevExpress.
Você não gostou da qualidade deste conteúdo?
(opcional) Você gostaria de comentar o que não lhe agradou?
Ter aplicações com visual diferenciado e agradável tem se tornado cada vez mais importante no mercado de software, e a busca por componentes para atender esse requisito não é uma novidade para boa parte dos programadores. Existem atualmente várias bibliotecas e componentes individuais que garantem tal recurso, cada um com seus pontos positivos e negativos.
Aqui veremos como utilizar o componente dxSkinController da biblioteca DevExpress que é, sem dúvida, uma das mais completas do mercado da atualidade.
Para o exemplo que desenvolveremos neste artigo, devemos criar uma aplicação VCL e adicionar à tela principal um ComboBox (aqui utilizei um cxComboBox, mas o nativo pode ser usado igualmente) e um dxSkinController. Estes dois controles serão utilizados para alternar entre os skins disponíveis.
Para facilitar a visualização dos efeitos de cada skin, adicionemos também alguns controles como Edits e Buttons (no meu exemplo, utilizei um cxButton, um cxTextEdit e uma cxProgressBar, todos da mesma biblioteca, mas o leitor pode usar os componentes nativos). A minha tela principal ficou como na Figura 1.

Figura 1: Configuração do form
Antes de partirmos para a prática, vamos conhecer melhor o componente, entendendo cada uma de suas propriedades, as quais são listadas abaixo.
- Kind: Define um estilo inicial para os controles da aplicação quando não há nenhum skin aplicado.
- NativeStyle: Quando verdadeira (valor true), esta propriedade faz com que os controles mantenham o estilo nativo (sem efeitos visuais diferenciados) mesmo que sejam aplicados skins.
- SkinName: Define qual skin será aplicado aos controles. O valor pode ser selecionado numa lista pré-definida.
- UseSkins: Quando verdadeira (valor true), permite a aplicação de skins. Caso seja definida como falsa (valor false), o skin selecionado na propriedade SkinName não terá efeito. Resumindo, ativa e desativa o uso de skins.
Caso desejássemos definir um skin fixo para a aplicação, bastaria selecionar um dos valores disponíveis para a propriedade SkinName (o leitor pode fazer isso para visualizar, em tempo de design, o efeito dos skins), porém, veremos como listar os skins disponíveis para que o usuário possa escolher aquele de sua preferência.
Considerando que o ComboBox que adicionamos inicialmente foi chamado de “cbSkins”, adicionemos, no evento onShow do form, o código da Listagem 1.
Listagem 1: Listando os skins disponíveis
var
j:integer;
begin
for j := 0 to Pred(GetExtendedStylePainters.Count) do
cbSkins.Properties.Items.Add(GetExtendedStylePainters.Names[j]);
end;
Se executarmos a aplicação, veremos que os skins disponíveis para seleção são listados no ComboBox conforme ilustra a Figura 2.

Figura 2: Lista de skins disponíveis
Agora, para aplicar o skin selecionado, codifiquemos o evento onChange do ComboBox conforme a Listagem 2.
Listagem 2: Ativando o skin selecionado
dxSkinController1.SkinName := cbSkins.Text;
A Figura 3 ilustra alguns skins já aplicados à tela.

Figura 3: Exemplos de skins aplicados à tela
Sabendo como listar e aplicar os skins, poderíamos, por exemplo, salvar o nome do skin selecionado em um arquivo .ini e ativá-lo ao iniciar a aplicação.
Este artigo foi breve, porém, acredito que possa ser útil para quem utiliza essa poderosa biblioteca de componentes no Delphi.
Um abraço a todos e até o próximo artigo.
Joel Rodrigues
Técnico em Informática - IFRN Cursando Bacharelado em Ciências e Tecnologia - UFRN Programador .NET/C# e Delphi há mais de 3 anos, já tendo trabalhado com Webservices, WPF, Windows Phone 7 e ASP.NET, possui ainda conhecimentos em HTML, CSS e Javascript (jQuery). Certificado como Microsoft Special...
5 COMENTÁRIOS
Sabe como adiciono as demais skins?
Att,
A versão que você está usando é completa? Ou é algum pacote básico?
Sabe me dizer se na versão 2012 v1.6 do componente usaria este mesmo processo? Utilizo ele no Delphi 7 e mesmo colocando o dxSkinController, alterando as funções manualmente ele apenas modifica os componentes que esta dentro do form, porem não modifica o visual do próprio form.
Já no caso, quando tento utilizar a sua dica, o delphi diz que GetExtendedStylePainters não foi declarada.
Poderia me auxiliar se possível?
Ainda não testei essa versão, por isso não vou poder te dar uma resposta agora.
Sobre a função para listar os skins, dá uma olhada neste link: http://www.devexpress.com/Support/Center/p/Q310250.aspx.
Abraço.




