Duvida em Formulario

12/12/2005

  if (F4DesCaracteristicas = nil)  then
    F4DesCaracteristicas := TF4DesCaracteristicas.Create(nil)
  else
    F4DesCaracteristicas.Show;

  showmessage(IntToStr(xcodigo));

  if (xcodigo > 0) then
    DME.CdsDesCaracteristicas.Locate(´coddes´,xcodigo,[&93;)
  else
  begin
    DME.CdsDesCaracteristicas.Close;
    DME.CdsDesCaracteristicas.CommandText := ´SELECT * FROM cedescaracteristicas ORDER BY coddes´;
    DME.CdsDesCaracteristicas.Open;
    DME.CdsDesCaracteristicas.IndexFieldNames := ´coddes´;
    DME.CdsDesCaracteristicas.Last;
  end;


Neste codigo acima, percebi que e executar o evento onShow formulario F4DesCaracteristicas, e logo em seguida é executado o showmessage,
mas quero que o codigo abaixo do showmessage seja executado assim que o form F4DesCaracteristica seja fechado, isso acontecia quando eu estava utilizando showmodal agora com mdiChild esta ocorrendo dessa forma, o que estou fazendo de errado? a Variavel xcodigo vem do form F4DesCaracteristicas. (é um form de consulta onde o usuario pode consultar por nome ou codigo e depois volta para o form que o chamou no caso o form de cadastro.
Abs


Felipeiw

Respostas

12/12/2005

Gameiro

E se vc colocar o código que está depois do showmessage no onclose do formulario.


Ate mais. :)


Responder Citar

12/12/2005

Marcosrocha

E se vc colocar o código que está depois do showmessage no onclose do formulario.

Também tinha pensado nisso mas estava fazendo um teste pois eu não trabalho com aplicações MDI. Quanto crio um form uso ShowModal e antes de dar um Free eu pego numa variável global o código da pesquisa...
procedure TForm1.Button1Click(Sender: TObject);
var
  Codigo: ShortString;
begin
  Application.CreateForm(TForm2,Form2);
  Form2.ShowModal;
  Codigo := Form2.CodPesq; // CodPesq é uma variável global do Form2
  Form2.Free;
  // Aqui seguiria meu código trabalhando com a var Codigo
end;



Responder Citar

12/12/2005

Jairroberto

Olá, Felipe!

O método ShowModal interrompe a execução do código até que o formulário exibido por este método seja fechado, o que não ocorre com o método Show, por isso não está ocorrendo o que você espera.

Não quero dar pitaco no seu sistema, mas normalmente diálogos de pesquisa, são, como o próprio nome diz, ´diálogos´. Quero dizer com isso que numa rotina como essa, o normal é mesmo utilizar o método ShowModal, portanto não seria aconselhável neste caso utilizar um mdiChild, porque o usuário pode deixar o mdiChild clicando em outro formulário ou abrindo outro formulário, sem dizer se encontrou o que queria na pesquisa ou não, clicando respectivamente ´Ok´ ou ´Cancelar´.

A dica do Gameiro é uma possível solução, mas não entendo que seja a mais adequada. Eu não usaria MDI para este formulário de pesquisa e chamaria o método ShowModal, ´obrigando´ o usuário a interagir com o formulário.

Um abraço,
Jair


Responder Citar

12/12/2005

Marcosrocha

Eu não usaria MDI para este formulário de pesquisa e chamaria o método ShowModal, ´obrigando´ o usuário a interagir com o formulário.

Justamente o que eu disse (ou quis dizer) acima!! :wink:


Responder Citar