Dans le dernier topic que j'ai créé, je demandais comment adapter une application développée sur du 1280X1024 à des clients 800X600

J'ai trouvé ma réponse seulement maintenant que je mets en application la solution je me retrouve confronté à certains problèmes :


je déclare ma procédure RescaleForm dans implementation de la façon suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
// Définition de la procédure pour adapter la fenêtre à l'écran
procedure RescaleForm(F: TScrollingWinControl);
var
  M, D : Integer;
  begin
   M := Screen.Width; // multiplicateur = définition actuelle de l'écran
   D := 1280; // diviseur = définition de l'écran à la conception
   F.ScaleBy(M, D);
   F.Realign;
  end;
En tout j'ai 7 Forms, dans la première (le menu principal) j'appelle la procédure dans le FormActivate de la façon suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
// Appel de la procédure pour adapter la fenêtre à l'écran
procedure TForm1.FormActivate(Sender: TObject);
var
  M, D : Integer;
begin
   ShowWindow(Handle, SW_MAXIMIZE); // maximise ma fenêtre
   RescaleForm(Form1);
end;
Puis dans les 6 autres Forms j'appelle la procédure dans le FormShow de la façon suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
// Appel de la procédure pour adapter la fenêtre à l'écran
procedure TForm2.FormShow(Sender: TObject);
var
  M, D : Integer;
begin
   ShowWindow(Handle, SW_MAXIMIZE); // maximise ma fenêtre
   RescaleForm(Form2);
   Form2.Close;
end;
Lorsque je lance mon appli elle démarre convenablement, seulement, Lorsque j'appuie sur le bouton de la Form1 qui me conduit à la Form2 avec le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
begin
Form2.show;
end;
Ca Plante ... avec le message d'erreur suivant :




Quelqu'un peut il me dire où est le problème ??????
Le but étant d'afficher la Form en lui appliquant la procédure RescaleForm.