Array
(
)

Duvida em Formulario

Felipeiw
   - 12 dez 2005

#Código


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

showmessage(IntToStr(xcodigo));

if (xcodigo > 0) then
DME.CdsDesCaracteristicas.Locate(´coddes´,xcodigo,[])
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


Gameiro
   - 12 dez 2005

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


Ate mais. :)


Marcosrocha
   - 12 dez 2005


Citação:
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...
#Código

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;



Jairroberto
   - 12 dez 2005

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


Marcosrocha
   - 12 dez 2005


Citação:
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: