Duvida em Formulario
12/12/2005
0
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
![Felipeiw Felipeiw](https://www.devmedia.com.br/imagens/fotoscolunistas/avatar/avatar-5.png)
Felipeiw
Posts
12/12/2005
Gameiro
Ate mais. :)
12/12/2005
Marcosrocha
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;
12/12/2005
Jairroberto
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
12/12/2005
Marcosrocha
Justamente o que eu disse (ou quis dizer) acima!! :wink:
Clique aqui para fazer login e interagir na Comunidade :)