Olá pessoal, vamos ver aqui um artigo de Delphi que ensina um componente não muito explorado pelos desenvolvedores, porém com a mudança de sistema operacional, ou seja, do Windows XP para o Vista e agora o Windows 7, este componente acabou precisando de mais um recursos para funcionar, o componente em questão é o TAnimate, localizado na palheta Win32. Podemos encontrar este componente declarado na unit ComCtrls da nossa VCL.
Qual é o objetivo deste componente?
O objetivo é exibir uma animação quando estamos executando um determinado método muito demorado ou nem tanto, mas o intuído é avisar ao usuário que algo está sendo processado.
Vamos entender um pouco as propriedades deste componente:
- Active: Essa propriedade tem o objetivo de ativar ou desativar a animação do componente;
- CommonAVI: Essa propriedade tem o objetivo de selecionarmos qual a animação que desejamos visualizar, com base em animações predefinidas. Podemos notar que esta propriedade é do tipo TCommonAVI que nada mais é do que um Enumerado com as seguintes opções: aviNone, aviFindFolder, aviFindFile, aviFindComputer, aviCopyFiles, aviCopyFile, aviRecycleFile, aviEmptyRecycle, aviDeleteFile;
- FileName: Essa propriedade tem o objetivo de definir um .avi personalizado(junto com o código fonte deste post você pode encontrar um .avi para fazer o teste. Além também de poder criar os seus próprios .avi)
- Repetitions: Essa propriedade tem o objetivo definir o número de vezes que a animação irá ser executada, caso esteja como 0, ela será ficará em repetição contínua. Caso você definia como 3, por exemplo, logo após a mesma ser executada o método onStop é executado;
Métodos
- onClose: Esse método é invocado quando usamos o método reset, mas antes dele é executado automaticamente o método onStop;
procedure TForm1.Button1Click(Sender: TObject); begin Animate1.Reset; end;
- onOpen: Esse método é invocado quando instanciamos o formulário onde o TAnimado está;
- onStart: Esse método é invocado quando mandamos ativamos a animação;
procedure TForm1.CheckBox1Click(Sender: TObject); begin if CheckBox1.Checked then Animate1.Active := True else Animate1.Active := False; end;
- onStop: Esse método é invocado quando instanciamos o formulário onde o TAnimado está ou então invocamos o método Stop;
procedure TForm1.Button1Click(Sender: TObject); begin Animate1.Stop; end;
Note que este método também é executado quando instanciamos o formulário que se encontra o TAnimate, sendo assim cuidado com o que você coloca neste método, pois assim que for iniciado o mesmo será executado também.
Uma coisa interessante para comentarmos sobre o TAnimate, é que sua animação não irá ser “interrompida”, caso uma mensagem apareça em Modal, ou até mesmo um formulário, veja na figura abaixo o que estou querendo dizer:
Agora depois de mostrar as principais propriedades e métodos do TAnimate, temos agora a curiosidade que gerou este artigo, ele não funciona no Windows 7 ou Windows Vista, como resolver então?
Basta adicionarmos na nossa clausula uses na unit ShellAnimations, por isso você encontra também na palheta Win32 o componente TShellResources, que tem por finalidade declarar apenas esta uses.
Vamos fazer um teste, usando o o Windows XP, se você tiver é claro, adicione um TAnimate e ative o mesmo, execute esta sua aplicação, veja que funciona, sem problema algum. Pegue este mesmo executável e abra no Windows 7, você verá que não funciona. Pra resolver isso basta você seguir o passo sugerido acima, nada o impede de apagar o TShellResources depois de ter compilado novamente sua aplicação, pois sua funcionalidade é apenas esta, declarar a uses.
Bom vou ficando por aqui, um abraço e até o nosso próximo artigo.