Form mdi
28/05/2008
0
Sownray
Posts
28/05/2008
Eniorm
no MDI isso não acontece! basta abrir o form, consultar o que precisa, e depois retornar ao cadastro.
cuidados que deve ter é no que diz respeito as transações, se vai ou não ser possível abrir o mesmo form mais de uma vez etc.
outro problema que eu enfrentei foi que, muitas vezes em forms de consulta, o registro buscado ficava armazenado numa variável, depois ao retornar ao form anterior eu usava o valor armazenado nessa variável para buscar dados e exibir no form.... e isso geramente era feito depois do ShowModal;
com ShowModal, a execução para e fica aguardando o Close do form aberto em questão, já com o Show não
ex:
... Form2.ShowModal; // * Edit1.Text := Form2.qryPesquisa.FieldByName(´codigo´).AsString; Edit1.OnExit(Self); ...
* neste caso, a execução só continua depois do ShowModal quando ocorrer o Close no Form2
... Form2.Show; // ** Edit1.Text := Form2.qryPesquisa.FieldByName(´codigo´).AsString; Edit1.OnExit(Self); ...
** neste caso, após o show, as duas linhas seguintes seriam executadas na sequência... o que é desagradável uma vez que eu posso não ter concluído a pesquisa ainda.
28/05/2008
Brunodsr
//Procedure que vai dar efeito modal ao form MDI procedure f_ShowModal(hChildHandle: THandle); begin while IsWindow(hChildHandle) do begin sleep(1); Application.ProcessMessages; end; end; //Chamando var hnd:THandle; frm: TFrTeste; begin frm := TFrTeste.Create(self); hnd := frm.handle); f_ShowModal(hnd); showmessage(´teste´); //so sera executado quando o form for fechado. end;
Espero ter ajudado
28/05/2008
Pestana_
com ShowModal, a execução para e fica aguardando o Close do form aberto em questão, já com o Show não
ex:
... Form2.ShowModal; // * Edit1.Text := Form2.qryPesquisa.FieldByName(´codigo´).AsString; Edit1.OnExit(Self); ...
* neste caso, a execução só continua depois do ShowModal quando ocorrer o Close no Form2
... Form2.Show; // ** Edit1.Text := Form2.qryPesquisa.FieldByName(´codigo´).AsString; Edit1.OnExit(Self); ...
** neste caso, após o show, as duas linhas seguintes seriam executadas na sequência... o que é desagradável uma vez que eu posso não ter concluído a pesquisa ainda.[/quote:df9d721289]
neste caso você teria que devolver o valor desta variavel que foi produzida no form de consulta atravez de rotinas!
formPesq.Show;
no evento OnClick do botão de pesquisar por exemplo, chame a rotina do form que o chamou.
procedure TformPesq.botaoPesqClick(sender : TObject); begin form1.rotina(edit2.Text); end; form1 que chamou o form de pesquisa. function Tform1.rotina(valor string); begin edit1.text := valor; end;
+/- assim.
Acho que a maior vantagem é isso que o [b:df9d721289]Enio[/b:df9d721289] disse!
flw.
Clique aqui para fazer login e interagir na Comunidade :)