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

WinDev Discussion :

Gestion de lien hypertext dans une colonne texte dans une table


Sujet :

WinDev

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut Gestion de lien hypertext dans une colonne texte dans une table
    Bonjour,

    Elle il possible de d'associer un lien hypertext à une adresse mail dans une colonne de table ,
    Je m'explique :
    J'ai une liste de client affichée dans une table (lecture seule).
    Dans cette liste, j'affiche l'adresse de mes clients dans une colonne dédié
    Et j'aimerais que l'adresse mail soit active. Autrement dit, quand le curseur de souris survol une adresse mail valide, l'adresse en question change d'aspect (couleur ou/et soulignement), éventuellement le curseur de souris change aussi (curseur mais et doigt pointé) et enfin au clic sur cette adresse mail, j'affiche une fenêtre ou je déclenche l'éditeur de mail paramétré dans windows.

    Voilà, est-ce possible svp ? Je ne trouve pas le moyen d'activer le lien.

    Merci
    Les solutions les plus simples sont les plus efficaces

  2. #2
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour

    Tu peux utiliser une colonne conteneur et y mettre un bouton ayant le style d'un lien hypertext
    Il suffit de modifier le style de survol de ce bouton selon ce que tu veux faire et mettre le curseur "main" dans ses propriétés

    Et pour les lignes sans mail tu fais disparaitre le bouton

  3. #3
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    je te conseille un double clic plutôt qu'un clic pour l'activation du lien sinon comment vas-tu éditer tes adresses mail ?
    voici ce que je te propose comme solution par exemple :
    dans le code de la fenêtre deux variables globales :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MemLigne,MemCol sont des entiers  = 0
    dans le code de l'événement survol souris de ta table (les adresses email se trouvent dans la 6ème colonne) :
    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
    16
    17
    18
    19
    20
    21
    //***WM_MOUSEMOVE***//
    MaLigne est un entier
    MaColonne est un entier
    SI TableOccurrence(MoiMême)>0 ALORS
    	MaLigne = TableInfoXY(MoiMême, tiNumLigne, SourisPosX(), SourisPosY())
    	MaColonne = TableInfoXY(MoiMême, tiNumColonne, SourisPosX(), SourisPosY())
    	SI MaColonne = 6  ET MemLigne <> MaLigne ALORS
    	SI MemLigne <> 0 ALORS 
    		MoiMême[MemLigne][MemCol]..Couleur = Noir
    		MoiMême[MemLigne][MemCol]..PoliceSoulignée = Faux
    		MoiMême..CurseurSouris = curFlèche
    	FIN
    	MemLigne = MaLigne
    	MemCol = MaColonne
    	Trace(MaColonne,MaLigne)	
    	MoiMême[MaLigne][MaColonne]..Couleur = BleuFoncé
    	MoiMême[MaLigne][MaColonne]..PoliceSoulignée = Vrai
    	MoiMême..CurseurSouris = curMain
    	FIN
    	SI MaColonne <> 6  ALORS MoiMême..CurseurSouris = curFlèche
    FIN
    et sur l'événement bouton gauche double clic de la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    MaLigne est un entier
    MaColonne est un entier
    SI TableOccurrence(MoiMême)>0 ALORS
    	MaLigne = TableInfoXY(MoiMême, tiNumLigne, SourisPosX(), SourisPosY())
    	MaColonne = TableInfoXY(MoiMême, tiNumColonne, SourisPosX(), SourisPosY())
    	SI MaColonne = 6  ET MaLigne > 0  ALORS
    		Trace(MaColonne,MaLigne,MoiMême[MaLigne][MaColonne])	
    		LanceAppliAssociée("mailto:" + MoiMême[MaLigne][MaColonne])
    		MoiMême[MaLigne][MaColonne]..Couleur = Noir
    		MoiMême[MaLigne][MaColonne]..PoliceSoulignée = Faux
    		FIN	
    FIN
    Il doit y avoir des bugs et des améliorations à faire mais cela donne un point de départ. A voir si cela n'aboutit pas à une impasse

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut Merci de votre aide
    Hpascal, c'est la piste que j'ai commencé à explorer. Le petit bémol c'est que, sauf erreur, je ne peux pas remplacer le libellé du bouton par l'adresse mail. Exact ?
    Du coup, j'ai 2 champs dans mon conteneur : Un champ lib qui contient l'adresse mail et qui réagit au survol et un bouton invisible pour gérer le lien. Tu ferais comme ça toi ?
    Comment faire disparaitre le bouton que sur certaines lignes !? Je ne sais pas faire cela, je savais même pas que c'était possible. Tu peux m'aider stp ?

    Jurassic, merci pour ta solution. Qu'entends tu par "comment vas tu éditer tes adresses mail" ?
    Dans la solution du champ conteneur, j'ai un champ lib qui contient l'adresse mail. Du coup, dans le code, je n'ai qu'à récupérer le contenu de ce champ lib.
    Tu penses que la solution n'est pas bonne ?

    Merci encore
    Les solutions les plus simples sont les plus efficaces

  5. #5
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    dans ma solution , la table d'origine n'est pas modifiée, il n' y a que du code à rajouter. Je viens de voir que ta table est en lecture seule alors tu n'édites pas les adresses email.
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  6. #6
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Citation Envoyé par lololebricoleur Voir le message
    Le petit bémol c'est que, sauf erreur, je ne peux pas remplacer le libellé du bouton par l'adresse mail. Exact ?
    Bien sur que si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Bt_TonBouton..Libellé = "xxxxxx@xxxxxxx.xxx"
    Perso je fais plutôt comme jurassic pork (survol et clic) car ça laisse beaucoup plus de possibilités et surtout, comme il le dit, c'est indépendant de la table

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    hpascal : je connais la propriété ..libellé pour les boutons mais je ne peux pas affecter un nom différent à chacun des bouton de chaque ligne de la table fichier, si ?

    Jurassic :
    - Qu'entend par "éditer les adresse mail" stp ? Cela pose un problème selon toi ?
    - Dans ton code, je ne comprend pas la variable "Memligne". D'ailleurs, elle n'est pas déclarée.

    Merci de votre aide
    Les solutions les plus simples sont les plus efficaces

  8. #8
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 998
    Points : 2 524
    Points
    2 524
    Par défaut
    Dans ton code, je ne comprend pas la variable "Memligne". D'ailleurs, elle n'est pas déclarée.
    Si, si elle est déclarée, relis bien le poste de JP.

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Hpascal : Autant pour moi, j'ai trouvé comment personnaliser les lib de bouton pour chaque ligne

    serendib : Dsl mais je ne vois pas la déclaration. Je vois bien "Maligne" mais pas "Memligne". D'ailleur, quand je fais un copier/coller du code, j'ai une erreur de déclaration.
    Les solutions les plus simples sont les plus efficaces

  10. #10
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    Arf Lolo soit tu ne vois pas l'intégralité de mon message ou soit il va falloir que tu achètes des lunettes . Je répète alors le code du début de mon message :

    dans le code de la fenêtre (ou du projet) on déclare deux variables globales :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MemLigne,MemCol sont des entiers  = 0
    Ces deux variables servent à mémoriser la position de la ligne courante et la colonne courante de la table(pendant le survol).

    Qu'entend par "éditer les adresse mail" stp ? Cela pose un problème selon toi ?
    Non cela ne pose pas de problème , oublie ce que j'ai dit.

    Finalement si ta table n'est qu'en lecture seule, le code que j'ai mis pour le double-clic, tu peux le mettre dans le code de Sélection d'une ligne de la table. Dans ce cas ne pas oublier d'enlever le code du double-clic. En faisant comme cela, le programme de courriel s'ouvre sur simple clic sur l'adresse email de la table.

    Ami calmant, J.P

    P.S : J'ai utilisé l'exemple didactique de Windev WD Mailing par emails pour le test. La table utilisée est la table TABLE_Clients de la fenêtre FEN_Principale.
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    JP, Serendib, toutes mes excuses,

    Effectivement, je crois que vais prendre un rdv chez l'ophtalmologiste

    Je trouve beaucoup plus simple d'utiliser un conteneur avec un bouton qui prend l'adresse mail pour libellé ou caché si l'adresse n'est pas renseignée.
    J'ai juste à renseigner le code du bouton pour vérifier l'adresse mail et lancer l'appli associée aux mails ou ouvrir ma fenêtre de traitement.
    Cela semble parfaitement fonctionner et j'ai du mal à voir ce que pourrait m'apporter de plus la solution de gestion par survol qui est plus lourde en code selon moi ?

    En tous cas, merci à tous
    Les solutions les plus simples sont les plus efficaces

  12. #12
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut
    Bonjour

    @lololebricoleur
    voir ce que pourrait m'apporter de plus la solution de gestion par survol qui est plus lourde en code selon moi
    La solution de jurassic pork est plus proche du système et donc moins lourde en exécution

    A cela deux arguments :
    - la possibilité d'adapter cela à d'autres champs et c'est pas rien. Tous les champs ne peuvent pas intégrer un bouton... : Portabilité.
    - le branchement d'un évènement sur un champ ne coute rien que le code de l'évènement. Il respecte la manière dont on inter-agit avec l'IHM. L'ajout de champ créé en effet une poignée supplémentaire (dans le cas d'une table une par ligne de la table) et tous les évènements natifs et ce qu'un champ implique dans une fenêtre : Légèreté.

    Cette solution est moins facile coté développeur, il faut brancher un évènement, mais terriblement plus économe coté machine... avec moins de limitation coté utilisateur.
    Ces petites choses, appliquées à un projet entier, font la différence.

  13. #13
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut Merci R&B
    R&B :
    La solution de jurassic pork est plus proche du système et donc moins lourde en exécution
    J'ai du mal à comprendre que le code de Jurassik soit moins lourd que le mien dans la mesure ou :
    - Son code compte presque quarante lignes
    - Le code de survol est exécuté en "permanence" , même quand ce n'est pas nécessaire

    Alors que mon code compte moins de 10 lignes est il n'est exécuté que si besoin.

    Merci de ton aide, j'ai tellement de chose à apprendre
    Les solutions les plus simples sont les plus efficaces

  14. #14
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut
    re...

    Voila ce qui motive mon affirmation, je puis évidement me tromper...

    JP ne fait qu'ajouter un évènement qui doit être possible d'optimiser pour "éviter" tout déclenchement inutile : il gère déjà la table vide, on doit pouvoir mémoriser la position x + largeur de la colonne pour traiter le survol hors zone. Cela fait, on a bien un unique évènement sur le champ.

    Maintenant pour le bouton dans la table...

    Chaque champ ajouté à une fenêtre y ajoute une occurrence d'un un objet champ avec ses propriétés (description) et abonne des portions de code de la fenêtre ("code" des évènement du champ). L'EDI organise ces portions de code de manière à assurer une saisie simplifiée : code du champ réparti en plusieurs évènements auquel on ajoute des sections. En fait cela ne fait qu'adresser ces codes aux évènement du champ, lesquels sont présent par défaut mais ne déclenche aucun code.

    La solution de la table conteneur est structurée comme suit :
    Table (niveau 1) = collection de colonnes (niveau 2).
    Une colonne "Conteneur" (objet adressé au niveau 2) = Collection de champs (niveau 3).
    Un bouton dans conteneur (objet adressé au niveau 3) => répété autant de fois que de lignes
    A chaque ligne on implémente une description bouton au niveau 3 et l'ajoute au niveau 2.
    Cette implémentation comporte sa description propre et ses évènements propres : en conséquence par copie car je vois mal une prise de référence (chaque occurrence est distincte)... et c'est là que l'on consomme.

    Je peux me tromper mais si le code est plus long, il à le mérite de limiter la profondeur des champs de la fenêtre (arrêt au niveau 2)... et donc l'occupation RAM de la fenêtre.
    Ensuite, on "charge" le CPU de réagir aux évènement... mais c'est précisément une réaction aux évènement IHM qui ne produiront pas un ralentissement de chargement... pour une meilleure expérience utilisateur. En effet, l'évènement en cause pouvant être rapidement limité dans son exécution, son incidence est faible.

    En revanche on set bien dans le "développer 10x+vite". Je confirme... sans jugement.

    Voila donc le détail de cette affirmation que des spécialistes pointus pourront contredire ou améliorer

  15. #15
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut Merci R&B
    L'explication est claire et je comprend mieux le raisonnement.
    Merci ;-)
    Les solutions les plus simples sont les plus efficaces

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/03/2015, 11h46
  2. [XL-2010] Créer des liens hypertextes automatiquement sur les valeurs d'une colonne
    Par Mikayel dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/10/2014, 15h22
  3. Réponses: 3
    Dernier message: 29/03/2011, 20h38
  4. Réponses: 3
    Dernier message: 06/12/2010, 15h59
  5. Réponses: 3
    Dernier message: 29/06/2007, 15h29

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