Propriétés de classes

Propriétés de classes - Delphi/Pascal - Programmation

Marsh Posté le 24-08-2003 à 12:14:20    

Salut !
 
Je me pose une question depuis un bout de temps alors je me décide maintenant de demander la réponse en public ^^
 
A quoi servent les "property Prop: TClasse READ GetProp WRITE SetProp" ?
Je ne comprends pas trop bien l'utilité des READ et WRITE...
 
J'ai fais ceci :
 

Code :
  1. unit Unit1;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, StdCtrls;
  6. type
  7.   TForm1 = class(TForm)
  8.     Button1: TButton;
  9.   end;
  10.   TClass = class
  11.     procedure SetProp(Valeur: TColor);
  12.     function GetProp: TColor;
  13.   published
  14.     property Couleur: TColor read GetProp write SetProp;
  15.   end;
  16. var
  17.   Form1: TForm1;
  18. implementation
  19. {$R *.dfm}
  20. procedure TClass.SetProp(Valeur: TColor);
  21. begin
  22.   if Couleur <> Valeur then Couleur := Valeur;
  23. end;
  24. function TClass.GetProp: TColor;
  25. begin
  26.   Result := Couleur;
  27. end;
  28. end.


 
Mais pourquoi ne pas avoir défini qqch du style :

Code :
  1. TClass = class
  2.     Couleur: TColor;
  3.   end;


 
On aurait ainsi pu atteindre la propriété Couleur et changer librement sa valeur sans passer par deux fonctions/procédures  :??:  
 
 
Merci de m'éclairer ;)


Message édité par Yana le 24-08-2003 à 12:15:03
Reply

Marsh Posté le 24-08-2003 à 12:14:20   

Reply

Marsh Posté le 24-08-2003 à 12:21:18    

Ça n'aurait pas été visible dans l'inspecteur d'objet (d'où le property)

Reply

Marsh Posté le 24-08-2003 à 12:33:17    

Ce n'est pas une propriété d'un composant visuel...

Reply

Marsh Posté le 24-08-2003 à 12:36:30    

Pour que quand tu fasse bidule.Couleur := clBlue; ça ne fasse pas que bêtement assigner la valeur, ça passe par un SetColor qui peut faire des tests (ici tester que la valeur est différente).
Dans ce cas-ci c'est pas très utile, mais dans le set on pourrait par ex recolorier l'objet quand on change sa couleur. Or ça ne sert à rien de le recolorier si la nouvelle couleur = l'ancienne. Donc on fait un test.  
Et pour l'utilisateur c'est transparent : il assigne une valeur sans devoir se soucier du traitement qui est fait derrière.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-08-2003 à 12:37:19    

Yana a écrit :

Ce n'est pas une propriété d'un composant visuel...

Qu'est-ce que tu racontes toi ? :heink:  
T'es dans une section published !

Reply

Marsh Posté le 24-08-2003 à 12:41:19    

Bah dans l'inspecteur d'objet il n'y a rien qui s'affiche de nouveau, si ce n'est la feuille et le boutton1 ...

Reply

Marsh Posté le 24-08-2003 à 13:01:49    

*Syl* a écrit :

Qu'est-ce que tu racontes toi ? :heink:  
T'es dans une section published !


 
classe dérivant de TObject et pas de TComponent, donc pas un compo, le "published" ne fait rien de plus que le "public".
 
PS: Appeler une class TClass c'est un bon système pour avoir des crash étranges par après :D TClass est déjà utilisé pour désigner un type de classe.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-08-2003 à 13:07:11    

je sais bien mais je ne savais pas quoi mettre alors bon, on va pas chinailler pour un test :D

Reply

Marsh Posté le 24-08-2003 à 13:17:55    

antp a écrit :

classe dérivant de TObject et pas de TComponent, donc pas un compo, le "published" ne fait rien de plus que le "public".

Ah wé, pas fait gaffe
[:neowen]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed