Fermer Forms Dynamiques

Résolu
nirG Messages postés 67 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 19 juillet 2009 - 20 févr. 2009 à 18:48
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 - 21 févr. 2009 à 03:22
Bonjour,

Je recherche une façon de fermer mes forms dynamiques. Je vous présente un bout de mon code afin que vous compreniez.

for I := 0 to Compteurchamps do begin
               begin
                  MyForm := TMyForm.CreateNew(Form1);
                      with MyForm do
                        begin
                          Myform.Close;
                          MyForm.OnClose := MyFormClose;
                          SetBounds(200, 200, 150, 90);
                          Caption := 'MyForm'+IntToStr(i);
                          name := 'F'+IntToStr(i);
                          BorderStyle := bsSizeToolWin;
                          FormStyle := fsStayOnTop;
                            if I > 0 then
                              begin
                                var1:= var1+90;
                              end;
                              Left := 1130;
                              Top := 905-var1;
                 Label1 := TLabel.Create(MyForm);
                    with Label1 do
                      begin
                        Parent := MyForm;
                        SetBounds(5, 5, 5, 5);
                        WordWrap := True;
                        Width := 130;
                        Height := 113;
                        Caption := 'Mon message';
                        WordWrap := True;
                      end;
                 Visible := TRUE;
              end;
            end;
        end;
    end;

J'ai recherché plusieurs façons, mais comme je suis encore un débutant, je n'arrive pas a appliquer les solution proposées sur différents forums. Je me permet de poster un message afin que des personnes puissent m'éclairer sur une solution.

Je vous remercie d'avance de vos réponses.

Cordialement.

3 réponses

nirG Messages postés 67 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 19 juillet 2009
20 févr. 2009 à 21:35
J'ai enfin trouvé la solution. En créant des timers directement sur mes forms.

résultat :

           for I := 0 to Compteurchamps do begin
               begin
                  MyForm := TMyForm.CreateNew(Form1);
                      with MyForm do
                        begin
                          Myform.Close;
                          MyForm.OnClose := MyFormClose;
                          SetBounds(200, 200, 150, 90);
                          Caption := 'MyForm'+IntToStr(i);
                          BorderStyle := bsSizeToolWin;
                          FormStyle := fsStayOnTop;
                            if I > 0 then
                              begin
                                var1:= var1+90;
                              end;
                              Left := 1130;
                              Top := 905-var1;

                 Label1 := TLabel.Create(MyForm);
                    with Label1 do
                      begin
                        Parent := MyForm;
                        SetBounds(5, 5, 5, 5);
                        WordWrap := True;
                        Width := 130;
                        Height := 113;
                        Caption := 'Mon message';
                        WordWrap := True;
                      end;

                 Timer1 := TTimer.Create(MyForm);
                    with Timer1 do
                      begin
                      Parent := MyForm;
                      Interval := 1000;
                    end;
                 Visible := TRUE;
                 Timer1.OnTimer := lol;
              end;

            end;
        end;
    end;
    cpt:=i;
end;

procedure TMyForm.MyFormClose(Sender: TObject; var Action: TCloseAction);
  begin
    Sender.Free;
  end;
procedure TMyForm.lol(Sender: TObject);
  begin
    close;
  end;
3
nirG Messages postés 67 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 19 juillet 2009
20 févr. 2009 à 18:54
J'ai oublié de préciser que mon code se trouve dans un timer, donc elles doivent se fermer automatiquement avant la reconstruction des forms dynamiques.

Merci
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
21 févr. 2009 à 03:22
C'était une tranche de vie d'un programmeur Delphi.

Merci.
0