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 :

Création Compo graphique : état des lieux


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut Création Compo graphique : état des lieux
    Pour des besoins particuliers, j'ai besoin d'un compo ayant tous les comportements d'un TPanel, et ses propriétés + quelques unes:
    • FIdentifiant
    • FAncetre
    • FEnfant
    • FCadet
    • FAine
    qui sont destinées à une sorte de chaînage par lien de parenté.

    je l'appelle TMonPnl, et ça fonctionne en l'état

    Atteint par le syndrome du toujours plus, je souhaite maintenant que ce panel s'enrichisse d'un petit quelque chose (carré, rond ou n'importe quoi) pour chaque lien de parenté existant.

    Après avoir épluché plusieurs sources/tutoriaux, j'ai pondu çacf le zip)
    En 1ère intention, lorsque j'alimente Ancetre (seul implémenté dans le source), j'ai bien le petit dessin, mais il ne "reste" pas sur le panel en cas de déplacement ou de changement de taille

    Ce que j'ai pu voir par ailleurs m'amène à penser qu'il faut intercepter l'événement Paint afin de procéder au traçage de mon petit indicateur de parenté.

    Je voudrais déjà une confirmation sur ce point avant les questions subsidiaires .

    Merci d'avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Par défaut
    Bonjour,


    Vous tracer vos dessin directement sur le canvas. Du coup A chaque fois que le canvas est redessinez, vous perdez le dessin. C'est exactement ce que vous penser.

    Pour le resoudre il faut fair un "override" de paint.
    Pour la declaration regarder dans l'unité ExtCtrls la déclaration de TCustomPanel (l'ancêtre directe de paint).

    Dans votre implementation de paint, faite un "inherited(paint);", puis lancer votre fonction "DrawLiens".

  3. #3
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    Alors...


    Ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    protected
        { Déclarations protégées }    
      public
    tu rajoutes...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected
        { Déclarations protégées }
        procedure Paint; override;
     public
    Tu fais Ctrl+Shift+C, et tu obtiens ceci (tout en bas de ton unité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TMonPnl.Paint;
    begin
      inherited;
    end;
    tu modifies pour que celà ressemble à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TMonPnl.Paint;
    begin
      inherited;
      DrawLiens;
    end;
    Et là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TMonPnl.SetAncetre(Ancetre:TRelation);
    begin
         FAncetre:=Ancetre;
         DrawLiens;
    end;
    tu modifies en écrivant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TMonPnl.SetAncetre(Ancetre:TRelation);
    begin
         FAncetre:=Ancetre;
         Invalidate; //Appelle le Paint
    end;
    Je crois que c'est tout

  4. #4
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut Du coup, pas de question subsidiaire !
    Je crois que c'est tout
    Ben.....ouais

    Nickel !

    Et dire que je me voyais parti pour 2 heures de coding/debug avec cette histoire là !

    Bon, faut croire que les exemples que j'ai vu par ailleurs avaient un besoin particulier pour intercepter le Paint avec gestion de msg, NotifyEvent etc...


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

Discussions similaires

  1. État des lieux sur l'utilisation du HTML5 par l'équipe de Kendo UI
    Par vermine dans le forum Balisage (X)HTML et validation W3C
    Réponses: 19
    Dernier message: 11/11/2012, 13h38
  2. [Autres] Création de graphique, ajouter des paramètres
    Par albedo0 dans le forum APIs Google
    Réponses: 4
    Dernier message: 06/10/2011, 09h36
  3. Java 7 : petit état des lieux du projet Lambda...
    Par adiGuba dans le forum Général Java
    Réponses: 2
    Dernier message: 28/08/2010, 10h44
  4. État des lieux de l'Open Source Business Intelligence
    Par ygrim dans le forum Approche théorique du décisionnel
    Réponses: 15
    Dernier message: 30/07/2008, 17h50

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