Fórum Fechar e abrir formulários criados em tempo de execução #255971

25/10/2004

0

Bom pessoal,

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

Jrjoliv2003

Responder

Posts

26/10/2004

Gilvanj

> Primeiro problema é como a tela está em showmodal não consigo ter
> 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


Responder

Gostei + 0

26/10/2004

Jrjoliv2003

Em relação ao primeiro problema, eu teste colocar somente show mas o form não abriu.


Vc teria um exemplo em relação ao segundo problema.

Valeu a força !!!

JR.


Responder

Gostei + 0

26/10/2004

Jrjoliv2003

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;

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.


Responder

Gostei + 0

26/10/2004

Paulo_amorim

Olá

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é+


Responder

Gostei + 0

26/10/2004

Jrjoliv2003

Essa linha Screen.CustomFormCount verifica a qunatidade forms abertos é isso? Ordem dos forms abertos?


Valeu a força!!!

JR.


Responder

Gostei + 0

27/10/2004

Paulo_amorim

Essa linha Screen.CustomFormCount verifica a qunatidade forms abertos é isso? Ordem dos forms abertos?


Olá

Essa linha eh uma repetição para fechar todos os forms abertos

Até+


Responder

Gostei + 0

28/10/2004

Jrjoliv2003

Resumindo ficou assim:

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.


Responder

Gostei + 0

28/10/2004

Jrjoliv2003

Nem tudo saiu como esperava. A resposta acima foi um teste que fiz em um projeto de teste.
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.


Responder

Gostei + 0

28/10/2004

Jrjoliv2003

Nem tudo saiu como esperava. A resposta acima foi um teste que fiz em um projeto de teste.
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.


Responder

Gostei + 0

29/10/2004

Jrjoliv2003

Nem tudo saiu como esperava. A resposta acima foi um teste que fiz em um projeto de teste.
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.


Responder

Gostei + 0

30/10/2004

Jrjoliv2003

Nem tudo saiu como esperava. A resposta acima foi um teste que fiz em um projeto de teste.
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.


Responder

Gostei + 0

30/10/2004

Jrjoliv2003

Pessoal

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar