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

Delphi Discussion :

sorte de double "OnDrawColumnCell"


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 190
    Par défaut sorte de double "OnDrawColumnCell"
    Bonjour,

    J'ai crée un composant dérivé de TCustomDBGrid. Le principal comportement surchargé est le dessin de la grille (pour simplifier, couleur légèrement plus foncée une ligne sur deux).

    Lorsque je pose le composant sur une fiche, tout fonctionne bien.

    Mais là où je me perds, c'est quand dans une application qui utilise ce composant, je souhaite surcharger le dessin de la grille (les couleurs principalement) en fonction des données contenues...

    Sachant que j'ai une unité qui me permet de réaliser des mélanges de couleurs, j'aurai souhaité que les deux "customisations" se superposent par semi-transparence, mais je n'y parviens pas et plus j'essaye, plus je m'embrouille... J'ai l'impression qu'il n'y a de place que pour une des deux customisation, soit celle du composant, soit celle de l'application qui l'utilise.

    Avez-vous des pistes ou un pseudo-code pour m'aider à clarifier tout ça ? quelle portion de code doit être réalisé dans l'application, dans le composant ?...

    Jbat.

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Salut
    A la limite, tu peux faire un truc:
    Dessine ton composant tel qu'il doit être normalement. A la fin du Paint, ajoute un évènement OnAfterPaint.
    Dans le prog, utilise cet évènement pour dessiner par dessus ce qu'il y a déjà mais en transparence
    Sinon, pourquoi tu ne peux pas tout dessiner dans le Paint du compo?
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 190
    Par défaut
    après un bon week-end de sommeil, j'ai trouvé...

    Au cas où ça intéresserai d'autres, voici ce que j'ai fait...

    Dans mon composant, j'ai trois choses à faire :

    1°) Recoder "DefaultDrawColumnCell" en écrasant la méthode de la calsse mère. Dans mon "DefaultDrawColumnCell", j'altère légèrement et au dernier moment la couleur demandée pour tenir compte de la parité de la ligne.

    2°) Recoder également "DrawColumnCell"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TDbGridXt.DrawColumnCell(const Rect: TRect; DataCol: Integer;
      Column: TColumn; State: TGridDrawState);
        begin
            if Assigned(OnDrawColumnCell) then
            begin
                OnDrawColumnCell(Self, Rect, DataCol, Column, State);
            end
            else
            begin
                MyInnerDrawColumnCell(Self, Rect, DataCol, Column, State);
            end;
        end;
    3°) Coder MyInnerDrawColumnCell comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TDbGridXt.MyInnerDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
        begin
            DefaultDrawColumnCell(rect,datacol,column,state);
        end;
    Merci Pedro d'avoir regardé

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Salut
    J'ai pas bien compris ta solution mais quoi qu'il en soit, n'oublie pas le petit
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    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 491
    Par défaut
    salut

    pourquoi ne pas surcharger tout simplement la methode ?

    @+ Phil

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. doubles et simples quotes
    Par gloglo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/11/2008, 16h04

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