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

Contribuez Delphi Discussion :

Petite démo de création de liens visuels entre tables


Sujet :

Contribuez Delphi

  1. #1
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut Petite démo de création de liens visuels entre tables
    J'ai exhumé un vieux code Delphi 2 que j'ai remis au goût du jour

    https://github.com/tothpaul/DelphiTips.LinkEditor

    et comme une image vaut mieux qu'un long discours, voici ce que ça donne

    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 460
    Points : 24 874
    Points
    24 874
    Par défaut
    On a tous je crois fait ce genre de petit outil pour s'amuser un jour ... j'ai commencé cependant en D4, un peu par hasard en transformant un TPanel en Splitter qui a eu l'effet de le rendre déplacement et redimensionnable que j'ai réutilisé pour le forum cette année
    Lenteur lors de la création dynamique des composants

    Un jour, j'ai repris et j'ai refait tout en DXE2 avec un code POO : composant flow graphique où je me suis surtout amuser avec les fleches en diagonales et la sélection autour (pour un autre projet), je ne l'ai jamais fini d'ailleurs : Graphe orienté et Delphi

    Nom : Sans titre.jpg
Affichages : 238
Taille : 60,5 Ko
    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 éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    ah super !

    oui mon projet et sans prétention, c'est vraiment une mise au propre d'un code réalisé sous Delphi 2 il y a fort longtemps

    et on pourra le mixer avec celui , ça serait amusant

    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 460
    Points : 24 874
    Points
    24 874
    Par défaut
    Excellent le dernier, c'est tout à fait l'idée, pour des projets professionnels sérieux, on se fait une petite étude de faisabilité dans un projet fantaisiste, c'est vrai que si l'on avait le temps de combiner toutes les conneries réalisées, il y aurait surement un truc top à obtenir, sachant que le plus intéressant au final cela sera de découpler le code au plus que possible, un peu en appliquant une pattern Decorateur où l'on peut substituer un comportement par un autre ou les combiner
    En 2014, j'avais un peu tenté cela en reprenant un tas de code D5-D7, BCB6 et BCB2007, BCBXE3 vers un XE2, je suis loin d'avoir eu le temps de tout reprendre.
    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

  5. #5
    Membre confirmé Avatar de Galet
    Homme Profil pro
    Consultant/Programmeur Robotique industrielle
    Inscrit en
    Mars 2010
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant/Programmeur Robotique industrielle

    Informations forums :
    Inscription : Mars 2010
    Messages : 323
    Points : 484
    Points
    484
    Par défaut
    Modeste représentant d'un probable grand nombre d'amateurs pour lesquels ces "petits" tests représentent une mine d'idées et exemples...
    Merci de partager ces "bouts de code"....
    Bon we à tous,
    Windows 10 / Delphi Tokyo
    "Les choses ne changent pas. Change ta façon de les voir, cela suffit" Lao Tseu

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2021
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Services de proximité

    Informations forums :
    Inscription : Décembre 2021
    Messages : 164
    Points : 187
    Points
    187
    Par défaut
    Bonjour,

    Tout d'abord, un grand merci pour cette source qui m'a vraiment fait avancer dans un projet visant a générer des requêtes SQL pour des utilisateurs ne sachant pas utiliser MySQL, j'avais un outils (Datamodeler) qui fonctionnait avec InterBase mais je n'avais pas d'équivalent pour MySQL!

    Si cela intéresse, je pourrais publier le résultat (bien que mon code est probablement brouillon à côté du code source ).

    J'ai juste une remarque à faire, et une question sur le projet :

    - Les liens peuvent paraître incohérents si l'item sélectionné n'est pas visible :
    Nom : exemple.png
Affichages : 180
Taille : 5,6 Ko
    (Je sais que c'est qu'une démo, mais je ne sais pas si cela a été remarqué)

    - Ma question est au niveau de la syntaxe d'une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Link.LinkType and 2 = 0 then // Link.LinkType est un Integer
    Cette condition me laisse perplexe, si j'ai bien compris avec mes tests ça veut dire que 0/1 c'est bon, 2/3 c'est pas bon ,4/5 oui etc ? C'est la première fois que je vois ce genre de condition .

  7. #7
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut Integer Binaire
    Citation Envoyé par PetitBoutDeCode Voir le message
    Bonjour,

    - Ma question est au niveau de la syntaxe d'une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Link.LinkType and 2 = 0 then // Link.LinkType est un Integer
    Cette condition me laisse perplexe, si j'ai bien compris avec mes tests ça veut dire que 0/1 c'est bon, 2/3 c'est pas bon ,4/5 oui etc ? C'est la première fois que je vois ce genre de condition .
    Si le 2ème bit de ton integer Link.LinkType est à 0

  8. #8
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par PetitBoutDeCode Voir le message
    Bonjour,

    Tout d'abord, un grand merci pour cette source qui m'a vraiment fait avancer dans un projet visant a générer des requêtes SQL pour des utilisateurs ne sachant pas utiliser MySQL, j'avais un outils (Datamodeler) qui fonctionnait avec InterBase mais je n'avais pas d'équivalent pour MySQL!

    Si cela intéresse, je pourrais publier le résultat (bien que mon code est probablement brouillon à côté du code source ).

    J'ai juste une remarque à faire, et une question sur le projet :

    - Les liens peuvent paraître incohérents si l'item sélectionné n'est pas visible :
    Nom : exemple.png
Affichages : 180
Taille : 5,6 Ko
    (Je sais que c'est qu'une démo, mais je ne sais pas si cela a été remarqué)

    - Ma question est au niveau de la syntaxe d'une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Link.LinkType and 2 = 0 then // Link.LinkType est un Integer
    Cette condition me laisse perplexe, si j'ai bien compris avec mes tests ça veut dire que 0/1 c'est bon, 2/3 c'est pas bon ,4/5 oui etc ? C'est la première fois que je vois ce genre de condition .
    joli bug je corrigerais si je trouve 2 min...il faut borner la position de la flèche en fonction de la taille de la fenêtre

    quand au LinkType j'aurais pu déclarer pour plus de lisibilité ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    type
      TLinkTypes = (LeftToRight, RightToLeft);
      TLinkType = set of TLinkTypes;
    ce qui revient au même puisque Ord([LeftToRight]) = 1, Ord([RightToLeft]) = 2 et Ord([LeftToRight, RightToLeft]) = 3tu remarqueras que dans TDesignLink.Draw il y a ce code qui dessine les extrémités des flèches
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        if LinkType and 1 <> 0 then
          Polygon(Arrow1);
        if LinkType and 2 <> 0 then
          Polygon(Arrow2);
    il aurait donc pu s'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        if LeftToRight in LinkType then
          Polygon(Arrow1);
        if RightToLeft in LinkType then
          Polygon(Arrow2);
    mais par exemple le double click qui change le type de lien serait un peu plus verbeux que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     FCurLink.LinkType := 1 + Succ(FCurLink.LinkType) mod 3;
    le LinkType est donc 1 (de droite à gauche) 2 (de gauche à droite) ou 3 (double sens), avec la formule 1 devient 2, 2 devient 3 et 3 devient 1
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2021
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Services de proximité

    Informations forums :
    Inscription : Décembre 2021
    Messages : 164
    Points : 187
    Points
    187
    Par défaut
    Je vois, merci pour ces précisions, je comprend un peu mieux maintenant ^^.

    Pour le bug, je vais me pencher dessus dès que j'aurais fini le plus gros de mon programme, ça sera l'occasion de réussir à comprendre cette partie du code

Discussions similaires

  1. VCL lien visuel entre Stringrid
    Par Galet dans le forum Composants VCL
    Réponses: 6
    Dernier message: 06/05/2021, 10h55
  2. Création lien HTML entre les mêmes pages
    Par metabaron81 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 16
    Dernier message: 10/03/2011, 23h06
  3. Comment modéliser des liens multiples entre tables ?
    Par MadM@tt dans le forum Schéma
    Réponses: 2
    Dernier message: 15/11/2007, 16h51
  4. [Talend Open Studio] Liens multiples entre tables
    Par supprend dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 01/04/2007, 11h42
  5. Créations et liens entre Javadoc
    Par marchand_de_sable dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 10/06/2006, 16h07

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