Comme vous le savez, Delphi est un langage objet, et tout objet doit être instancié avant d'être utilisé, voir détruit lorsqu'il n'y a pas de garbage collector, ce qui est le cas pour notre outil préféré. Et donc un formulaire Delphi est un objet qui doit être instancié. Hors justement nous ne nous occupons jamais de cela, faisant juste un show (ou showmodal) lorsque nous avons besoin de l'afficher. Ceci est possible car Delphi se charge d'instancier pour nous ces formulaires.C'est un principe très pratique mais qui présente un gros inconvénient : lorsque notre application grossit et possède de nombreux formulaires, tous sont instanciés en mémoire au début de l'application, alors qu'il n'est pas du tout certain que l'utilisateur les ouvrent réellement. Pour éviter cela, nous pouvons demander à Delphi de ne nous laisser gérer la vie de nos formulaires. Ouvrons les options de Delphi, rubrique "Options d'environnement / Concepteur VCL" :

Options Delphi

Ici il suffit de décocher : "créer automatiquement fiches & modules de données". Une fois validé Delphi ne créera plus les nouveaux formulaires automatiquement. Il faudra donc faire attention à ce que le formulaire que l'on tente d'afficher existe bien.

Nous pouvons utiliser le constructeur standard avant le premier appel :

 if not Assigned( Form2) then
   Form2 := TForm2.Create( Application);
 
 Form2.Show;

Encore mieux : pour les formulaires de type dialogue nous pouvons les détruire dès lors qu'ils ont été fermés par l'utilisateur :

 Procedure AfficheDialogue;
 var
   wDialogue : TForm2;
 begin
   wDialogue := TForm2.Create( application);
   wDialogue.ShowModal;
   wDialogue.Free;
 end;

Ainsi notre formulaire occupe de l'espace mémoire uniquement lorsque l'utilisateur en a besoin.

Voici donc un petit tutoriel tout simple mais qui devrait permettre à votre application de grossir en fonctionnalitées sans pour autant exploser la mémoire de l'ordinateur.