Logoff - Verificar janelas ativas e fechá-las.
Pesquisei e não achei nada parecido com o que pretendo fazer.
Como eu poderia verificar todas as janelas que estão abertas(ativas) num programa e fechá-las e abrir o formulario de login.
MAS sem fechar todo o sistema e abrir de novo...
Desde já agradeço pela atenção....
Diego
[color=green:f2fbe92afd]Título editado por gandalf.nho. Favor não postar em maiúsculas[/color:f2fbe92afd]
Como eu poderia verificar todas as janelas que estão abertas(ativas) num programa e fechá-las e abrir o formulario de login.
MAS sem fechar todo o sistema e abrir de novo...
Desde já agradeço pela atenção....
Diego
[color=green:f2fbe92afd]Título editado por gandalf.nho. Favor não postar em maiúsculas[/color:f2fbe92afd]
Diegus
Curtidas 0
Respostas
Tremonti
27/07/2005
Tenta isso cara...
procedure TfrmPrincipal.FecharForms(const FormLivre: array of TForm);
var
vC, vX : integer;
vFech : Boolean;
begin
for vC := Screen.FormCount-1 DownTo 0 do
Begin
vFech := True;
for vX := Low(FormLivre) to High(FormLivre)do
if Screen.Forms[vC] = FormLivre[vX] then
vFech := False;
if vFech then
if Screen.Forms[vC].Showing then
begin
Screen.Forms[vC].Visible := False; //Rotina para deixar Invisivel
Screen.Forms[vC].Close;
Screen.Forms[vC].Action.Free; // Rotina para Limpar da memória
end;//IF
end;//For vC
end;
procedure TfrmPrincipal.FecharForms(const FormLivre: array of TForm);
var
vC, vX : integer;
vFech : Boolean;
begin
for vC := Screen.FormCount-1 DownTo 0 do
Begin
vFech := True;
for vX := Low(FormLivre) to High(FormLivre)do
if Screen.Forms[vC] = FormLivre[vX] then
vFech := False;
if vFech then
if Screen.Forms[vC].Showing then
begin
Screen.Forms[vC].Visible := False; //Rotina para deixar Invisivel
Screen.Forms[vC].Close;
Screen.Forms[vC].Action.Free; // Rotina para Limpar da memória
end;//IF
end;//For vC
end;
GOSTEI 0
Diegus
27/07/2005
Tenta isso cara...
procedure TfrmPrincipal.FecharForms(const FormLivre: array of TForm);
var
vC, vX : integer;
vFech : Boolean;
begin
for vC := Screen.FormCount-1 DownTo 0 do
Begin
vFech := True;
for vX := Low(FormLivre) to High(FormLivre)do
if Screen.Forms[vC] = FormLivre[vX] then
vFech := False;
if vFech then
if Screen.Forms[vC].Showing then
begin
Screen.Forms[vC].Visible := False; //Rotina para deixar Invisivel
Screen.Forms[vC].Close;
Screen.Forms[vC].Action.Free; // Rotina para Limpar da memória
end;//IF
end;//For vC
end;
Quando eu clicar no Botão LOGOFF... como eu devo chamar este procedimento? :D
Valeu amigo pela atenção..
GOSTEI 0
Tremonti
27/07/2005
Informe os forms que vc quer que nao feche
Exemplo
FecharForms([form1, form2]);
Pronto!!!
Exemplo
FecharForms([form1, form2]);
Pronto!!!
GOSTEI 0
Titanius
27/07/2005
Se for MDI, tente
[]s
procedure TFrmPrincipal.CloseAll; var I: Integer; begin for I := MDIChildCount - 1 downto 0 do MDIChildren[I].Close; end;
[]s
GOSTEI 0
Diegus
27/07/2005
Informe os forms que vc quer que nao feche
Exemplo
FecharForms([form1, form2]);
Pronto!!!
Eu fiz um teste... adicionei 4 formulários... criei primeiramente o form2 (abrir sozin), com um botão chamando todos os outros forms... adicionei a procedure que vc me falou. Tem tb um botão chamando a rotina que vc me passou... FecharForms ([FecharForms([form1]). Mas quando clico no botão no form1 fecham todas as janelas e finaliza o programa... q q fiz de errado.
GOSTEI 0