IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

Fermer Form dynamiquement


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier Avatar de chh2008
    Inscrit en
    Mars 2008
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2008
    Messages : 129
    Points : 106
    Points
    106
    Par défaut Fermer Form dynamiquement
    Bonjour,

    Je lance la création d'un form avec boutton
    Je n'arrive pas a coder la fermeture de la formen cliquant sur le bouton
    Merci pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Procedure TFrom1.Button1Click(sender: Tobject);
    var
    frm: TForm;
    Btn:TButton;
    Begin
      Frm:=TForm.create(self); 
      Btn:=TButton.create(self); 
      Btn.parent:=Frm;
      Btn.Click:=ClickBtn;
      Frm.ShoxModal;
    End;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Procedure TFrom1.ClickBtn(sender: Tobject);
    Begin
    //I want to close the window dynamically created
    End;

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Procedure TFrom1.Button1Click(sender: Tobject);
    var
      Frm :TForm;
      Btn :Button;
     
    Begin
      Frm := TForm.create(self); 
      Btn := TButton.create(Frm); 
      Btn.Parent  := Frm;
      Btn.OnClick := ClickBtn;
      Frm.ShowModal;
      Frm.Free;
    End;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Procedure TFrom1.ClickBtn(sender: Tobject);
    Begin
      TForm(TControl(Sender).Parent).ModalResult := mrOk;
    End;

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    tant qu'à faire les choses à la main, autant bien les faire.

    1) s'il suffit juste de fermer la fenêtre Button.ModalResult := mrOK suffira.

    2) sinon autant dériver TButton
    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
    24
    25
    26
    27
    28
    29
    30
     
     
    type
      TCloseButton = class(TButton)
      public
        constructor Create(AForm: TForm);
        procedure Click; override;
      end;
     
    constructor TCloseButton.Create(AForm: TForm);
    begin
      inherited Create(AForm);
      Parent := AForm;
    end;
     
    procedure TCloseButton.Click;
    begin
      TForm(Parent).ModalResult := mrOK;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Frm :TForm;
      Btn :TCloseButton;
    Begin
      Frm := TForm.Create(self);
      Btn := TCloseButton.Create(Frm);
      Frm.ShowModal;
      Frm.Free;
    End;
    ou même surcharger TForm (avec un appel à CreateNew pour éviter le chargement d'un DFM)

    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
     
    type
      TClosableForm = class(TForm)
      public
        constructor Create(AOwner: TComponent);
      end;
     
    constructor TClosableForm.Create(AOwner: TComponent);
    begin
      inherited CreateNew(AOwner);
      TCloseButton.Create(Self);
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Frm :TClosableForm;
    Begin
      Frm := TClosableForm.Create(self);
      Frm.ShowModal;
      Frm.Free;
    End;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Pour traduire la première proposition de Paul TOTHTButton.ModalResult

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Procedure TFrom1.Button1Click(sender: Tobject);
    var
      frm: TForm;
      Btn:TButton;
    Begin
      Frm := TForm.create(self); 
      Btn := TButton.create(Btn); 
      Btn.Parent := Frm;
      Btn.ModalResult := mrOK; // rien de plus ! cela se fera tout seul !
      Frm.ShoxModal;
      Frm.Free;
    End;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fermer une forme dynamique après un certain temps.
    Par Ardely dans le forum Débuter
    Réponses: 11
    Dernier message: 18/08/2013, 16h55
  2. Changer la couleur d'une forme dynamique
    Par achos dans le forum Flash
    Réponses: 9
    Dernier message: 21/03/2007, 17h57
  3. Réponses: 5
    Dernier message: 27/09/2006, 14h07
  4. Question sur l'affichage d'une form dynamique?
    Par Jayceblaster dans le forum Delphi
    Réponses: 1
    Dernier message: 18/09/2006, 14h36
  5. Forms "dynamiques"
    Par mobee dans le forum C++Builder
    Réponses: 7
    Dernier message: 20/12/2005, 16h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo