Fórum Fechar e abrir formulários criados em tempo de execução #255971
25/10/2004
0
hoje (25/10/2004) foi minha pré-apresentação de projeto final.
Tenho algumas exigências mas tem uma que preciso de ajuda.
Meus formulários são abertos pelo menu ou por uma barra vertical localizada na parte
esquerda da tela (Barra do Outlook).
Quando clico em uma opção a tela é aberta da seguinte forma, por exemplo:
Application.CreateForm(TFormContatos, FormContatos);
formcontatos.ShowModal;
FormContatos.Destroy;
A exigência é a seguinte: se o usuário quiser ativar uma outra tela ele poderá abrir a
tela desejada. A primeira precisa fechar automaticamente e a tela requisitada será aberta.
Primeiro problema é como a tela está em showmodal não consigo ter acesso ao restante dos menus e da barra vertical.
Segundo problema como eu posso saber qual é a tela que está aberta para poder fechar.
Quem puder ajudar !!!
Valeu a força !!!
JR.
Jrjoliv2003
Curtir tópico
+ 0Posts
26/10/2004
Gilvanj
> acesso ao restante dos menus e da barra vertical.
Por que vc não usa o método Show, ao invés de ShowModal ?
> Segundo problema como eu posso saber qual é a tela que está aberta > para poder fechar.
Vc pode acessar as forms ativas da aplicação com o objeto Screen, através da propriedade Forms, que é uma array com todas as telas da aplicação
Gostei + 0
26/10/2004
Jrjoliv2003
Vc teria um exemplo em relação ao segundo problema.
Valeu a força !!!
JR.
Gostei + 0
26/10/2004
Jrjoliv2003
esquerda da tela (Barra do Outlook).
Quando clico em uma opção a tela é aberta da seguinte forma, por exemplo:
Application.CreateForm(TFormContatos, FormContatos);
formcontatos.ShowModal;
FormContatos.Destroy;
gostaria que se o usuário quiser ativar uma outra tela ele poderá abrir a
tela desejada. A primeira precisa fechar automaticamente e a tela requisitada será aberta.
Primeiro problema é como a tela está em showmodal não consigo ter acesso ao restante dos menus e da barra vertical.
Segundo problema como eu posso saber qual é a tela que está aberta para poder fechar.
Quem puder ajudar !!!
Valeu a força !!!
JR.
Gostei + 0
26/10/2004
Paulo_amorim
Seus formulários não aparecem com o comando Show pois vc os destrói logo depois
:idea: Não use Form.Destroy! Use Form.Free ou Form.Release ao invés
Para consertar isso, coloque no OnClose do teu form
Action := caFree;
Para fechar os abertos, na chamada do teu form faça:
for i := 0 to Screen.CustomFormCount-1 do
begin
{ O Form principal fica aberto, né!!! }
if Screen.CustomForms[i] <> Application.MainForm then
Screen.CustomForms[i].Close;
end;
MeuForm := TMeuform.Create(Self);
MeuForm.Show;Esse negócio de usar a variável TScreen eu não conhecia, aprendi agora...então qualquer coisa posta ae que a gente conserta!
Espero que ajude
Até+
Gostei + 0
26/10/2004
Jrjoliv2003
Valeu a força!!!
JR.
Gostei + 0
27/10/2004
Paulo_amorim
Olá
Essa linha eh uma repetição para fechar todos os forms abertos
Até+
Gostei + 0
28/10/2004
Jrjoliv2003
form principal com a propriedade FormStyle = fsMDIForm
os outros forms com a propriedade FormStyle = fsMDIChild
Para abrir o form:
Application.CreateForm(TForm2, Form2);
form2.show;
Para liberar o form:
evento on close => Action:= caFree;
Procurar e fechar os forms aberto:
procedure TForm1.fecharforms;
var
i:integer;
begin
for i := 0 to Screen.CustomFormCount-1 do
if Screen.CustomForms[i] Application.MainForm then
Screen.CustomForms[i].Close;
end;
Valeu a força!!!
JR.
Gostei + 0
28/10/2004
Jrjoliv2003
No meu projeto está acontecendo alguns probleminhas.
quando o projeto abre aparece uma tela de splash (mainform);
a seguir uma tela de login de usuário;
após o login a tela principal (está como fsMDIForm);
quando clico em uma opção para ativar uma tela, aparece esse erro:
´Cannot create form. No MDI forms are currently active.´
Não entendo. Não é possível criar o form pq o MDIForm não está ativo. É isso?
Valeu a força!!!
JR.
Gostei + 0
28/10/2004
Jrjoliv2003
No meu projeto está acontecendo alguns probleminhas.
quando o projeto abre aparece uma tela de splash (mainform);
a seguir uma tela de login de usuário;
após o login a tela principal (está como fsMDIForm);
quando clico em uma opção para ativar uma tela, aparece esse erro:
´Cannot create form. No MDI forms are currently active.´
Não entendo. Não é possível criar o form pq o MDIForm não está ativo. É isso?
Valeu a força!!!
JR.
Gostei + 0
29/10/2004
Jrjoliv2003
No meu projeto está acontecendo alguns probleminhas.
quando o projeto abre aparece uma tela de splash (mainform);
a seguir uma tela de login de usuário;
após o login a tela principal (está como fsMDIForm);
quando clico em uma opção para ativar uma tela, aparece esse erro:
´Cannot create form. No MDI forms are currently active.´
Não entendo. Não é possível criar o form pq o MDIForm não está ativo. É isso?
Valeu a força!!!
JR.
Gostei + 0
30/10/2004
Jrjoliv2003
No meu projeto está acontecendo alguns probleminhas.
quando o projeto abre aparece uma tela de splash (mainform);
a seguir uma tela de login de usuário;
após o login a tela principal (está como fsMDIForm);
quando clico em uma opção para ativar uma tela, aparece esse erro:
´Cannot create form. No MDI forms are currently active.´
Não entendo. Não é possível criar o form pq o MDIForm não está ativo. É isso?
Valeu a força!!!
JR.
Gostei + 0
30/10/2004
Jrjoliv2003
Obtive alguns progressos na minha dúvida em trabalhar com form MDI.
Coloquei o formPrincipal como MainForm.
Coloquei os outros forms como MDIChild.
O form de splash coloquei como formsplah.show na inicialização.
Logo após é aberto o formlogin como showmodal.
Só que tenho dois problemas:
1 - Os form que precisam ser criados na inicialização estão aparecendo junto com a tela de login;
Trabalho com form pai e filho.
2 - Abro um form normalmente. Apartir da segunda vez em diante o form sempre aparece mais abaixo e a esquerda.
Como fixar o form em uma posição.
Valeu a força!!!
JR.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)