IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Super inherited ? [FAQ]


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 59
    Points : 45
    Points
    45
    Par défaut Super inherited ?
    Bonjour,

    Y a-t-il un moyen de sauter un niveau d'héritage ? En clair, d'appeler la méthode du grand-pere sans passer par celle du pere ?

    Dans mon cas, il s'agit d'un composant et d'une methode gérant les messages windows.

    Plus précisement, je dois ecrire un composant combo ayant un affichage personnalisé ; j'ai donc hérité de TCustomComboBox et implémenté le WM_Paint.
    Ce WM_paint appelle le inherited qui renvoie sur le WM_paint du TCustomComboBox qui se charge d'appeler le WM_Paint du TWinControl par un inherited puis de dessiner le control.
    Moi, j'en envie de zapper le dessin dans TCustomComboBox (puisque je le dessine dans mon WM_Paint) mais je ne peux pas me passer du WM_Paint du TWinControl.

    Dans l'absolu, ca marche qd mm (le dessin est écrasé) mais c'etait pour optimiser.


    Merci pour toute piste,
    _pirBD_

  2. #2
    Membre expert
    Avatar de Bestiol
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 515
    Points : 3 894
    Points
    3 894
    Par défaut
    Je vais peut-être dire une bétise, mais est-ce que dans ton paint si tu remplaçais "inherited" par "TWinControl(Self).Paint" ça marcherait ?
    Mea est trop forte, elle flotte : mea coule pas !

    Basically this boot sector (Win95) code is 32 bit extension for a 16 bit patch to an 8 bit boot sector originally coded for a 4 bit microprocessor, written by a 2 bit company, that can't stand 1 bit of competition.

    olance.developpez.com
    Servez-vous, profitez, abusez de la FAQ Delphi !!

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 485
    Points
    485
    Par défaut
    Citation Envoyé par Bestiol
    Je vais peut-être dire une bétise, mais est-ce que dans ton paint si tu remplaçais "inherited" par "TWinControl(Self).Paint" ça marcherait ?
    je n'ai pas teste mais je ne pense pas que ca marche.
    Ce genre d'instruction va tout simplement appeller la methode qui se trouve à l'offset Paint dans TWinControl de l'objet Self.
    Ce qui signifie d'appeller la methode Paint de l'objet Self si l'objet descend de TWinControl.

  4. #4
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Bonjour,

    Je crois plutôt que le problème viens du combobox lui même. il n'y pas vraiment d'effet paint dans TCustomComboBox : par contre lors de la création de la fenêtre, on envoie les paramêtres à Windows pour qu'il Crée une fenêtre de type combobox. ensuite windows gère la fenêtre avec les messages.

    Sinon, overrider le paint serait suffisant. Or çà ne l'est pas.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 59
    Points : 45
    Points
    45
    Par défaut
    Merci pour les reponses,


    Je suis allé un peu vite en écrivant le premier message, je n'avais en effet pas vraiment testé sur le composant et je croyais que ca allait marcher comme ca ....

    J'ai trouvé depuis un composant combo duquel je vais m'inspirer pour personnaliser l'affichage (TALComboBox si ca interresse quelqu'un).

    La question initiale, a savoir s'il est possible de 'sauter' un niveau de inherited doit être valable pour d'autres composants meme si je n'ai pas d'exemple sous la main .

    Je pense toutefois qu'un tel super inherited n'est pas prévu dans la syntaxe Delphi, mais peut etre quelqu'un pourra affirmer ou infirmer mes dires
    _pirBD_

Discussions similaires

  1. [Conception][Factory] Packages inheritance
    Par ludovic.fernandez dans le forum Général Java
    Réponses: 5
    Dernier message: 05/07/2004, 17h02
  2. Font "times new roman" super moche avec mdk 9.2
    Par shkyo dans le forum Mandriva / Mageia
    Réponses: 6
    Dernier message: 15/04/2004, 18h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo