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 :

Composants graphiques dynamiques


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Par défaut Composants graphiques dynamiques
    Bonjour,

    Je cherche à programmer une interface qui permettrait à un utilisateur de manipuler des petites boîtes avec sa souris (les déplacer, les aggrandir ou les réduire).
    Ces petites boîtes doivent pouvoir contenir du texte. Donc pour l'instant je fais ça avec des composants TListBox (je pourrais en utiliser d'autres, mais ceux-ci me conviennent), que je crée dynamiquement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maBoite := TListBox.Create(self);
    Ensuite, je suis capable de les déplacer avec la souris par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TControl(sender).Perform(WM_SysCommand, $F012, 0);
    Je peux aussi changer leur taille par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TControl(sender).Perform(WM_SysCommand, $F008, 0);
    Maintenant, j'aimerais pouvoir ajouter des liens (des flêches) qui relient ces différentes boîtes. L'utilisateur pourrait ainsi facilement concevoir des diagrammes style UML. Mon problème, c'est que je ne sais pas quel genre de composants utiliser pour ces flêches. Et de plus, je ne suis pas certain que la façon dont je procède soit la meilleure.

    Ma question est donc : quel composant utiliser pour faire les flêches ? Et si ce n'est pas possible en procédant ainsi, comment procéder ?

    D'avance, un grand merci.

  2. #2
    Membre Expert Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 553
    Par défaut
    Tu as un composant dans la JVCL qui fait ça.
    C'est le TJvCustomDiagramShape tu as un exemple livré dans la JVCL qui UseCaseEditor.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Par défaut
    Merci Phil, et même merci beaucoup.

    J'ai bien regardé le composant TJvCustomDiagramShape et ses dérivés. Il est très pratique, et il correspond bien à ce que je cherche. Il permet en effet de créer des composants, et des liens entre ceux-ci, le tout pouvant être déplacé dynamiquement. Super !

    Mon soucis, c'est que, comme je l'ai dit, j'aimerais pouvoir utiliser des composants un peu plus complexes pour faire les noeuds de mon "graphe". Par exemple, des TListBox. J'ai donc, il me semble, deux possibilités :

    Solution 1.
    Faire exactement comme je l'avais présenté dans mon premier post, c'est-à-dire créer mes TListBox, et écrire moi-même leur code pour les déplacer. Pour faire les connexions, je transforme mes TListBox en TJvCustomDiagramShape :

    Transformation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Composant1, Composant2 : TJvCustomDiagramShape;
    Composant1 := TJvCustomDiagramShape(UneTListBox);
    Composant2 := TJvCustomDiagramShape(UneAutreTListBox);
    Et connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MonConnector: TJvConnector;
    MonConnector.StartConn.Shape := Composant1;
    MonConnector.EndConn.Shape := Composant2;
    Il me semble que cette solution n'est pas très propre. En effet, j'utilise les composants TJvCustomDiagramShape juste pour brancher les connecteurs, mais c'est moi qui met mon code pour gérer les déplacements. Résultat : quand je déplace un objet, les connexions ne suivent pas très bien, les connexions deviennent incomplètes à l'affichage.

    Solution 2.
    Faire une sous-classe qui dérive de TJvCustomDiagramShape, et plus précisément de TJvSizeableShape, et qui dérive également de TListBox. Mon problème, c'est que je ne sais pas faire !

    Me comprends-tu ? As-tu des solutions à me proposer ?
    En tout cas, un grand, grand merci d'avance.

  4. #4
    Membre Expert Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 553
    Par défaut
    Comme ce type de comportement est assez complexe à faire je te conseille plutôt de partir du composant existant et de le modifier.
    Par contre que veux tu utiliser comme fonctions de la TListBox ? Pourrais tu utilser un composant plus simple comme un TMemo par exemple ?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Par défaut
    Les TListBox me conviennent assez bien car je souhaite pouvoir traiter indépendamment les lignes de texte dans les boîtes.

    Par contre, peux-tu me détailler un peu la façon dont tu procèderais ? Je ne suis pas certain de comprendre ta réponse.

    En te remerciant.

Discussions similaires

  1. Insérer des composants graphiques dynamiques dans une JSP
    Par wafabrj dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 22/05/2012, 11h31
  2. Composant graphique dynamique
    Par nretrain dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 20/07/2011, 10h56
  3. Composant graphique dynamique
    Par Baptiste Wicht dans le forum Android
    Réponses: 0
    Dernier message: 20/03/2011, 14h27
  4. Réponses: 4
    Dernier message: 03/07/2007, 09h42
  5. Changement dynamique d'un composant graphique
    Par Fabouney dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 13/06/2006, 10h36

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