Je cherche à crée dynamiquement des formulaires en fonction du nombre d'écrans présents sur ma machine, et lorsqu'ils sont crées les placer chacun dans l'écran qui leur correspond.

Je rencontre un problème lors de l'execution de la fonction 'Show' qui me redéplace tout mes formulaires sur mon écran n°1.

(Show me permet d'afficher le contenu et de redimenssioner mon formulaire à la bonne taille)


Voilà mon code pour la création dynamique des formulaires (contenu dans le formulaire principal) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure TForm1.FormCreate(Sender: TObject);
var
  loop   : integer;
begin
  Form1.BorderStyle:=bsnone;
  Displays := TDisplays.Create; // on crée l'objet qui va contenir la liste des moniteurs
  EnumDisplayMonitors(0,Nil,@EnumProc,Nil);
  setlength(t_form,Displays.Count);
  For loop := 0 to (Displays.count - 1) do
  begin
    t_form[loop] := TForm.Create(self);
    with t_form[loop] do
    begin
      Align := alClient;
      Caption := 'Suivi étuve n°' + inttostr(loop+1);
    end;//with
    t_frame[loop] := TFrame2.Create(t_form[loop]);
    t_form[loop].Show;
    SetWindowPos(t_form[loop].Handle, 0, Displays.Item[loop].Monitor.Left,
      Displays.Item[loop].Monitor.Top,
      0, 0, SWP_NOSIZE or SWP_SHOWWINDOW);
  end;//for
end;//procedure
et la librairie que j'utilise ici : unit_gestion_ecran.pas