Fórum Problemas com form abrindo com SHOW e depois ShowModal #574636
06/02/2017
0
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
Curtir tópico
+ 0Posts
06/02/2017
Alberto
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
06/02/2017
Luiz Vichiatto
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
07/02/2017
Alberto
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
08/02/2017
Luiz Vichiatto
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
08/02/2017
Alberto
.
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
08/02/2017
Luiz Vichiatto
---------------------------
Error
---------------------------
File C:\\\\Fontes\\\\Delphi\\\\Dprojects\\\\Componentes_PE\\\\Delphi7\\\\TranspearXP\\\\magrascon.pas not found
---------------------------
OK
---------------------------
Gostei + 0
09/02/2017
Luiz Vichiatto
Agora vem ocasionar este erro, como identifico e corrijo?
---------------------------
Error
---------------------------
File C:\\\\\\\\Fontes\\\\\\\\Delphi\\\\\\\\Dprojects\\\\\\\\Componentes_PE\\\\\\\\Delphi7\\\\\\\\TranspearXP\\\\\\\\magrascon.pas not found
---------------------------
OK
---------------------------
Gostei + 0
13/02/2017
Luiz Vichiatto
Estou tentando resolver mas sem sucesso.
Gostei + 0
13/02/2017
Alberto
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
Clique aqui para fazer login e interagir na Comunidade :)