Bonjour à tous

Voila, j'ai créé une propriété personnalisée qui est une liste de doublons. Je l'ai associée avec une boîte de dialogue pour l'édition en designtime. Jusqu'ici tout va bien.
Maintenant j'aimerais que les valeurs soient enregistrées dans le .dfm et là, tout se complique. Voici ce que j'ai fait:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
  TPedroGraphLineCollectionIem = class(TCollectionItem)
  published
    property PointList: TPedroIntegerCoupleList read FList write SetList
      stored GetStored;
 
...
procedure TPedroGraphLineCollectionIem.DefineProperties(Filer: TFiler);
begin
  inherited;
  //Spécification d'une nouvelle propriété:
  //'PointList' : le nom de la propriété
  //ReadListData: la procedure de lecture
  //WriteListData: la procedure d'écriture
  //FList.Count > 0 : Est-ce que la liste a des données
  Filer.DefineProperty('PointList', ReadListData, WriteListData,
    (FList.Count > 0));
end;
...
procedure TPedroGraphLineCollectionIem.ReadListData(Reader: TReader);
var
  Val1, Val2: Integer;
begin
  with Reader do
  begin
    //Début de lecture d'une liste
    ReadListBegin;
    //Tant que la liste n'est pas terminée
    while not EndOfList do
    begin
      //Lecture de la première valeur
      Val1 := ReadInteger;
      //Lecture de la seconde valeur
      Val2 := ReadInteger;
      //Ajout du doublon dans la liste
       FList.AddCouple(Val1, Val2);
    end;
    //Fin de lecture d'une liste
    ReadListEnd;
  end;
end;
...
procedure TPedroGraphLineCollectionIem.WriteListData(Writer: TWriter);
var
  I: Integer;
begin
  with Writer do
  begin
    //Début d'écriture d'une liste
    WriteListBegin;
    for I := 0 to Count - 1 do
    begin
      //Ecriture de la valeur 1
      WriteInteger(FList[I].Value1);
      //Ecriture de la valeur 2
      WriteInteger(FList[I].Value2);
    end;
    //Fin d'écriture d'une liste
    WriteListEnd;
  end;
end;
WriteListData fonctionne parfaitement et m'inscrit bien toutes les valeurs. En revanche, ReadListData plante systématiquement et m'indique qu'il n'arrive pas à lire la propriété.
Il est impossible de vérifier si FList est créé ou non. Ceci dit, je le crée dans le constructeur donc il devrait exister.
Si je commente entièrement ReadListData tout en laissant la procedure:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
procedure TPedroGraphLineCollectionIem.ReadListData(Reader: TReader);
begin
end;
Ca fait la même chose. Par contre, si je supprime les lignes correspondant à cette liste dans le .dfm, ça marche mais du coup, il ne charge rien !
Pour info, TPedroGraphLineCollectionIem est de type TCollectionItem contenu dans un TOwnedCollection lui-même contenu dans mon composant hérité de TCustomControl.

J'ai loupé un truc ?