Delphi | Pgina
sobre a Linguagem |
Como Esmaecer um Formulrio24-09-2010
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,
procedure
TForm1.Button1Click(Sender: TObject) ;
begin
ShowMessage(Teste
de janela modal com form1 esmaecido);
end; Fonte: ASMC |