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 :

probleme pour affecter le parent lors de création d'une class


Sujet :

Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Points : 137
    Points
    137
    Par défaut probleme pour affecter le parent lors de création d'une class
    Bonjour et bonne année,

    Pour commencer voici un code qui marche:
    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
    68
    69
    70
    71
    72
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Panel1: TPanel;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    Tmyclass = class(TPanel)
        Image: TImage;
    //    Info:Double;
     
      private
      public
      constructor Create(AOwner: TComponent);
      destructor Destroy;
      end;
    var
      Form1: TForm1;
      Compo: Tmyclass;
    implementation
     
    {$R *.dfm}
     
    { Tmyclass }
     
    constructor Tmyclass.Create(AOwner: TComponent);
    begin
      inherited;
      Image := TImage.Create(nil);
      //parent:=AOwner;
      with Image do
      begin
        Parent := Self;
        Visible := True;
      end;
     
    end;
     
    destructor Tmyclass.Destroy;
    begin
      if Assigned(Image) then FreeAndNil(Image);
      inherited;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     Compo := Tmyclass.Create(Form1);
     with Compo do
     begin
      Parent := Form1;
      Compo.Image.Canvas.pen.Color:=clgreen;
      Compo.Image.Canvas.MoveTo(0,0);
      Compo.Image.Canvas.LineTo(10,10);
     
     end;
    end;
     
     
    end.
    Sauf que je voudrais faire Parent := Form1; dans le create
    j'ai donc modifier celui-ci ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    constructor Tmyclass.Create(AOwner: TComponent);
    begin
      inherited;
      Image := TImage.Create(nil);
      parent:=AOwner;
      with Image do
      begin
        Parent := Self;
        Visible := True;
      end;
    end;
    Seul souci, c'est que j'ai alors delphi qui me retourne le message:
    [Erreur] Unit1.pas(42): Types incompatibles : 'TWinControl' et 'TComponent'
    Je me dis donc que j'ai qu'a prendre en paramettre un TwinControl. Mon code devient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    constructor Tmyclass.Create(AOwner: TWinControl);
    begin
      inherited;
      Image := TImage.Create(nil);
      parent:=AOwner;
      with Image do
      begin
        Parent := Self;
        Visible := True;
      end;
    end;
    et la Delphi bloque sur le mot clef inherited; et me dit:
    renvoie "[Erreur] Unit1.pas(40): Types incompatibles
    Quelqu'un a une idée de comment résoudre ce dylème ?

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 683
    Points : 13 092
    Points
    13 092
    Par défaut
    C'est au moment de l'assignation qu'il faut faire le transtypage.
    La destruction manuelle de l'image deviendrait inutile si tu lui assignais ton objet comme propriétaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Parent := TWinControl(aOwner);
    Image  := TImage.Create(Self);

  3. #3
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if AOwner is TWinControl then
      Parent := TWinControl(AOwner);


    et on appel pas :

    procedure TForm1.Form1Create(...);
    begin
    MyClass := TMyClass.Create(Form1);
    end;


    mais

    procedure TForm1.Form1Create(...);
    begin
    MyClass := TMyClass.Create(Self);
    end;
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  4. #4
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    et si c'est juste pour déssiner, utise plutot un TGraphicControl plutot qu'un TPanel avec un TImage dedans.
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Points : 137
    Points
    137
    Par défaut
    Merci

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

Discussions similaires

  1. [OL-2007] Probleme pour affecter une macro
    Par capc93 dans le forum Outlook
    Réponses: 0
    Dernier message: 15/04/2014, 10h18
  2. Réponses: 1
    Dernier message: 06/01/2012, 00h31
  3. Réponses: 7
    Dernier message: 31/07/2009, 11h53
  4. Réponses: 0
    Dernier message: 12/08/2008, 17h12
  5. problème lors de création d'une vue
    Par gapse dans le forum Oracle
    Réponses: 7
    Dernier message: 26/07/2006, 12h59

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