Boa Tarde!!
No meu projeto, alguns forms são criados normalmente junto com a inicialização. da aplicação. O padrão do Delphi.
Só que, o resto dos forms ( a grande maioria), são criados em tempo de execução por um click de um botão de um RIBBON.
if Form34NotafiscalEntrada = nil then
begin
//Form34NotafiscalEntrada := TForm34NotafiscalEntrada.Create(Self);
Application.CreateForm(TForm34NotafiscalEntrada,Form34NotafiscalEntrada);
SetWindowLong(Form34NotafiscalEntrada.Handle, GWL_ExStyle, GetWindowLong(Form34NotafiscalEntrada.Handle, GWL_ExStyle)or
WS_EX_AppWindow);
//Form34NotafiscalEntrada.show;
SetWindowPos(Form34NotafiscalEntrada.Handle, HWND_TOP, 0, 0, 0, 0,
SWP_NOACTIVATE or
SWP_NOMOVE or SWP_NOSIZE or SWP_SHOWWINDOW);
Form34NotafiscalEntrada.WindowState:=wsMaximized;
Form34NotafiscalEntrada.Show;
end;
end;
No evento do OnClose de cada formulário criado em tempo de execução:
Form34NotafiscalEntrada.Release;
Form34NotafiscalEntrada.Free;
Form34NotafiscalEntrada := nil;
A questão é que, em um botão login, gostaria de fechar todos os formulários abertos, criados na inicialização do Projeto, ou em tempo de execução pelo click do atalho do Ribbon....
Estou usando o seguinte código para fechar:
for n:=0 to Application.ComponentCount-1 do
if Application.Components[n] is TForm then
if not(TForm(Application.Components[n]) = Application.MainForm) then
if TForm(Application.Components[n]).Showing then TForm(Application.Components[n]).Close;
Seguindo estes passos, estou com problemas, pois, ele não fecha todos os forms criados e tempo de execução, e ainda ocorre uns erros e tals. ( E pelo que observei os que são criados na inicialização da aplicação fecha normalmente)>
//Meu form Principal é o de Login.
Desde já muito obrigado.
Abraços !!!