Bonjour tout le monde,

Voici mon problème j'ai une class avec une 30aine de propriétés de types différents ( TColor, integer, ennumérés ) avec les mêmes traitements à faire sur chacune. Entre autre, une chose simple: savoir si la propriété à été modifiée ou pas. Et donc ça m'embète franchement de me tapper 30 accesseurs ( et de compiler 30 méthodes ) qui sont identiques aux types près alors que par exemple un DWord ça reste un DWord. J'ai donc pensé a mettre tous les types de même taille dans un tableau de record variables.
Et j'ai testé cette "solution" pour le Set:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
    TAnyDWord=Record
      Case Integer Of
        0: ( Int: Integer;  );
        1: ( Ptr: Pointer;  );
        2: ( Clr: TColor;   );
    End;
 
  TTestClass = class(TObject)
  private
    FAssigned: DWord; // verrif quelles propriétés sont assignées.
    FTest: Array[0..2] Of TAnyDWORD;
 
    Procedure SetDWORD(Index: Integer; Const Value);
  public
    Property a: Integer Index 0 Read FTest[0].Int Write SetDWord;
    Property b: Pointer Index 1 Read FTest[1].Ptr Write SetDWord;
    Property c: TColor  Index 2 Read FTest[2].Clr Write SetDWord;
  end;
 
Procedure TTestClass.SetDWord(Index: Integer; Const Value);
Begin
  FAssigned:=FAssigned Or (1 shl Index);
  DWord(FTest[index]):=DWord(Value);
End;
Bon, évidement ça ne marche pas ( il faut un type à l'accesseur, et il pas moyen de caster dans les write ) donc j'aurais voulu savoir si quelqu'un saurait comment gruger le compilateur ou tout du moins si quelqu'un vois une autre solution ?

Petite précision tout de même, je tiens à garder les types différents aux propriétés.
Désolé de ne pas être très clair. Merci d'avance a ceux qui répondront ^^