Show/ShowModal Il y a deux différences majeures :
1/
- Form1.Show ne bloque pas le programme, donc toutes les instructions situées arpès le Show sont exécutées dés que la fiche est affichée.
- Form1.ShowModal bloque le programme, les instructions suivantes ne seront exécutées qu'à la fermeture de la fiche.
2/
Une fenêtre affichée avec ShowModal bloque l'accès à toutes les autres fenêtres tant que celle ci n'est pas fermée. Avec le Show ce n'est pas le cas.
Exemple :
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.ShowModal;
ShowMessage('SHOWMODAL:Ce message s''affiche une fois que Form2 est fermée');
end;
Dans ce cas tant que Form2 est visible il n'est pas possible de cliquer sur Form1 même en déplaçant Form2. C'est le cas typique des boite de dialogue qui attendent des saisies avant de continuer.
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
ShowMessage('SHOW:Ce message s''affiche de suite');
end;
Dans ce cas il est possible d'accéder à Form1 sans fermer Form2. C'est le cas principal des fenêtres d'outils ou de volet de visualisation. Les fiches affichées comme ceci ont souvent la propriété StayOnTop de manière à rester visible ( mais ce n'est pas obligatoire ).
Quant à la dernière méthode elle permet de créer des fiches à l'exécution seulement quand on en a besoin. Par défaut toutes les fiches de Delphi sont crées automatiquement au démarrage. On peut choisir dans les options du projet celles qui ne seront pas crées automatiquement. Mais attention : si une fiche n'est pas créée, aucun des composants qu'elle contient n'est accéssible. De même après le Release tous les composants de la fiche sont détruits. Il faut donc sauver avant les valeur utiles ( entre le ShowModal et le Release ). L'utilisation de cette méthode est surtout réservée aux fiches servant ensuite de composants comme les OpenDialog ou SaveDialog. Dans la plupart des applications cette méthode est inutile.