Forthian
Messages postés7Date d'inscriptionmercredi 21 janvier 2004StatutMembreDernière intervention 4 février 2004
-
4 févr. 2004 à 08:20
cs_Saris
Messages postés24Date d'inscriptionmardi 14 novembre 2000StatutMembreDernière intervention28 octobre 2006
-
7 mars 2006 à 18:10
Et oui encore un soucis.
Je dois faire un héritage de la classe TImage appellée TImageFille. Jusque là pas de problème je pense. Voici mon code:
#ifndef Unit2H
#define Unit2H
//--------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//--------------------------------------------------------------------
class TImageFille : public TImage
{
__published: // Composants gérés par l'EDI
private: // Déclarations utilisateur
public: // Déclarations utilisateur
__fastcall virtual TImageFille(Classes::TComponent* AOwner)
:TImage(AOwner){};
//--------------------------------------------------------------------
extern PACKAGE TImageFille *ImageFille;
//--------------------------------------------------------------------
#endif
Là où mon problème survient, c'est que je dois faire de cette classe un gestionnaire des événements OnMouseDown et OnDragOver. Ceci se fait en surchargeant les paramètres du constructeur à mon avis. Mais je n'arrive pas à produire quelque chose de correct vu que je n'ai jamais fait de surcharge d'événements.
Merci de me guider.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 8 févr. 2004 à 00:03
pour pouvoir surchaarger une fonction (c'est bien de cela qu'il s'agit?) il faut que celles ci soient déclarées comme virtuelles dans la classe de base
cs_Saris
Messages postés24Date d'inscriptionmardi 14 novembre 2000StatutMembreDernière intervention28 octobre 2006 7 mars 2006 à 16:11
As tu trouver une solution ? par ce que j'ai le m^me problème pour la surcharge des évènements de la souris sur mon image...
Quand vecchio56 dis : "virtuelles dans la classe de base", c'est dans notre classe où dans la TImage parce que normalement ça dervait être possible de surcharger ces fonctions...?
//---------------------------------------------------------------------------
// Constructeur
// IN : jeu - pointeur vers la classe jeu
// control - la fenètre sur laquelle on effectue le rafraichissement
//---------------------------------------------------------------------------
__fastcall LettreVisuelle::LettreVisuelle(char cLettre,
TWinControl *control, int iTop, int iLeft) : TImage(control)
{
...
}
//---------------------------------------------------------------------------
cs_Saris
Messages postés24Date d'inscriptionmardi 14 novembre 2000StatutMembreDernière intervention28 octobre 2006 7 mars 2006 à 18:10
voilà ce qui dise sur MSDN :
Le déclenchement d'un événement appelle le gestionnaire d'événements par l'intermédiaire d'un délégué. Pour plus d'informations, consultez Déclenchement d'un événement.
La méthode OnMouseDown autorise également les classes dérivées à gérer l'événement sans y attacher de délégué. C'est la méthode recommandée pour gérer l'événement dans une classe dérivée.
Remarques destinées aux héritiers : Lors de la substitution de OnMouseDown dans une classe dérivée, veillez à appeler la méthode OnMouseDown de la classe de base de manière à ce que les délégués inscrits reçoivent l'événement.
problème : ça marche toujours pas ... help me plz !