Event OnMouseEnter dans TBitBtn [Résolu]

Messages postés
192
Date d'inscription
mercredi 29 décembre 2004
Dernière intervention
2 octobre 2014
- - Dernière réponse : jderf
Messages postés
192
Date d'inscription
mercredi 29 décembre 2004
Dernière intervention
2 octobre 2014
- 27 déc. 2009 à 11:45
Bonjour,

Je ne comprend pas pourquoi la property OnMouseEnter n'est pas accesible dans le class TbitBtn alors qu'elle hérite de TControls.
J'ai trouvé des bouts de code qui surcharge la class Tbitbtn afin d'ajouter les évenements OnMouseEnter et OnMouseLeave. Mais cela me chagrine car dans la doc VCL, ci-dessous, la property est déclarée avec la visibilité protected donc visible par les class enfant !?


From Controls.pas

property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
Unit: Controls

Type: event

Visibility: protected

Member Of: TControl



Pourquoi surchargé alors ??

^Merci pour vos réponse et bon Noël.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
192
Date d'inscription
mercredi 29 décembre 2004
Dernière intervention
2 octobre 2014
3
Merci
Oui, oui, accessible pour les class enfants mais pas visible. Je viens de me faire une petit test. Encore merci.

Bonne journée.

Merci jderf 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de jderf
0
Merci
Salut

Simplement parce que TBitBtn hérite de TButton qui lui même n'admet pas cet évènement, qui lui même hérite de TButtonControl qui lui même n'admet pas cet évènement, qui lui même hérite de TWinControl qui lui même n'admet pas cet évènement.
Commenter la réponse de Utilisateur anonyme
0
Merci
Pour répondre clairement à ta question :
Protected signifie que cet évènement est accessible dans les classes enfants. Ceci dit accessible n'induit pas obligatoirement qu'il est déclaré dans ces dernières. Ainsi cet évènement est accessible depuis la classe TWinControl mais non déclaré : Bilan tu es obligé de surcharger la classe TBitBtn pour ajouter ces 2 évènements .
Commenter la réponse de Utilisateur anonyme
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
0
Merci
Dans ce cas-là, tu crée une unité séparée par exemple NewBitBtn.pas, et dedans, tu mets :
type
 TBitBtn = class(Controls.TBitBtn)
 published
  procedure OnMouseEnter;
  procedure OnMouseLeave;
 end;

N'oublie pas d'ajouter cette unité à la clause "uses" de ton application, après l'unité "Controls".

Cordialement, Bacterius !
Commenter la réponse de Bacterius
Messages postés
192
Date d'inscription
mercredi 29 décembre 2004
Dernière intervention
2 octobre 2014
0
Merci
Bonjour,

Merci pour vos réponses. Y'a visiblement un truc qui m'a échappé sur l'héritage. Pour moi une méthode déclarée protected dans une class parent était obligatoirement accessible dans toutes les class enfants.

A+
Commenter la réponse de jderf
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
0
Merci
Elle est accessible, mais c'est à toi de la déclarer afin de la rendre visible, en la redéclarant en published.

Cordialement, Bacterius !
Commenter la réponse de Bacterius

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.