Free Tools

Programmez!



Sélection logiciels

1. FireFox 3.1 Bêta 1

2. IZArc

3. Prism 0.9

4. Safari 3.2

5. Spyware Terminator 2.0


En bref

14 Nov 2008 [Évènement] YouTube Live : diffusion en direct du concert YouTube !

08 Nov 2008 Faille WiFi : 15 minutes pour casser une clé WPA

06 Nov 2008 Aidez MySpace à s'enrichir : Piratez !

31 Oct 2008 Ubuntu 8.10 : En téléchargement dès aujourd'hui !

28 Oct 2008 Microsoft Surface : le futur de l'informatique est pour maintenant !

Consulter les archives


Les derniers dossiers


Les ressources Delphi et C/C++

Remplacer un caractère par un autre (compatible Unicode Delphi2009)

Converter - Conversions d'unités de longueur

Variables globales en C

Music Pro Package

Afficher la date et heure du jour


Membres en ligne

Malgon


Nos partenaires

Espacerezo

KilaSoft


À votre tour, devenez partenaire de mx-dev.net.



Vous êtes ici : AccueilForumProg DelphiRendre public un objet protectedPage 1


Rendre public un objet protected




francky23012301
Administrateur

Avatar de francky23012301

Inscrit le 22 Août 2007

28 messages
46 points

Profil

Posté le Mercredi 06 Août 2008 à 21:47

Salut à tous,

Voila j'ai fais un composant dérivé de TGraphicControl. Dans ce dernier l'object Canvas est protégé. Hors dans le composant TImage (Dérivé de TGraphicControl), le canvas est en public. Je voudrais donc savoir comment rendre public un objet protected.

J'ai cherché mais rien trouvé

Merci

A++

Flo
Membre

Avatar de Flo

Inscrit le 13 Août 2007

30 messages
77 points

Profil

Posté le Jeudi 07 Août 2008 à 11:58

Salut !
Rien de plus simple:

TMyControl = class(TGraphicControl)
public
  property Canvas;
end;

Et voila !

Deefaze
Membre

Avatar de Deefaze

Inscrit le 07 Juil 2008

20 messages
26 points

Profil

Posté le Jeudi 07 Août 2008 à 16:33

  TCustomObject = class
  strict private
    procedure SPriv; virtual; abstract;
  private
    fX : integer;
    procedure Priv; virtual; abstract;
  strict protected
    procedure SProt; virtual; abstract;
  protected
    procedure Prot; virtual; abstract;
  public
    procedure Pub; virtual; abstract;
  published
    property X : integer read fX;
  end;

  TCOVarianteA = class(TCustomObject)
  protected
//    procedure SPriv; override; abstract;   --> impossible
    procedure Priv; override; abstract;
    property X; // --> Possible! O_o (d2007)
  public
    procedure SProt; override; abstract;
    procedure Prot; override; abstract;
  end;

francky23012301
Administrateur

Avatar de francky23012301

Inscrit le 22 Août 2007

28 messages
46 points

Profil

Posté le Jeudi 07 Août 2008 à 19:22

Salut Florenth : Ben figure toi que sur un des mes composants ca ne fonctionne pas Tongue out (c'est ce que j'avais fais).

  public
    Canvas:TCanvas;
end;

Dans le create j'ai été obligé de faire cela :

Canvas:=InHerited Canvas;

(Bon j'utilisant les TCollections aussi : il y a peut etre encore des trucs chelous qui se passe Wink)


Merci f0xi pour tes explications : ca a éclairé mes lumières Wink sur le sujet (C'est vrai que les abstract et virtual j'ai un peu de mal).

Flo
Membre

Avatar de Flo

Inscrit le 13 Août 2007

30 messages
77 points

Profil

Posté le Vendredi 08 Août 2008 à 14:36

Attention Francky!

Canvas: TCanvas;

// là tu déclares une nouvelle variable qui porte le nom d'ue propriété protected de l'ancêtre, ça ne fait rien du tout si ce n'est t'empêcher d'accéder au "Canvas" de l'ancêtre (il faut alors faire inherited Canvas)

n'est PAS la même chose que

property Canvas;

// Là tu demandes de changer la portée de la propriété Canvas: elle passe de protected à public. Et c'est justement ce que tu souhaitais !

@ f0xi: comme quasi-personne n'utilise D2007 je déconseille l'emploi de ces futilités de déplacement de portée dans l'autre sens... et puis aussi l'emploi des portée "strict" qui, malgré qu'elles sont plus logiques dans leur comportement que les "non-strict" sont non compatibles avec D<2005


Participer à cet échange :

Pour participer à cet échange, vous devez vous connecter.