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 confirmé
    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
    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 923
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 923
    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 Expert
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    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 Expert
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    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 confirmé
    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
    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