Informações pessoais Informações Pessoais
Ciência e Tecnologia Ciência e Tecnologia
Embarcadero Delphi Delphi
Para Sua Área Profissional Área Profissional

 

Delphi Delphi

Pgina sobre a Linguagem
de programao da Embarcadero

Como Esmaecer um Formulrio

24-09-2010

Caixas de dilogo usadas para exibir informaes crticas ao usurio so, na maioria dos casos, do tipo modal. Ou seja, o usurio no consegue retornar o foco janela principal sem antes clicar em uma opo da janela atual. o caso, por exemplo, das caixas de mensagem ShowMessage, InputBox e MessageBox, que mostram alguma informao ao usurio e esperam por alguma ao.

Em nossas aplicaes, usamos muito formulrios configurados como modais para impedir que o usurio tenha acesso ao form principal sem antes tomar uma deciso sobre um determinado assunto.

Para enfatizar para o usurio a importncia daquela janela modal que acabou de surgir, voc pode tornar a janela principal esmaecida. Veja como atribuir um efeito de esmaecer ao seu form principal sempre que uma janela modal aparecer na tela. Crie um novo projeto no Delphi, adicione um segundo formulrio a ele, e coloque um componente  ApplicationEvents no form principal. O que precisaremos fazer aqui manipular os eventos OnModalBegin e OnModalEnd do objeto TApplicationEvents. Este segundo formulrio que nos ajudar a esmaecer o Form1.

O Form2 criado logo no incio da aplicao. Mas, como ele no o form principal, ele no estar visvel inicialmente.

Por isso, a procedure Display alinhar o form2 sobre o principal e ser mostrado antes que qualquer janela modal possa aparecer. Ns faremos isso usando o evento OnModalBegin do componente ApplicationEvent. Em contrapartida, o evento OnModalEnd garantir que o form2 desaparea quando no for mais necessrio.

 procedure TForm2.FormCreate(Sender: TObject) ;

 begin

   AlphaBlend := true;

   AlphaBlendValue := 128;

   BorderStyle := bsNone;

 end;

Acima est o cdigo do evento OnCreate do form2. Usando a propriedade AlphaBlend em conjunto com AlphaBlendValue voc pode tornar qualquer formulrio translcido. Como ele ser mostrado sobre o form principal, estamos providenciando para que este segundo form cause o efeito de esmaecimento sobre o primeiro. Note tambm a propriedade BorderStyle: ela garante que, ao ser configurada para bsNone, o form elimine suas bordas (inclusive a barra de ttulo).

A procedure Display alinha o form2 sobre o form principal:

 

 procedure TForm2.Display;

 begin

   with Self do

   begin

     Left := MainForm.Left;

     Top := MainForm.Top;

     Width := MainForm.Width;

     Height := MainForm.Height;

 

     Show;

   end;

 end;

Finalmente, vamos implementer os eventos OnModalBegin e OnModalEnd:

 

 procedure TForm1.ApplicationEvents1ModalBegin(Sender: TObject) ;

 begin

   DimmerForm.Display;

 end;

 

 procedure TForm1.ApplicationEvents1ModalEnd(Sender: TObject) ;

 begin

   DimmerForm.Hide;

 end;

Pronto. Agora, para testar. coloque um boto qualquer no seu form principal e, em seu evento OnClick,
adicione este cdigo:

 

 procedure TForm1.Button1Click(Sender: TObject) ;

 begin

   ShowMessage(Teste de janela modal com form1 esmaecido);

 end;


Rode seu aplicativo e clique no boto para ver o efeito.

Fonte: ASMC


Usando Virtual-Key Codes - 27-03-2015

Usando a classe TDictionary - 26-03-2015

Sua Primeira Aplicao FireMonkey - 22-03-2015

Efeitos de imagem no Delphi - 22-03-2015

Timer: criando um cronmetro - 10-09-2013

Criando um Tocador de udio com Playlist - 03-09-2013

Criando um Navegador Web com TWebBrowser - 03-09-2013

Personalizando o DBNavigator - 01-09-2013

Procure um assunto especfico:  

 

  - Todos os artigos -