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 :

Composant du type TLabeledEdit


Sujet :

Composants VCL Delphi

  1. #1
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut Composant du type TLabeledEdit
    Bonjour,

    Je voudrais créer un composant avec un autre objet associé comme dans TLabeledEdit mais tous ceux que je fais on le deuxième objet dans l'objet de base.

    Je présume que c'est au moment de lui associé son parent mais ... j'y arrive pas .

    Merci de votre aide



    P.S. : j'utilise "Component Create" pour m'aider à développer mon objet

  2. #2
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Un essai d'édit dans un panel...

    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
    64
     
    unit UeditPanel;
     
    interface
    uses Extctrls,StdCtrls,Classes,controls;
     
    type TPaneledit=class(TPanel)
    public
    edit:TEdit;
    constructor create(aowner:TComponent;w,h,x,y:integer;hote:TWincontrol);reintroduce;overload;
    end;
    implementation
     
    constructor TPaneledit.create(aowner:TComponent;w,h,x,y:integer;hote:TWincontrol);
    begin
    inherited create(aowner);
    parent:=hote;
    setbounds(x,y,w,h);
    edit:= Tedit.Create(self);
    edit.Parent:=self;
    with edit do begin
                    AutoSize:=false;
                    Width:=self.clientwidth;
                    Height:=self.clientheight div 2;
                    Left:=0;
                    Top:=self.clientheight div 2;
                    end;
    end;
     
    end.
     
     
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs,UEditPanel;
     
    type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées }
        monpanel:TpanelEdit;
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    monpanel:=Tpaneledit.create(self,200,200,10,10,self);
    end;
     
    end.
    Je ne pense pas qu'il faille faire un destroy pour mon objet...
    le responsable aowner (form1) s'occupe de libérer en cascade monpanel et edit...

    A confirmer...

    salut

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Salut,

    as tu essayé de créer un TCustumControl (par exemple dans le cas ou tu auras des interactions avec tes objets) et d'ajouter les 2 composants que tu souhaite dedans?

    Il y a un topic sur la création d'un composant contenant d'autres composants ici: http://www.developpez.net/forums/d79...sieurs-autres/

    ça fonctionne, je te donnerais du code si tu le souhaite

  4. #4
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut
    Merci pour votre aide

    Créer un TPanel et y introduire mes objets, j'y arrive.
    C'est créer un objet ici un TEdit et lui mettre un TLabel associé, combiné. Vraiment comme TLabeledEdit.
    Aujourd'hui quand je crais mon composant dans le "TEdit" je devine mon "TLabel" dans le TEdit

    Donc l'idée est de créer un TCustumControl et d'y incorporer un TEdit et un TLabel ... Le problème est que l'objet de base n'est pas mon TEdit et je n'ai pas ces propriétés.

    Je reste sur mon idée de faire comme le TLabeledEdit. Il est vrai que je pourrais l'utiliser comme parent mais je veux lui ajouter d'autres objets comme le TLabel

    Merci de votre aide

  5. #5
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Excuse moi mais je ne pige pas tout...
    C'est bien un seul objet...

    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
    64
    65
    66
    67
     
    unit UEditLabel;
     
    interface
    uses Extctrls,StdCtrls,Classes,controls;
     
    type TeditLabel=class(TEdit)
    public
    lab:TLabel;
    constructor create(aowner:TComponent;w,h,x,y:integer;hote:TWincontrol);reintroduce;overload;
    end;
    implementation
     
    constructor TEditLabel.create(aowner:TComponent;w,h,x,y:integer;hote:TWincontrol);
    begin
    inherited create(aowner);
    parent:=hote;
    autosize:=false;
    setbounds(x,y,w,h);
    lab:=TLabel.Create(self);
    Lab.parent:=self;
     
    with lab do begin
    AutoSize:=false;
    Setbounds(0,self.clientheight div 2,self.clientwidth,self.clientheight div 2);
    end;
     
    end;
     
    end.
     
     
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs,UEditLabel;
     
    type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées }
        monedit:TEditlabel;
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    monedit:=TEditLabel.create(self,200,200,10,10,self);
    monedit.lab.WordWrap:=true;
    monedit.lab.Caption:='C''est bien une instance de TeditLabel qui contient un edit et un label !';
    monedit.lab.Color:=clred;
    end;
     
    end.

    ????????

  6. #6
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut
    Pourquoi ne puis-je mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Titre.Parent := self.parent;
    pour créer mon deuxième objet sur le même parent que le premier ?


    Titre est un TLabel après l'avoir créé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Titre := TLabel.Create(Self);
    code complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Titre := TLabel.Create(Self);
    Titre.Parent := self.parent;
    Merci de votre aide

  7. #7
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Personnellement, je ne vais plus intervenir car je ne comprends pas ce que tu veux...

    c'est ça qui te dérange :

    monobjet.text:=....
    monobjet.label.caption:=...


    Tu veux pouvoir faire :

    monobjet.text et que ça tombe dans l'edit comme précédemment
    et monobjet.caption et que ça tombe dans le label ? sans avoir à mettre .lab...

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 815
    Points : 13 531
    Points
    13 531
    Par défaut
    Citation Envoyé par Speed41 Voir le message
    Pourquoi ne puis-je mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Titre.Parent := self.parent;
    pour créer mon deuxième objet sur le même parent que le premier ?
    Tout simplement parce qu'au Create de ton composant, son parent n'est pas encore défini .

    Tu dois surcharger le SetParent de ton composant et y ajouter l'assignation du parent du label:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ...
      procedure SetParent(aParent: TWinControl); override;
    ...
     
    procedure TTonComposant.SetParent(aParent: TWinControl);
    begin
      inherited SetParent(aParent);
     
      if Assigned(Titre) then
        Titre.Parent := aParent;
    end;

  9. #9
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Mêmes questions ...

  10. #10
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut
    Désolé pour le retard ...

    Je viens juste de tester et c'est bien ce que je voulais. Super merci



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

Discussions similaires

  1. Création de composants dérivés type ToolStrip
    Par brsoft.org dans le forum Windows Forms
    Réponses: 3
    Dernier message: 24/09/2007, 20h06
  2. Réponses: 10
    Dernier message: 07/06/2007, 10h48
  3. Création d'un composant de type Jauge
    Par blibla dans le forum Graphisme
    Réponses: 5
    Dernier message: 29/03/2007, 16h21
  4. Réponses: 5
    Dernier message: 30/06/2006, 14h40
  5. Composant de type grid ayant une couleur par cellule?
    Par TCC dans le forum Composants VCL
    Réponses: 1
    Dernier message: 29/03/2006, 19h56

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