Création dynamique de forms & multi-écran
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:
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