GARANTIR DESCONTO

Fórum Delphi: Como exibir o form com .Show e depois torna-lo Modal (simular o .ShowModal) #547368

01/03/2016

0

Pessoal, é o seguinte. Estou tentando fazer algo um pouco fora do comum no Delphi.

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

Maicon Saraiva

Responder

Posts

01/03/2016

Eliezer Souza

Boa tarde Maicon, documenta o erro que está acontecendo fazendo o favor, creio que o que está tentando fazer deveria estar em uma camada de negócio, mas documente o erro que vou analisar o que pode ser feito.
Responder

Gostei + 0

01/03/2016

Raimundo Pereira

Maicom, fiquei meio perdido do que realmente você precisa.
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.
Responder

Gostei + 0

02/03/2016

Emerson Nascimento

Use DisableTaskWindow e EnableTaskWindow.

Veja o exemplo neste link
Responder

Gostei + 0

03/03/2016

Maicon Saraiva

Pessoal, valeu pela ajuda, acho que consegui resolver aqui.
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.
Responder

Gostei + 0

04/03/2016

Emerson Nascimento

A solução que eu te apresentei faz exatamente o que você precisa, sem qualquer "porém".

Faça o teste.

"Use DisableTaskWindow e EnableTaskWindow.

Veja o exemplo neste link"
Responder

Gostei + 0

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

Aceitar