Fórum Delphi: Como exibir o form com .Show e depois torna-lo Modal (simular o .ShowModal) #547368
01/03/2016
0
Através do Form1 preciso abrir o Form2, enviar alguns comandos pra ele, e depois esperar uma resposta (um ModalResult).
Obs: Não posso enviar variável pois são muitos procedimentos.E não posso usar o Form1 dentro do Form2 pois o Form2 é universal e é usado em vários projetos.
Alguém tem uma luz de como eu poderia fazer isso?
Exemplo de como eu gostaria que fosse:
Form2.Create(Form1);
Form2.Show;
Form2.btnIncluir.Click;
Form2.qrProduto.FieldByName('CODBARRA').AsString := Form1.qrItem.FieldByName('vEAN').AsString;
Form2.qrProduto.FieldByName('NOME').AsString := Form1.qrItem.FieldByName('xNome').AsString;
Form2.EditExemplo.SetFocus;
//Feito isso eu precisaria esperar um mrOk ou mrCancel do Form2
Ex:
if Form2.ShowModal=mrOk then
begin
end;
Só que se eu der o ShowModal ele já está visivel e dá erro.
Algo teria uma luz para essa dúvida meio louca? rs
Maicon Saraiva
Curtir tópico
+ 1Posts
01/03/2016
Eliezer Souza
Gostei + 0
01/03/2016
Raimundo Pereira
Form1.qrItem.FieldByName('xNome').AsString;
Porque não usa o datamodule.
precisa mesmo que o Form2 esteja em modal ?
Mais se realmente quiser seguir a linha antes do onshow você deve fechalo ou no proprio form2
Form2.close;
form2.ShowModal;
Os dados no form2 serão preservados
Espero que ajude.
Gostei + 0
02/03/2016
Emerson Nascimento
Gostei + 0
03/03/2016
Maicon Saraiva
Tipo eu não uso data modulo. meu "qrproduto" fica dentro do Form2. e preciso em dado momento manipular ele, mas preciso que o usuário confirme ou cancela essa manipulação, por isso preciso do ShowModal e verificou se retornou mrOk.
Bom fiz da seguinte forma:
- No evento "OnShow" do Form 2 tinha uns códigos que só poderiam ser executados uma vez, então coloquei uma variável "ShowAgain" e esse códigos executam de acordo com o valor dela.
Então fica assim:
- Crio o Form2.
- Dou o .Show;
- Faço as operações no Form2, como btnInserirClick(), qrproduto.FieldByName().AsString := '', etc.
- Depois disso eu dou um .Hide no form 2;
- Defino o valor da variavel "ShowAgain" para True;
- dou um .ShowModal;
Resolveu, o único porém, é que ele exibe a tela, oculta e exibe de novo (desta vez em Modal).
Não sei se conseguiram entender minha necessidade, mas assim por enquanto resolveu. rs
Muito obrigado pela ajuda.
Gostei + 0
04/03/2016
Emerson Nascimento
Faça o teste.
"Use DisableTaskWindow e EnableTaskWindow.
Veja o exemplo neste link"
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)