[Composant] Diminution de la visibilité d'une propriété
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 2016
-
27 sept. 2008 à 20:32
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 2016
-
1 oct. 2008 à 13:34
Bonjour,
je suis en train de faire un composant ('rrahh toujours avec ses composants lui') visuel (pour changer) et j'ai un petit problème.
Mon composant ne doit pas changer de taille (toujours 13x13).
J'arrive à bloquer son redimensionnement, mais je voudrais cacher Width et Height dans l'éditeur de propriétés (en effet, si par exemple on fixe Width à 15, le composant ne changera pas de taille, mais Width affichera 15 dans l'editeur jusqu'au prochain dessin du composant).
J'utilise comme classe ancêtre TGraphicControl.
Donc Width et Height sont Public (ou Published).
Pour les rendre invisible à l'editeur, il faudrait les faire passer en Protected ou Private.
J'ai déjà essayé :
private
...
property Width;
property Height;
...
Mais sans résultat.
Dans l'aide Delphi, il est dit qu'il est déconseillé de réduire la visibilité d'une propriété ou d'une méthode (ce que je fais, car je passe de >= Public à <= Protected ...).
Quelle est la syntaxe à utiliser pour cette manip ?
J'ai tenté override, overload, reintroduce ... sans résultats ...
Bien sûr ce ne sera pas un drame si cette manipulation n'est pas possible, ce sera moins "style" c'est tout :/
Mon beau livre ne m'est d'aucune utilité, il ne précise pas assez la réécriture d'une propriété existante ...
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 28 sept. 2008 à 11:28
Je ne sais pas si la version 6 est déjà obsolete ... nez en moins, je n'arrive pas à récupérer le sérial de TurboDelphi (et apparement on ne peut plus installer ses composants dans cette version), et les versions > 6 sont payantes/trial (et je ne veux pas d'un IDE trial).
Sinon f0xi, est-ce possible sans recoder TGraphicControl ?
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 30 sept. 2008 à 22:09
A mon avis, réduire la visibilité d'une propriété ou d'une méthode serait un non sens total.
J'explique : selon que l'on va utiliser tel ou tel objet dans la hiérarchie des composants, il va falloir constamment se poser la question : à ce niveau, quelle est la portée de cette propriété/méthode ?
Pour pallier ce problème, l'application d'un pattern simple comme l'adaptateur règlera la difficulté.
Rappel d'un principe fondamental : préférez la composition à l'héritage.
May Delphi be with you !
<hr color="#008000" />Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 30 sept. 2008 à 23:52
Bonsoir
Pourquoi ne pas utiliser tout simplement l'existant, c'est à dire la propriété Constraints ?
type
TGraphiControl1 = class(TGraphicControl)
published
property Constraints ;
end;
En fixant MaxHeight et MinHeight à la même valeur (de même pour MaxWidth et MinWidth) ton composant gardera alors la taille que tu lui auras donné et le changement des valeurs Width et Height seront ineffectives.
Si tu ne veux pas que constraints apparaisse dans l'éditeur, alors tu peux faire quelquechose comme :
type
TGraphiControl1 = class(TGraphicControl)
public
constructor Create(AOwner: TComponent); override;
end;
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 1 oct. 2008 à 13:34
De rien il faut rire 1 minute par jour ^^
Sinon, je vais essayer les Constraints, c'est une bonne idée pour contourner Width and Height, et de plus Constraints est protected dans TGraphicControl.
Merci pour le tuyau WhiteHippo :)