Form mdi x form Normal

Delphi

18/08/2007

Pessoal, preciso saber como faço por exemplo para fazer o seguinte:

Imagine que estou num campo dbedit do tipo codigoPaciente,
através de um atalho eu chame um form de pesquisa (mdi),
só que quero que os comandos abaixo da execução do form
fiquem esperando enquanto eu nao fechar o form...

Não sei se expliquei direito...
segue um pedaço do código:

  frm_pesquisa_clientes.show;
  <aqui quero que só execute depois de ter dado 
    um clique no botao seleciona deste form,
    queria fazer isto sem ter q dar um .showmodal 
    travando a aplicação neste ponto>

  if not (frm_pesquisa_clientes.chave_pk=´´) then
     begin
       Tabelais_paciente.value:=strtoint(frm_pesquisa_clientes.chave_pk);
       db5.Text:=frm_pesquisa_clientes.chave_pk;
       atualiza_paciente;
     end;



Farnetani

Farnetani

Curtidas 0

Respostas

Jáder Medeiros

Jáder Medeiros

18/08/2007

Por que você não quer usar o ShowModal?


GOSTEI 0
Marcosrocha

Marcosrocha

18/08/2007

Janelas sem Modal dificultam muito o controle sobre outras telas... caso realmente seja necessário a dispensa do método. Mas pelo que eu entendi você só quer deixar o usuário fechar a pesquisa se ele selecionar um Registro, é isso? :?


GOSTEI 0
Aschaves

Aschaves

18/08/2007

Deixa eu ver se entendi, você está em um form qualquer, dispara um form de pesquisa e não quer que o usuário saia do form de pesquisa sem passar por determinada condição?

Fazendo como se o form pesquisa fosse showmodal, não pode sair enquanto não clicar no OK?, testa o codigo abaixo, que simula um showmodal.

1º - Ao criar o form seta uma variavel logica para false (FORMCREAT)
2º - Ao fechar o form testa se a variavel é true (FORMCLOSEQUERY)
3º - Ao sair do form sem fechar, testa se a variavel é true (FORMDEACTIVATE)


var
  FormPesq: TFormPesq;
  Podefechar :boolean;

implementation

{$R *.dfm}

procedure TFormPesq.FormCreate(Sender: TObject);
begin
  PodeFechar := False; // define a variavel 

  // seu codigo em diante 
  .
  .
  .

end;


// Aqui voce define em um button ou outro evento qualquer a condição verdadeira para fechar
procedure TFormPesq.Button1Click(Sender: TObject);
begin
   PodeFechar := True;  // 

  // seu codigo em diante 
  .
  .
  .

end;



procedure TFormPesq.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  formPesq.Close := caFree;
end;

// Se tentar fechar o form 
procedure TFormPesq.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := True;

  if not podefechar then
    CanClose := False;

end;


// se tentar ir para outro form já aberto
procedure TFormPesq.FormDeactivate(Sender: TObject);
begin
 if not PodeFechar then
  begin
    (sender as Tform).SetFocus;
    (sender as Tform).BringToFront

  end;
end;


end.



GOSTEI 0
POSTAR