Problemas com form abrindo com SHOW e depois ShowModal
Olá!
Estou com um problema que não estou conseguindo resolver e solicitando o auxilio deste forum!
No delphi 7.
Fiz alterações em um item que realiza conexões e downloads e beleza está funcionando.
Na aplicação há um form (frmTransmissao) que é acionado por SHOW e no final é ocultado com visible := false, e depois acionado novamente com SHOWMODAL.
O problema é que o frmTransmissao.SHOWMODAL, oculta a tela frmMain (principal) .
Já debuguei toda a parte da aplicação que aciona a partir do ponto de chamada do frmTranasmissao e não há nada que faça com que faça tal situação, já verifiquei as configurações dos FORMs com a versão que está funcionando e está idêntica.
Quando estou em outra aplicação e retorno a aplicação, no final do processo e a frmTranasmisao e aciona o SHOWMODAL é que o problema acontece, sumindo a tela principal e para recuperar tenho que ir para outra aplicação e voltar,
Obrigado pela atenção!
Ps.: Tentei modificar a abertura do frmTransmissao para showmodal e a aplicação parou, há muito código do no frmMain após a chamada do formTransmissao.
Estou com um problema que não estou conseguindo resolver e solicitando o auxilio deste forum!
No delphi 7.
Fiz alterações em um item que realiza conexões e downloads e beleza está funcionando.
Na aplicação há um form (frmTransmissao) que é acionado por SHOW e no final é ocultado com visible := false, e depois acionado novamente com SHOWMODAL.
O problema é que o frmTransmissao.SHOWMODAL, oculta a tela frmMain (principal) .
Já debuguei toda a parte da aplicação que aciona a partir do ponto de chamada do frmTranasmissao e não há nada que faça com que faça tal situação, já verifiquei as configurações dos FORMs com a versão que está funcionando e está idêntica.
Quando estou em outra aplicação e retorno a aplicação, no final do processo e a frmTranasmisao e aciona o SHOWMODAL é que o problema acontece, sumindo a tela principal e para recuperar tenho que ir para outra aplicação e voltar,
if bReconectarAutomaticamente then
begin
frmTransmissao.Visible := True;
bbtnCancelar.Click;
end
else ////encontrei!!!
Application.ProcessMessages;
ShowModal; //Neste ponto some o frmMain ou form otik
Application.ProcessMessages;
Obrigado pela atenção!
Ps.: Tentei modificar a abertura do frmTransmissao para showmodal e a aplicação parou, há muito código do no frmMain após a chamada do formTransmissao.
Luiz Vichiatto
Curtidas 0
Respostas
Alberto
06/02/2017
Você entende a diferença entre Show e ShowModal ?
Show - o form é mostrado mas o processamento continua, ou seja, ele sai do form e continua executar as linhas seguintes a chamada do Show
.
Exemplo:
frmTransmissao.show;
IF <condicao> then
Codigo....;
No show ele mostra o form e em seguida já executa a linha do IF e vai executar o que estiver abaixo até parara em algum ponto.
.
.
ShowModal - Mostra o form e fica processando as rotinas internas do Form, sem sair dele.
Exemplo.
.
frmTransmissao.showModal;
IF <condicao> then
Codigo....;
Nesse caso o IF só vai ser executado quando o frmTransmissão fechar com frmTransmissão.Close
ou outro comando que o encerre.
.
.
Então no seu programa você tem que saber o que voce quer fazer, e assim chamar de forma condizente o seu formulario
como Show ou ShowModal.
.
Caso ainda tenha duvidas só perguntar.
Show - o form é mostrado mas o processamento continua, ou seja, ele sai do form e continua executar as linhas seguintes a chamada do Show
.
Exemplo:
frmTransmissao.show;
IF <condicao> then
Codigo....;
No show ele mostra o form e em seguida já executa a linha do IF e vai executar o que estiver abaixo até parara em algum ponto.
.
.
ShowModal - Mostra o form e fica processando as rotinas internas do Form, sem sair dele.
Exemplo.
.
frmTransmissao.showModal;
IF <condicao> then
Codigo....;
Nesse caso o IF só vai ser executado quando o frmTransmissão fechar com frmTransmissão.Close
ou outro comando que o encerre.
.
.
Então no seu programa você tem que saber o que voce quer fazer, e assim chamar de forma condizente o seu formulario
como Show ou ShowModal.
.
Caso ainda tenha duvidas só perguntar.
GOSTEI 0
Luiz Vichiatto
06/02/2017
Ok, isso entendo.....
O que programaram neste ponto foi
- abre o formulário frmTransmite com SHOW
- processa no formulário e processa no formulario frmMain (sem encerrar o frmTransmite) (???)
- retorna novamente ao frmTransmite
- encerra o processamento (frmTransmite.visible:=false), retorna para o frmMain
- (neste ponto ele oculta a minha frmMain) quando ele vai encerrar o frmTransmite e abre com frmTransmite.SHOWMODAL
- aguarda o clique do botão para encerrar o frmTransmite
com isto não consigo exibir novamente o frmMain, somente quando alterno para outro programa, e depois retorno a aplicação
Não fui eu que programei este item, isso não acontecia até a versão anterior, porém, não fiz qualquer alteração nas chamadas entre os forms.
Pior que se compilo a versão anterior problema passa a ocorrer.
O que programaram neste ponto foi
- abre o formulário frmTransmite com SHOW
- processa no formulário e processa no formulario frmMain (sem encerrar o frmTransmite) (???)
- retorna novamente ao frmTransmite
- encerra o processamento (frmTransmite.visible:=false), retorna para o frmMain
- (neste ponto ele oculta a minha frmMain) quando ele vai encerrar o frmTransmite e abre com frmTransmite.SHOWMODAL
- aguarda o clique do botão para encerrar o frmTransmite
com isto não consigo exibir novamente o frmMain, somente quando alterno para outro programa, e depois retorno a aplicação
Não fui eu que programei este item, isso não acontecia até a versão anterior, porém, não fiz qualquer alteração nas chamadas entre os forms.
Pior que se compilo a versão anterior problema passa a ocorrer.
GOSTEI 0
Alberto
06/02/2017
vc quer dizer que:
1 - quando executa o Showmodal vc não consegue ver o frmMain porque o frmTransmite cobriu totalmente o frmMain?
2 - quando executa o showmodal o frmTransmite não cobre totalmente o frmMain e vc vê o frmMain desaparecendo da tela?
1 - quando executa o Showmodal vc não consegue ver o frmMain porque o frmTransmite cobriu totalmente o frmMain?
2 - quando executa o showmodal o frmTransmite não cobre totalmente o frmMain e vc vê o frmMain desaparecendo da tela?
GOSTEI 0
Luiz Vichiatto
06/02/2017
Quase isso,
1) Se executo o frmTransmite com SHOW consigo ver o frmMain;
2) Quando passo o frmTransmite para SHOWMODAL o frmMain desaparece, retorna somente se eu clicar em outra aplicação e depois retornar....
1) Se executo o frmTransmite com SHOW consigo ver o frmMain;
2) Quando passo o frmTransmite para SHOWMODAL o frmMain desaparece, retorna somente se eu clicar em outra aplicação e depois retornar....
GOSTEI 0
Alberto
06/02/2017
Mas quando executa em showmodal esse form cobre totalmente o frmMain ? Porque quando o form é executado em ShowModal, ele não permite que vc acesse nenhuma outra tela (form) da sua aplicação, até que ele seja encerrado.
.
outra coisa.
.
Vc Cria o Form (só uma vez)
Mostra o form com Show
Depois vc deve fechar com Close e não mudar para visible=false;
O form continua criado
Depois vc pode exibi-lo novamente com Show (ou ShowModal)
Da close novamente
Se não for mais utilizar faz Form.Free (isso elimina o form da memoria e caso queira utilizar novamente dai tem que criar o form novamente)
.
outra coisa.
.
Vc Cria o Form (só uma vez)
Mostra o form com Show
Depois vc deve fechar com Close e não mudar para visible=false;
O form continua criado
Depois vc pode exibi-lo novamente com Show (ou ShowModal)
Da close novamente
Se não for mais utilizar faz Form.Free (isso elimina o form da memoria e caso queira utilizar novamente dai tem que criar o form novamente)
GOSTEI 0
Luiz Vichiatto
06/02/2017
O problema está em um arquivo
---------------------------
Error
---------------------------
File C:\\\\Fontes\\\\Delphi\\\\Dprojects\\\\Componentes_PE\\\\Delphi7\\\\TranspearXP\\\\magrascon.pas not found
---------------------------
OK
---------------------------
---------------------------
Error
---------------------------
File C:\\\\Fontes\\\\Delphi\\\\Dprojects\\\\Componentes_PE\\\\Delphi7\\\\TranspearXP\\\\magrascon.pas not found
---------------------------
OK
---------------------------
GOSTEI 0
Luiz Vichiatto
06/02/2017
Como é que resolvo este problema, se o componente está instalado e todos os itens a ele relacionado está OK!
Agora vem ocasionar este erro, como identifico e corrijo?
Agora vem ocasionar este erro, como identifico e corrijo?
O problema está em um arquivo
---------------------------
Error
---------------------------
File C:\\\\\\\\Fontes\\\\\\\\Delphi\\\\\\\\Dprojects\\\\\\\\Componentes_PE\\\\\\\\Delphi7\\\\\\\\TranspearXP\\\\\\\\magrascon.pas not found
---------------------------
OK
---------------------------
---------------------------
Error
---------------------------
File C:\\\\\\\\Fontes\\\\\\\\Delphi\\\\\\\\Dprojects\\\\\\\\Componentes_PE\\\\\\\\Delphi7\\\\\\\\TranspearXP\\\\\\\\magrascon.pas not found
---------------------------
OK
---------------------------
GOSTEI 0
Luiz Vichiatto
06/02/2017
A falto do arquivo foi resolvido, porém o problema persiste.
Estou tentando resolver mas sem sucesso.
Estou tentando resolver mas sem sucesso.
GOSTEI 0
Alberto
06/02/2017
Se essa unit for um componente visual, talvez você tenha que instalar o componente.
Ou ADICIONAR a unit ao seu projeto (não simplesmente abrir, tem que ser adicionar)
Ou talvez o caminho da unit tenha que estar em OPTIONS-LIBRARY
Uma dessas tres alternativas ou talvez todas elas, resolva o problema.
Ou ADICIONAR a unit ao seu projeto (não simplesmente abrir, tem que ser adicionar)
Ou talvez o caminho da unit tenha que estar em OPTIONS-LIBRARY
Uma dessas tres alternativas ou talvez todas elas, resolva o problema.
GOSTEI 0