Concerne composant

cs_cricri_forever Messages postés 49 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 31 mars 2006 - 9 mars 2006 à 15:11
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 9 mars 2006 à 21:18
Bonjour,

Quelqu'un pourrait m'expliquer en bref en création de composant

« TObject », « TComponent »,« TGraphicControl »,
« TWinControl » et TCustomControl »

Merci

2 réponses

cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012
9 mars 2006 à 16:53
Bon en bref alors ...

Un TObject est une classe de Base pouvant avoir des procédures, fonctions, propriétés avec bien entendu avec son Constructor & son Destructor, à savoir le Constructeur d'un TObject ne peut être surchargé(override), par contre son Destructeur oui et c'est même conseiller !!, le construteur ne possède aucun paramètre, mais on peut en rajouter à condition de mettre virtual à la fin .
Exemple :

Constructor Create(ObjetControl : TMonObjetControl);virtual;
et dans l'implementation il suffit d'appeler inherited Create;

Donc un TObject ne peut être enregisté en tant que Composant et ses propriétés published n'apparaissent pas dans l'Inspecteur d'Objet.

Un TComponent pareil que ci-dessus procédures.., sauf qu'un TComponent c'est un Composant non visuel, autrement dit à l'execution il' n'apparaît pas dans une Form, mais ses propriétés publiées(published) apparaissent dans l'Inspecteur d'Objet à condition toute fois d'enregistrer ce composant

pour celà on rajoute la procedure Register; juste avant Implementation

procedure Register; <== on indique à delphi qu'on veut enregistrer des composants

implementation
procedure Register;
begin
RegisterComponents(NomDeLaPalette , [TMyClass1, TMyClass2]);
end;

l'Enregistrement de composants n'a d'effet que depuis l'appel d'un Package(*.dpk)

mais dans le cas où il ya une partie Designer, il est conseiller de placer cette procedure dans un fichier NomDuPackage + Reg.pas

j'entend pas Designer la partie qui gère l'Inspecteur d'Objet pour une configuration avancée du composant.

Un TGraphicControl est un composant visuel mais ne pouvant pas avoir d'enfant
il donc impossible de faire Panel1 := TPanel.Create(MyGraphicControl)
bon je simplifie..

Un TWinControl c'est un Composant Visuel qui lui propose la possibilité d'avoir des enfants, je ne sais pas si c'est dû au viagra ;o), toujours est-il que si on cherche à faire un composant qui accepte des contrôles enfants TWinControl est le composant idéal, de plus TWinControl peut être la Base de tout composant devant géré le Scrolling Vertical & Horizontal

Un TCustomControl bon là pareil que pour TWinControl, la seule différence est qu'on a la possibilité de plubié où non des propriétés, par défaut dans l'Inspecteur d'Objet il ya une liste minimaliste

du genre
dans propriété ya que le Nom du Composant qui apparaît et aucune liste d'événement n'apparaît, c'est donc intérressant si l'ont veut avoir un nimimum d'informations dans l'Inspecteur d'Objet c'est plus Clean pour l'oeil.

d'ailleur généralement on met TCustomMyControl comme classe de Base, à ce moment là il suffit de mettre les propriétés soit sous "protected" soit sous "private", la différence ?

admettant que nous ayons créé une classe de Base et que un autre composant sera un descendant de TCustomMyControl

Uses
MyControls; <== unité ayant la classe TCustomMyControl

Type
MyNewControl = class(TCustomMyControl)

....
dans la partie implémentation
Self. peut avoir un accès à toutes les variables où propriétés, functions déclarer au préalable dans "Protected" mais impossible d'accèder aux variables "private"


et si dans TCustomMyControl y avait par exemple TOnMouseClick

dans ce cas là le descendant a le droit de publié cette propriété

Public
..
Published
property OnMouseClick; <== il suffit juste de mettre son nom
maintenant dans l'inspecteur d'Objet dans évènement il y aura OnMouseClick

j'espère n'avoir pas dit trop de sottises :)

@+
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
9 mars 2006 à 21:18
Tu peux aussi consulter le Guide du concepteur de composants fourni avec Delphi.


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
Rejoignez-nous