GARANTIR DESCONTO

Fórum Trocar style vcl em tempo de execução #460104

03/11/2013

0

Olá,

Estou com dificuldades em trocar o Style do meu aplicativo em tempo de execução. Gostaria de criar a possibilidade do usuário trocar o tema do aplicativo durante a execução do aplicativo e também a possibilidade de que o usuário defina uma delas como padrão a seu gosto.

Antes de tudo, estou usando o xe4.

Eu fiz assim:

primeiro fui no Project > options > application > appearence > custom stules. Lá eu defini quais eu quero como disponíveis.

segundo, defini o style Windows como default.

terceiro, coloquei em um combobox a lista de temas que marquei que estariam disponíveis.

quarto, coloquei este comando no meu button: TStyleManager.TrySetStyle(ComboBox1.Text);
Obs: já declarei no uses o Vcl.Themes e Vcl.styles.

Mas fica dando vários erros, as vezes o programa desaparece, aí eu tenho que ir no gerenciador de tarefas e finalizar ele por lá.

Li que é possível fazer um array para pegar a lista de styles disponíveis no projeto e coloca-lo em uma lista para o usuário visualizar e também trocar o style default.

Estou meio perdido neste processo e solicito uma ajuda dos companheiros experientes.

Encontrei um código fuçando a internet, mas este necessita que eu mande junto com o executável uma lista de styles, se eu pudesse pegar a lista de styles que eu já defini como disponíveis no projeto e assim eu poderia mandar ao usuário somente o executável com tudo dentro de um único arquivo, isso seria perfeito.

Desde já agradeço a atenção.

Glaidson Pezavento.

Glaidson Pezavento.

Responder

Post mais votado

12/09/2015

Comigo esse código funcionou... boa sorte!
uses
  Vcl.Themes;
.
.
.

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  TStyleManager.TrySetStyle(ComboBox1.Items[ComboBox1.ItemIndex]);
end;



procedure TForm1.FormShow(Sender: TObject);
var
  s: String;
begin
  ComboBox1.Items.BeginUpdate;
  try
    ComboBox1.Items.Clear;
    for s in TStyleManager.StyleNames do
       ComboBox1.Items.Add(s);
    ComboBox1.Sorted := True;
    // Select the style that's currently in use in the combobox
    ComboBox1.ItemIndex := ComboBox1.Items.IndexOf(TStyleManager.ActiveStyle.Name);
  finally
    ComboBox1.Items.EndUpdate;
  end;
end;

Paulo Lima

Paulo Lima
Responder

Gostei + 3

Mais Posts

05/11/2013

Glaidson Pezavento.

E aí pessoal alguém pode ajudar o companheiro aqui?
Responder

Gostei + 0

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

Aceitar