Bonjour,
Je viens de me lancer dans la programmation en objet et j'ai encore quelques difficultes ...
En voilà une
Je dispose des classes suivantes :
- BD (qui contient une collection de Tables)
- Table
- Entite (héritée de Table)
- Relation (héritée de Table)
Dans ma classe BD, j'ai inclus les unités des classes Table, Entite et Relation.
Dans la classe Relation, j'ai une méthode qui permet de dessiner.
La collection de Table peut contenir soit des objets de type Entite soit des objets de type Relation :
Maintenant, je souhaite pouvoir extraire seulement les objets de type TRelation contenu dans ma collection pour pourvoir accéder à leurs méthodes :
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 procedure TBD.AddTable(laTable:TTables); begin nbTable:=nbTable+1; SetLength(lesTables,nbTable); lesTables[nbTable-1]:=laTable; if laTable is TEntite then begin nbEntite:=nbEntite+1; laTable.Name:='Entite'+IntToStr(nbEntite); end; if laTable is TRelation then begin nbRelation:=nbRelation+1; laTable.Name:='Relation'+IntToStr(nbRelation); end;
Je ne comprends pas pourquoi cela ne fonctionne pas!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 procedure TBD.RedessinerLiens; var i:integer; laRelation:TTables; begin for i:=0 to high(lesTables) do begin if lesTables[i] is TRelation then begin laRelation:=lesTables[i];// Type Incompatible entre TTables et TRelation laRelation.EffacerRelation;//du coup j'ai pas accès à cette méthode end; end; end;
Si vous pouvez m'éclairer sur ce problème je vous serai reconnaissant
Merci
PS: Si vous manquez d'infos, dites le moi
Partager