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

Composants VCL Delphi Discussion :

Changement de déclaration dans les classes dérivées


Sujet :

Composants VCL Delphi

  1. #1
    Membre confirmé Avatar de abdelghani_k
    Inscrit en
    Octobre 2002
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2002
    Messages : 184
    Par défaut Changement de déclaration dans les classes dérivées
    Bonjour,

    Je veux crée une classe dérivée de TBitBtn avec :
    TNumGlyphs = 1..12;

    dans la classe de base TBitBtn est TNumGlyphs = 1..4;

    Comment faire SVP ?

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 096
    Par défaut
    il faut que redefinisseTNumGlyphs, TBitBtnEx et un TButtonGlyphEx
    Faut savoir que 1..4 selon les options de compilation pourra être restrictif à 1, 2, 3 ou 4 ou permissif à toutes valeurs entières ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    type
      TNumGlyphs = 1..12;
     
      TButtonGlyphEx = class(TButtonGlyph)
      public
        property NumGlyphs: TNumGlyphs read FNumGlyphs write SetNumGlyphs;
      end;
     
    TBitBtnEx = class(TBitBtn)
      private
        function GetNumGlyphs: TNumGlyphs;
        procedure SetNumGlyphs(Value: TNumGlyphs);
      published
        property NumGlyphs: TNumGlyphs read GetNumGlyphs write SetNumGlyphs default 1;
      end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function TBitBtnEx.GetNumGlyphs: TNumGlyphs;
    begin
      Result := TButtonGlyph(FGlyph).NumGlyphs;
    end;
     
    procedure TBitBtnEx.SetNumGlyphs(Value: TNumGlyphs);
    begin
      if Value < 0 then Value := 1
      else if Value > 12 then Value := 12;
      if Value <> TButtonGlyphEx(FGlyph).NumGlyphs then
      begin
        TButtonGlyphEx(FGlyph).NumGlyphs := Value;
        Invalidate;
      end;
    end;
    cela masquera complètement l'ancienne propriété
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 493
    Par défaut
    salut

    tu veut faire un bouton a douze états différents ?
    je ne voit qu'une solution réécrire l'implémentation d'un bouton

    @+ Phil

    [EDIT] La proposition de modification du numglyph ne fonctionnera pas
    le dessin du bitmap étant dépendant de l'état du bouton
    [bsUp, bsDisabled, bsDown, bsExclusive]

    @+ Phil

  4. #4
    Membre confirmé Avatar de abdelghani_k
    Inscrit en
    Octobre 2002
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2002
    Messages : 184
    Par défaut
    Le compilateur m'affiche :
    Identificateur non déclaré TButtonGlyph
    malgré que l'unité Buttons est dans la clause uses.

  5. #5
    Membre confirmé Avatar de abdelghani_k
    Inscrit en
    Octobre 2002
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2002
    Messages : 184
    Par défaut
    Citation Envoyé par anapurna Voir le message
    salut

    tu veut faire un bouton a douze états différents ?
    je ne voit qu'une solution réécrire l'implémentation d'un bouton
    Alors à quoi sert l'héritage des classes dans l'orienté objet ?

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 493
    Par défaut
    salut

    a dériver les "class" mais il faut correctement choisir la "class" de base
    en l'occurrence pour moi le bitbtn ou le speedbutton ne font pas partie du bon choix

    le dessin de ces objet sont dépendant de leur états et pas du nombre de glyph
    installé

    @+ Phil

    [edit] remplace TButtonGlyph par TButtonGlyphEx

  7. #7
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 096
    Par défaut
    Citation Envoyé par abdelghani_k Voir le message
    Le compilateur m'affiche :
    Identificateur non déclaré TButtonGlyph
    malgré que l'unité Buttons est dans la clause uses.
    Tout a fait normal, c'est une classe interne à l'unité Buttons, et il faut soit la refaire complètement, soit écrire un code organisé différemment dans ton TBitBtnEx

    Sinon comme anapurna, 12 états, je trouve cela aussi très étrange, ça ne serait pas plus simple un BitBtn et une ImageList avec un peu de code autour ... ce n'est pas un bouton que tu vas utiliser partout ...

    Bonne remarque pour (bsUp, bsDisabled, bsDown, bsExclusive), si l'on regarde bien c'est le TButtonGlyph qui le gère et non le TBitBtn, il faudrait donc avoir une autre énumération, ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. problème d'accès dans une classe dérivée!
    Par chrono23 dans le forum C++
    Réponses: 47
    Dernier message: 10/10/2006, 11h22
  2. fopen dans les classes
    Par poussinphp dans le forum C++
    Réponses: 5
    Dernier message: 06/07/2006, 01h08
  3. [C++] Pb avec les variable static dans les classe
    Par quantik-revolution dans le forum C++
    Réponses: 3
    Dernier message: 03/03/2006, 18h40
  4. [preferences] pouvoir débuguer dans les classes de JAVA
    Par Satch dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 25/01/2006, 13h23
  5. Changement de couleur dans les cellules d'un tableau
    Par allowen dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/11/2005, 14h52

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