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

Delphi Discussion :

créer dynamiquement une form


Sujet :

Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2005
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 315
    Points : 138
    Points
    138
    Par défaut créer dynamiquement une form
    Bonjour à tous, je souhaite ouvrir une nouvelle fenêtre en cliquant sur un bouton de ma fenêtre mère.
    j'y arrive pas et obtiens à chaque fois des message d'erreurs.
    Quelqu'un peut il m'aider SVP ?

  2. #2
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut
    Salut!

    Pour t'aider nous aurons besoin de

    1. Un bout de code
    2. Le message d'erreur exact


    Merci!
    -Slimjoe

  3. #3
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    a voir le titre de ton post ,

    pour créer une forme dynamiquement soit tu créer en mode conception un model exp nommé FORM1

    et dans ton programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.CreateForm(TForm1,Form1);
    attention quand vous créer dynamiquement desq form ne pas oublier de liberer la mémoire lorsque vous fermer ces dernieres sinon vous allez consommer toutes vos ressources.

  4. #4
    Membre habitué
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2005
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 315
    Points : 138
    Points
    138
    Par défaut créer dynamiquement une form
    voici un bout de code :

    --------------------------------------------------------------------------------
    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
    unit Unit2; 
    .... 
    type 
      TForm2 = class(TForm) 
        ListBox1: TListBox; 
        MainMenu1: TMainMenu; 
        Panel1: TPanel; 
    ...... 
    procedure TForm2.Button1Click(Sender: TObject); 
    var 
      NewForm:TForm2; 
    begin 
    form2.Visible:=false; 
      //Pour ne pas lancer 2 fois la même fenêtre 
      if not assigned(NewForm) then 
        begin 
          Application.CreateForm(TForm2, NewForm); 
          NewForm.caption:= 'Nouvelle form !'; 
        end; 
    end;
    j'obtiens alors l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur fatale] Unit2.pas(66): F2092 Le programme ou l'unité 'Unit2' s'utilise récursivement lui-même
    j'ai alors effacer le Unit2 mais l'erreur persiste

  5. #5
    Membre éclairé
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Points : 746
    Points
    746
    Par défaut
    1. ta variable NewForm n'est pas déclarée au bon endroit : dans ton exemple elle est locale à ButtonClick et n'est donc pas conservée dès qu'on sort de cette méthode
    2. voici un bout de code qui fonctionne chez moi :
    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
     
    implementation
     
    uses Unit2;
     
    {$R *.dfm}
     
    var
      NewForm : TForm2;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Form2.Visible := False;
      if not Assigned(NewForm) then
        Application.CreateForm(TForm2, NewForm);
      NewForm.Caption := Edit1.Text;
      NewForm.ShowModal;
    end;
     
    end.
    Donnez un poisson à un homme et il mangera pendant un jour... Apprenez-lui à pêcher et il s'assiéra dans une barque et boira de la bière toute la journée

  6. #6
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut
    Erreur fatale] Unit2.pas(66): F2092 Le programme ou l'unité 'Unit2' s'utilise récursivement lui-même
    Hum...

    T'aurais pas ajouté Unit2 dans tes uses de Unit2.pas par hasard ? Du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    unit Unit2;
     
    interface
     
    uses
      Unit2;
     
    [...]
    Moi ce code me donne l'erreur citée à tous les coups.

    Tu n'as pas besoin de référencer Unit2 à l'intérieur de ton unit tout simplement parce que tu peux déjà accéder à tout le unit. Rien à voir avec la création de forms dynamiques par exemple .

    Bon dev!
    -Slimjoe

Discussions similaires

  1. Créer dynamiquement une Forms Infopath
    Par espe2007 dans le forum InfoPath
    Réponses: 1
    Dernier message: 27/09/2007, 13h59
  2. Créer dynamiquement une fonction dans une procedure
    Par cbon1 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 17/10/2006, 10h29
  3. est il possible de créer dynamiquement une class ???
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 12/07/2005, 16h22
  4. [MFC] Créer dynamiquement une classe
    Par vanitom dans le forum MFC
    Réponses: 9
    Dernier message: 11/12/2004, 13h23

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