Event OnMouseEnter dans TBitBtn [Résolu]

jderf 192 Messages postés mercredi 29 décembre 2004Date d'inscription 2 octobre 2014 Dernière intervention - 24 déc. 2009 à 12:05 - Dernière réponse : jderf 192 Messages postés mercredi 29 décembre 2004Date d'inscription 2 octobre 2014 Dernière intervention
- 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
jderf 192 Messages postés mercredi 29 décembre 2004Date d'inscription 2 octobre 2014 Dernière intervention - 27 déc. 2009 à 11:45
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de jderf
Utilisateur anonyme - 24 déc. 2009 à 17:37
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
Utilisateur anonyme - 24 déc. 2009 à 18:03
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
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 25 déc. 2009 à 04:02
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
jderf 192 Messages postés mercredi 29 décembre 2004Date d'inscription 2 octobre 2014 Dernière intervention - 27 déc. 2009 à 10:43
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
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 27 déc. 2009 à 10:45
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.