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 :

Creation dynamique d'un objet


Sujet :

Composants VCL Delphi

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2003
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Creation dynamique d'un objet
    j'ai un soucis avec ca.En fait , j'aimerais créer un objet avec une procedure. si la procedure s'appelle construction, voila comment j'aimerais m'en servir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    construction(TButton,'Name','caption',parent,top,left);
    le soucis c qu'on c pas a l'avance si ca va étre un bouton un image ou una utre type d'objets. Comment faire?
    pourriez vous m'aider?

    merci d'avance pour votre aide

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 50
    Points : 61
    Points
    61
    Par défaut
    salut,

    peut etre en faisant comme ca:
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;
     
    type
      TTypeObj = (Bouton, Etiq, Image);
     
      TForm1 = class(TForm)
        Button1: TButton;
        RadioGroup1: TRadioGroup;
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        Edit4: TEdit;
        Edit5: TEdit;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
        procedure Creer(Typeobj: TTypeobj; Name: string; Caption: string; Parent:string; Top: Integer; Left: Integer);
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Typeobj: TTypeObj;
     
    begin
      creer(TTypeobj(radiogroup1.itemindex), edit1.Text, edit4.Text, edit5.Text, strtoint(edit2.Text), strtoint(edit3.Text));
    end;
     
    procedure tform1.Creer(Typeobj: TTypeobj; Name: string; Caption: string; Parent:string; Top: Integer; Left: Integer);
    begin
      case typeobj of
        bouton:
        begin
          ... code creation bouton
        end;
     
        Etiq:
        begin
          ... code creation label
        end;
     
        Image:
        begin
          ... code creation image
        end;
      end;
    end;
     
    end.

  3. #3
    Membre expérimenté
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Points : 1 339
    Points
    1 339
    Par défaut
    Il faut utiliser une méta-classe :

    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
    uses
      TypeInfo;
    procedure construction(ctrl : TControlClass;
                           proprietaire : TComponent;
                           nom, libelle : string;
                           ctrlParent : TWinControl;
                           haut, gauche : integer);
    var
      c : TControl;
    begin
      c := ctrl.Create(proprietaire);
      with c do
      begin
        Name := nom;
        Top := haut;
        Left := gauche;
        Parent := ctrlParent;
        // on essaye de modifier le caption...
        try
          SetPropValue(c,'caption',libelle);
        except
          // pas de caption, on essaye le texte
          try
            SetPropValue(c,'text',libelle);
          except
          end;
        end;
      end;
    end;
    Exemples :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    construction(TEdit,self,'myEdit','coucou',panel1,10,10);
    construction(TButton,self,'myButton','OK',panel1,10,20);
    Bloon

  4. #4
    Membre expérimenté
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Points : 1 339
    Points
    1 339
    Par défaut
    Plutôt que de provoquer des exeptions, on peut aussi envoyer un message SETTEXT (pas besoin de TypInfo dans ce cas) :

    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
    procedure construction(ctrl : TWinControlClass;
                           proprietaire : TComponent;
                           nom, libelle : string;
                           ctrlParent : TWinControl;
                           haut, gauche : integer);
    begin
      with ctrl.Create(proprietaire) do
      begin
        Name := nom;
        Top := haut;
        Left := gauche;
        Parent := ctrlParent;
        sendMessage(handle,WM_SETTEXT,0,integer(PChar(libelle)));
      end;
    end;
    Bloon

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2003
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci pour votre aide je vais voir ca

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

Discussions similaires

  1. creation dynamique d'objets avec souris
    Par guitariste dans le forum JavaFX
    Réponses: 4
    Dernier message: 04/04/2009, 17h11
  2. Creation de liste d'objet dynamique
    Par Invité dans le forum Langage
    Réponses: 3
    Dernier message: 05/12/2008, 14h08
  3. creation dynamique d'objet
    Par dz_robotix dans le forum C++Builder
    Réponses: 15
    Dernier message: 13/03/2007, 09h51
  4. Creation dynamique d'objet
    Par funkadelic dans le forum Général Java
    Réponses: 10
    Dernier message: 21/02/2007, 18h01
  5. [3.0][XAML] Création dynamique d'objets graphiques
    Par Yaugzebul dans le forum Windows Presentation Foundation
    Réponses: 10
    Dernier message: 20/11/2006, 15h37

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