Rechercher - Liste des utilisateurs
Version complète : Plusieurs héritages
Accueil » FunDelphi » Plusieurs héritages
1
Xaumina
Je ne sais pas si j'ai déjà posté un message similaire, mais j'aimerais bien savoir comment faire hériter à un seul composant deux classes.
sjrd
Ah ben ça, c'est pas possible Et ça ne le sera jamais, car c'est intrinsèque au langage Delphi qui sous-tend tout FunLabyrinthe.

Mais si tu expliques ton besoin concret, on peut sans doute trouver une solution.
Xaumina
C'est en fait le système des coffres, mais ayant la propriété de l'arbre de Grappers. J'ai déjà le coffre ouvert vide (et ça fonctionne), mais c'est tout ce que je peux faire.
sjrd
Le moyen le plus "simple", mais le plus dégueulasse, est de faire une sous-classe de TTree, et d'écrire dedans :
uses
  Chests;

obstacle TTreeLikeClosedChest(TTree)
  name 'Coffre fermé qui fait arbre en même temps';

  on Pushing do
  begin
    ClosedChest.Pushing(Context);
  end;
end;

Pour une version ultérieure, je vais ajouter un mécanisme plus élégant pour faire ça.
Xaumina
Mais le coffre fermé qui fait arbre en même temps devient justement un coffre ouvert vide : or, j'aimerais bien que ça devienne le coffre ouvert vide que j'ai fait moi-même.
Dois-je faire :
on Pushing do
  begin
    TreeLikeOpenChest.Pushing(Context);
  end;

?
intello
Non tu dois recopier tout le code de Chests et changer les
Painter.Clear 
Painter.AddImage('Chests/Closed(ou Open)Chests')
par
 Painter.Clear 
Painter.AddImage('Nature/Tree')
Xaumina
Le coffre fermé hérite de TBlock, et il faut qu'il hérite de TTree. On ne peut pas supprimer TBlock, sinon le programme ne reconnaît plus la propriété HideEffectAndTool. De même, si on supprime TTree, on ne peut plus s'accrocher à ce coffre...
sjrd
Ah oui j'avais oublié le HideEffectAndTool.

Bon ben on peut faire encore plus dégueu :
uses
  Chests;

obstacle TTreeLikeClosedChest(TTree)
  name 'Coffre fermé qui fait arbre en même temps';

  on DoDraw do
  begin
    ClosedChest.Draw(Context);
  end;

  on Pushing do
  begin
    ClosedChest.Pushing(Context);
  end;
end;
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB