Vous êtes sur la page 1sur 4

17/09/2018 Alterando style da aplicação em tempo de execução no Delphi - ClipaTec Informática

Alterando style da aplicação em tempo de execução no Delphi

Olá pessoal, salve. Neste artigo vou ensinar vocês um recurso muito interessante que vocês poderão utilizar em suas aplicações
Delphi como mais um diferencial.
Em um artigo publicado há um tempo atrás eu comentei sobre a VCL Style, que é um recurso do Delphi que permite você criar e
usar estilos em suas aplicações, estes estilos na verdade são skins para alterar a aparência da aplicação.
No Delphi já temos alguns estilos que podemos escolher e usar, até aí tudo fácil, basta ir nas configurações da aparência,
selecionar o estilo desejado e Ok, automaticamente a aplicação recebe o novo estilo, porém, alguns desejam colocar esses estilos
como opção ao cliente, para que ele possa escolher qual aparência usar na aplicação, ou seja, deixar o estilo livre para ser alterado
em tempo de execução.
Na internet até então, não temos muitos artigos explicando como fazer isso, por isso resolvi criar este artigo para explicar para
vocês como fazer isso, é simples, fácil e prático, então, let's go.
Primeiro, crie um novo projeto no Delphi, adicione 1 TButton, 1 TComboBox e uma TLabel.
Renomeie a propriedade "Name" do formulário para"FrmMain" e o "Caption" para "Change Style". Altere o "Name" do "TButton"
para "btnFechar" e o "Caption" para "Fechar". Altere o "Name" do TComboBox" para "cbxStyle" e apague o conteúdo da
propriedade "Text" e finalmente, altere o "Caption" da "TLabel" para "Selecione um estilo", no final, sua aplicação deverá estar
parecida com a da imagem abaixo:

Salve o projeto com o nome "Style". Muito bem, o primeiro passo é selecionarmos quais os estilos estarão disponíveis em nossa
aplicação para ser alterado posteriormente pelo cliente. Então, clique no menu "Project/Options". Na janela que abrir, ao lado
esquerdo selecione clique no item "Appearance" da opção "Application". Feito isso, note que ao lado direito terá uma lista dos
estilos que já vem com o Delphi (em Custom styles). Muito bem, então marque todos e em "Default style" (item 2) selecione um
estilo que será o padrão da aplicação. Você pode visualizar como é o estilo antes de escolher, para isso, clique em cima do nome do
estilo na lista e clique no botão "Preview":
Legal, agora clique no botão "Ok". Todos os estilos que marcamos agora estão registrados na aplicação e prontos para serem
usados. Ao compilar o projeto, esses estilos serão adicionados junto ao executável, e isso dispensa o trabalho de você ter que copiar
os estilos junto da aplicação, pois eles já estão, digamos, embutido dentro do executável.
Agora vamos para a implementação. Precisamos adicionar duas "units" ao projeto para trabalharmos com os estilos.
Vá até a "uses" da seção "Interface" e declares as units "Themes" e "Styles":

https://www.clipatecinformatica.com.br/2015/02/alterar-style-aplicacao-em-tempo-de-execucao-delphi.html 1/4
17/09/2018 Alterando style da aplicação em tempo de execução no Delphi - ClipaTec Informática

Ok,

agora no escopo "Private" declare um procedimento "LoadStyles". Este método será responsável por ler os estilos registrados na
aplicação e jogar na TComboBox para ficar disponível a ser escolhido:

Pressione as teclas "Shift + Ctrl + C" para implementarmos a procedure:

Legal, agora vou explicar parte por parte dessa implementação para você entender corretamente.

https://www.clipatecinformatica.com.br/2015/02/alterar-style-aplicacao-em-tempo-de-execucao-delphi.html 2/4
17/09/2018 Alterando style da aplicação em tempo de execução no Delphi - ClipaTec Informática

Primeiro criamos uma variável do tipo string "sStyles" que obterá o nome dos estilos registrados na aplicação.
Logo abaixo chamamos o método "BeginUpdate" para a propriedade "Items" da "TComboBox". Por que este método?
Quando trabalhamos com lista de strings, sempre que adicionamos uma nova string a esta lista, a aplicação é redesenhada, e se
temos muitos itens a serem adicionados na lista, a cada item a aplicação é desenhada novamente, e se esta quantidade for muita, a
tela fica "piscando", quando chamamos este método, a aplicação não é redesenhada, e até ganhamos em performance, apesar de
hoje grande parte dos computadores serem bem potentes.
Agora, antes de carregar os itens da "TComboBox", estamos limpando os itens. No nosso caso praticamente não seria necessário,
mas em determinados casos é necessário para não ficar duplicando os itens. Por boa prática, estamos chamando o "Clear".
Agora vamos fazer uso do loop (laço de repetição) "For...in". Pra quem trabalha com o Java, seria o "For...each". Resumidamente
explicando, o For...in" é usado para percorrer uma coleção de objetos.
Antes de prosseguirmos a explicação do mesmo em nosso exemplo, antes preciso falar um pouco sobre a classe "TStyleManager".
Esta classe é usada para manipular as operações referente aos estilos. Usamos ela para registrar ou cancelar o registro de uma
classe de estilo, definir um estilo ativo, recuperar estilo, alterar estilos, etc.
O método "StyleNames" retorna uma matriz com o nome de todas as classes de estilos registrados.
Agora sim, podemos retomar a explicação, com o "For...In" estamos percorrendo a matriz de objetos, onde, estes objetos são os
estilos registrados na aplicação, e estamos retornando o nome de cada um. Estes nomes são atribuídos em nossa variável e abaixo,
pegamos este nome e adicionamos na "TComboBox". Isso será feito até que a lista dos estilos registrados chegue ao fim, desta
forma, nossa "TComboBox" terá todos os estilos.
O comando "Sorted" que estamos atribuindo "True" é simplesmente para ordenar os itens da "TComboBox" por ordem alfabética.
Na linha de baixo, estamos apontando e selecionando na "TComboBox" o nome do "Style" que está em uso atualmente na
aplicação. Na primeira vez, será o estilo que escolhemos como "Default", após o usuário alterar para outro estilo, será o nome do
estilo escolhido.
Para sabermos o estilo ativo na aplicação, usamos o comando "TStyleManager.ActiveStyle.Name", onde o comando "ActiveStyle"
retorna o estilo atual que está definido para a aplicação, e a propriedade "Name" retorna especificamente o nome do estilo.
Para finalizar, estamos chamando o método "EndUpdate" para indicarmos para aplicação que terminamos o trabalho e agora sim,
pode ser repintada ou redesenhada.
Agora que nosso método de carregar os estilos está pronto, vamos chamá-lo no evento "OnShow" do formulário:

Duplo clique no botão "Fechar" e digite:

Agora vamos no evento "OnChange" da "TComboBox" e implemente-o desta forma:

O evento "OnChange" é executado todo vez que alteramos algum item da "TComboBox".
Note que estamos chamando o método "TrySetStyle", este método, define o estilo especificado pelo nome, ativando-o na aplicação.
Se for realizado com sucesso, retorna "True", caso contrário, retorna "False". Seria interessante fazer esta validação, no nosso
exemplo não foi feito, mas fica a dica.
Este método pede dois parâmetros, onde o primeiro (Name) é o nome do estilo a ser aplicado na aplicação, que no caso estamos
lendo do "TComboBox", já o segundo parâmetro (ShowErrorDialog) especifica se uma caixa de diálogo de erro será exibida caso
não for possível aplicar o estilo selecionado, não é um parâmetro obrigatório, porém, se não passarmos um valor para ele, por
padrão o valor assumido é "True". Se você não deseja que uma mensagem de erro seja exibida, então passe "False" no segundo
parâmetro.
E finalmente chegamos ao fim, agora só rodar a aplicação e testar este maravilhoso recurso.

https://www.clipatecinformatica.com.br/2015/02/alterar-style-aplicacao-em-tempo-de-execucao-delphi.html 3/4
17/09/2018 Alterando style da aplicação em tempo de execução no Delphi - ClipaTec Informática

Aqui vai outra dica, seria interessante gravar o estilo escolhido pelo usuário em um arquivo INI, para que na próxima vez que a
aplicação for iniciada, o estilo escolhido seja lido do arquivo INI e aplicado na mesma.

Show de bola, e aqui concluo mais um artigo, abraço a todos que nos acompanham e até o próximo.

https://www.clipatecinformatica.com.br/2015/02/alterar-style-aplicacao-em-tempo-de-execucao-delphi.html 4/4

Vous aimerez peut-être aussi