begin process at 2012 02 11 14:45:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Algorithme

 > 

Autre

 > 

Surcharge composant héritant d'un TShape


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Surcharge composant héritant d'un TShape

jeudi 6 septembre 2007 à 20:13:36 | Surcharge composant héritant d'un TShape

orelien

Bonjour,

J'ai crée un objet héritant de la classe TShape. J'aimerais maintenant le surcharger en ajoutant des paramètres à son constructeur, mais je n'y arrive pas et je ne sais pas si c'est possible.

Si quelqu'un à une idée.

Merci !

Orélien.
jeudi 6 septembre 2007 à 20:47:16 | Re : Surcharge composant héritant d'un TShape

Guillemouze

TMyShape = class(TShape)
...
public
    constructor Create(AOwner: TComponent; MesParamsSupplementaires: integer); reintroduce;
end;


constructor TMyShape.Create(AOwner: TComponent; MesParamsSupplementaires: integer);
begin
    inherited Create(AOwner);
    ...
end;

jeudi 6 septembre 2007 à 20:49:15 | Re : Surcharge composant héritant d'un TShape

f0xi

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !


tout est possible.

quand tu doit modifier le Create d'une classe qui possede deja un Create il suffit d'utiliser la directive Reintroduce.

exemple :

uses ExtCtrls;

type
  TMyShape = class(TShape)
  public
    constructor Create(AOwner : TComponent; const X,Y,W,H : integer); reintroduce; overload;
    constructor Create(AOwner : TComponent; CloneOf : TMyShape); reintroduce; overload;
    constructor Create(AOwner : TComponent; Brush : TBrush; Pen : TPen); reintroduce; overload;
  end;

{ TMyShape }

constructor TMyShape.Create(AOwner: TComponent; const X, Y, W, H: integer);
begin
  inherited Create(AOwner);
  Self.SetBounds(X,Y,W,H);
end;

constructor TMyShape.Create(AOwner: TComponent; CloneOf : TMyShape);
begin
  inherited Create(AOwner);
  Assign(CloneOf);
end;

constructor TMyShape.Create(AOwner: TComponent; Brush: TBrush; Pen: TPen);
begin
  inherited Create(AOwner);
  Brush.Assign(Brush);
  Pen.Assign(Pen);
end;

jeudi 6 septembre 2007 à 20:51:21 | Re : Surcharge composant héritant d'un TShape

f0xi

Membre Club Administrateur CodeS-SourceS


non seulement on dit la même chose, mais en plus on utilise les mêmes noms de classes :)

jeudi 6 septembre 2007 à 21:28:51 | Re : Surcharge composant héritant d'un TShape

Guillemouze

ton exemple est juste un peu plus complet que le mien !
ok je m'avoue vaincu
StringReplace(Guillemouze.message, 'TMyShape', 'TMonDessinage', [rfReplaceAll, rfIgnoreCase]);
vendredi 7 septembre 2007 à 23:12:53 | Re : Surcharge composant héritant d'un TShape

Delphiprog

Administrateur CodeS-SourceS
Il y a de multiples voies pour parvenir à ses fins et l'héritage traîne parfois un cortège d'inconvénients.
Dans le cas présent, supposons qu'Orelien écrive une hiérarchie de composants dérivant de TShape. En utilisant les directives reintroduce, on court le risque qu'à un moment donné, quelqu'un utilise le type de base TShape (croyant faire une bonne affaire) comme classe mère de sa hiérarchie. Et patatras, il appelle le mauvais constructeur (celui de TShape) et s'aperçoit que ses composants ne réagissent pas comme prévu. Résultat, il va devoir chercher pour ça ne marche pas et poser la question qui tue sur ce forum !
Je pense que cette directive Reintroduce n'a été inventée que pour pallier à des problèmes de conception et ne doit pas devenir une règle courante.
La programmation par composition et les designs patterns forment une voie bien souvent plus simple malgré les apparences.
D'ailleurs, un des grands principes de conception objet ne dit-il pas "Préférez la composition à l'héritage" ?
Si seulement notre ami Orelien nous avait dit ce qu'il voulait faire, on aurait pu le mettre sur la voie et lui donner des exemples de code.

May Delphi be with you !

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
dimanche 16 septembre 2007 à 19:34:07 | Re : Surcharge composant héritant d'un TShape

Delphiprog

Administrateur CodeS-SourceS
Et on en est où de la réflexion ?
Merci de donner signe de vie...


May Delphi be with you !

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
mardi 18 septembre 2007 à 19:12:39 | Re : Surcharge composant héritant d'un TShape

orelien

Bonjour,

J'ai testé tout ça et ça semble bien fonctionner, merci. Mais du coup j'aurais besoin de nouvelles fonctionnalités sur ce composant.

Je souhaiterais en fait obtenir un composant graphique plus complet, sur lequel je puisse dessiner et que je pourrais déplacer au clavier et à la souris (OnMouseDown, OnMouseMove, OnMouseUp) après avoir pris le focus sur d'autre composants. Je ne sais pas de quel composant partir et comment m'y prendre pour ajouter ces évènements/propriétés. 

Si vous avez une idée...

Merci !

Orélien.



Cette discussion est classée dans : composant, surcharge, tshape, héritant


Répondre à ce message

Sujets en rapport avec ce message

Déplacer objet à héritant d'un TShape [ par orelien ] Bonjour,Je travaille sur un projet pour lequel j'ai besoin de de créer l'éxécution des composant TShape.TObjetShape = Class(Tshape)begin...end;Pour ch composant dans composant 2eme edition [ par vib ] Je continue mon apprentissage dans la création d'un composant et la je bloque:Je désire à partir d'un Tgraphiccontrol, ajouter à l'affichage deux Tsha Surcharger composant TShape avec propriété popupmenu [ par orelien ] Bonjour,J'aimerais surcharger le composant TShape pour lui ajouter la propriété "PopupMenu".Quelqu'un a t'il un conseil/solution ?MerciOrélien. Déplacer avec la souris un composant 'Tshape' [ par orelien ] Bonjour,J'aimerais déplacer avec la souris un composant 'Tshape' à l'exécution.Quelqu'un peut-il m'aider ?J'ai tenté ceci mais en vain :const SC_DragM Zipper plusieurs fichiers avec Abbrevia [ par delphiSteph ] Bonjours, J'ai téléchargé le composant TurboPower Abbrevia.J'aimerais pouvoir zipper plusieurs fichiers en un fichier 'test.zip'.Tout les exemple sur Composant graphique non rectangualire [ par cedkat ] Bonjour,comment créer un composant graphique non rectangulaire, c'est-à-dire qu'il soit définit par un polygone et non pas par son rectangle de défini Composant 1 bevel et 3 label dans un Panel [ par SFiguet ] je veux faire un composant fraphique representant un Panel contenant un Bevel et 3 label pouvant changer de Taille et de couleurs Pouvez vous m'aider Recherche de composant... [ par MAsterC ] Bonjour à tous!Je recherche un composant pour les cartes périphériques TVSi quelqu'un aurai un lien ou un composant pour les TV sur ordinateur faite m Webbrowser... [ par MAsterC ] Salut à tous!J'ai essayé avec le composant TWebBrowser d'inséré mon menu popup... mais d'après à ce que je peut voir sa ne marche pas fort fort...Dans Libération de TProcessTimer [ par GawiNDX ] Bonjour a tous !Delphiprog m'a récemment indique un composant pour executer des appli dos sans faire apparaitre de fenetre et en pouvant recuperer les


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,602 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales