ShowModal est bloquant tant que Form2 est affiché, cela reste sur ShowModal (c'est une boucle à l'intérieur), une fois Form2 fermé, cela ferme Form1
Normalement, la proposition de Montor est valable, il faut bien mettre le Close puis le ShowModal dans un Begin\End commle le disait archonte.
Enfin, pense à indenter ton code
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| procedure TForm1.BitBtn1Click(Sender: TObject);
begin
//module où se trouve la table1 et la datasource
with Datamodule3 do
begin
if ( (table1.Locate('Libelle_Ville',Edit2.text,[locaseInsensitive]))and (table1 .Locate('ID_Ville',Edit3.text,[locaseInsensitive])) )then
begin
form1.Close(); // ou form1.Hide(); // ou form1.Release(); si tu ne l'utilisera plus jamais ensuite, donc aucun évènement dessus après ce OnClick
form2.ShowModal();
end
else
ShowMessage('essaye encore!!');
end;
end; |
Il faut biensur vérifier si tu n'as pas une Action particulièrement dans le Form1.OnClose, pour une fenêtre Style fsNormal, c'est caHide (cela ne libère pas la fenêtre mais la cache, en général, c'est le plus pratique, cela permet de gérer soit même la libération par un FreeAndNil) ou une contrainte dans OnCloseQuery !
Enfin, si Form1 est la 1ère fenêtre créé, il faut faire attention, si elle est considéré comme la MainForm, sa fermeture fermera ton programme (surement juste après la fermeture de Form2 grace au ShowModal)
On suppose aussi que tu es bien en SDI, que ne mélanges par Modal et MDIChild
Partager