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 :

Créer son propre objet bulle [WD16]


Sujet :

WinDev

  1. #1
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 46
    Points
    46
    Par défaut Créer son propre objet bulle
    Bonjour,

    Suite à la proposition de Gardangel dans ce sujet, j'aimerai développer mon propre objet bulle, mais je ne sais pas par où commencer ....
    Pouvez-vous me donner des indications ou une méthodologie qui me permettrait d'avancer sereinement ?
    Par avance merci,

    pompomthebest

  2. #2
    Membre confirmé Avatar de PaulNero
    Homme Profil pro
    DBA Senior Oracle and SQL SERVER
    Inscrit en
    Octobre 2010
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : DBA Senior Oracle and SQL SERVER
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 416
    Points : 470
    Points
    470
    Par défaut re
    Je ne sais pas trop ce que vous entendez par objet bulle,mais essayez ceci:
    essayez de regardez: BalloonTip dans l'aide.


    paulnero
    Cordialement,
    J'ose espérer que m'a contribution vous a été d'une grande aide.
    Pensez tout de Même à dire MERCI et marquer RESOLU en cas de satisfaction.
    Paul

  3. #3
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    un idée est de créer une fenêtre (sans cadre) qui fera la bulle : masquée quand elle n'est pas au dessus d'un champ concerné.

    Il faut donc gérer les événements windows pour capturer la position de la souris.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  4. #4
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 46
    Points
    46
    Par défaut re
    Merci de vos propositions.

    Je viens d'essayer mais l'inconvénient c'est que cela est assez lourd en traitement. Comme Gardangel parlé d'élément bulle comme traitement fluide, je pense qu'il dois exister une api ou autre pour créer des bulles d'aide windows.

    Mais je ne vois pas trop comment il a fait cela.

    Si vous avez d'autres idées n'hésitez pas.

  5. #5
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Effectivement, c'est autre chose.

    il faut rechercher les api windows qui vont bien.

    Je n'ai pas trouvé sur gogol... Peut-être sur un autre forum de développez.com...
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  6. #6
    Membre habitué
    Homme Profil pro
    Main frame, Unix, Windows, AS400
    Inscrit en
    Mars 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Main frame, Unix, Windows, AS400
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 111
    Points : 171
    Points
    171
    Par défaut
    Comme c'est si bien demandé... ... pour les images seulement

    Sur l'élément à afficher une "bulle" :
    - Ajouter événement "entrée souris" ;
    - Ajouter événement "sortie souris" ;
    - Ajouter une "zone" libellé qui fera office de bulle ;
    - Sur l'élément, si c'est une image seulement, ajouter un l'information à afficher ;

    Entrée souris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Image_Afficher_InfoBulle(FenEnExécution, MoiMême..Nom,{FenEnExécution + ".LIB_Image_Explication",indChamp}..Nom)
    Sortie souris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {FenEnExécution + ".LIB_Image_Explication",indChamp}..Visible = Faux
    Fonction Image_Afficher_InfoBulle
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    PROCEDURE Image_Afficher_InfoBulle(uneFenêtre, uneImage, unChampCommentaire)
    nFacteurEspacement est un entier = 10
    nFacteurDépassementX, nFacteurDépassementY est un entier
    sUnChampSurvolé est une chaîne = uneImage
    Res est un entier = CurseurPos(cpClient)
    nPositionPremiereLigne est un entier = PoidsFort(Res)-{uneImage,indChamp}..Hauteur+{uneImage,indChamp}..Y
    SI Position(sUnChampSurvolé,"IMG") <> 0 ALORS
    	SI {sUnChampSurvolé,indChamp}..Valeur <> "" ALORS		
    		SI Res <> -1 ALORS								
    			SI ChampExiste(sUnChampSurvolé) ALORS
    				// Afficher le champ des commentaires en haut si l'image dépasse la fenêtre par en bas
    				// Idem par à droite par la gauche
    				nFacteurDépassementX = PoidsFaible(Res) + nFacteurEspacement + {unChampCommentaire,indChamp}..Largeur
    				nFacteurDépassementY = PoidsFort(Res) + nFacteurEspacement + {unChampCommentaire,indChamp}..Hauteur
     
    				SI nFacteurDépassementY > {uneFenêtre,indChamp}..Hauteur ALORS
    					{unChampCommentaire,indChamp}..Y = PoidsFort(Res) + nFacteurEspacement - {unChampCommentaire,indChamp}..Hauteur
    				SINON
    					{unChampCommentaire,indChamp}..Y = PoidsFort(Res) + nFacteurEspacement
    				FIN
     
    				SI nFacteurDépassementX > {uneFenêtre,indChamp}..Largeur ALORS
    					{unChampCommentaire,indChamp}..X = PoidsFaible(Res) + nFacteurEspacement - {unChampCommentaire,indChamp}..Largeur
    				SINON
    					{unChampCommentaire,indChamp}..X = PoidsFaible(Res) + nFacteurEspacement
    				FIN
     
    				{unChampCommentaire,indChamp}..Valeur = {sUnChampSurvolé,indChamp}..Libellé
    				{unChampCommentaire,indChamp}..Visible = Vrai
    			FIN
    		SINON
    			{unChampCommentaire,indChamp}..Visible = Faux
    		FIN
    	SINON
    		{unChampCommentaire,indChamp}..Visible = Faux
    	FIN
    SINON
    	{unChampCommentaire,indChamp}..Visible = Faux
    FIN
    le code est pas optimisé (il fonctionne, thats it) et ne se redimensionne pas si le texte est plus petit... Il est tjrs de la même grosseur.

  7. #7
    Membre habitué
    Homme Profil pro
    Main frame, Unix, Windows, AS400
    Inscrit en
    Mars 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Main frame, Unix, Windows, AS400
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 111
    Points : 171
    Points
    171
    Par défaut
    Une petite image... pour réduire la lourdeur de la fenêtre, l'utilisateur peut obtenir les informations d'une légende, avec l'idée de bubulle. Je n'ai pas le choix de rendre mes interfaces très légères... Un seul informaticien pour 200 utilisateurs, j'ai besoin que ce soit intuitif... La fameuse gestion du changement.

    L'idée d'illustrer des images, une force de Windev (avec sa grande bibliothèque) permet de réduire un paquet d'écriture superflue.. et de laisser place à une image claire (avec une bulle pour détail).

    Une des clefs du succès dans l'interface, je le crois, repose sur l'idée de vision globale avec possibilité du détail "live". La bulle répond exactement à ce besoin... En espérant que ce concept vous sera utile.

    Sinon, je suis disponible pour vos questions.

    Jean-François
    Images attachées Images attachées  

  8. #8
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 46
    Points
    46
    Par défaut Parfait
    Bonjour Gardangel,

    Merci bien ce que vous me donnez marche parfaitement. Cela me sauve la vie...Je vous remercie beaucoup.

    J'ai mis en place cela en adaptant quelques petites lignes de code par rapport à mon projet.

    Voici ma procédure avec redimensionnement de la fenêtre en fonction du contenu :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    PROCEDURE Image_Afficher_InfoBulle(suneFenêtre, suneImage, sunChampCommentaire, sInfoAAfficher)
     
    nFacteurEspacement est un entier = 10
    nFacteurDépassementX, nFacteurDépassementY est un entier
    rHauteurChampBulle est un réel
    rLargeurChampBulle est un réel
    sUnChampSurvolé est une chaîne = suneImage
    nRes est un entier = CurseurPos(cpClient)
    nPositionPremiereLigne est un entier = PoidsFort(nRes)-{suneImage,indChamp}..Hauteur+{suneImage,indChamp}..Y
    SI Position(sUnChampSurvolé,"Img") <> 0 ALORS //Si on est bien sur le champ image		
    		SI nRes <> -1 ALORS								
    			SI ChampExiste(sUnChampSurvolé) ALORS
    				// Afficher le champ des commentaires en haut si l'image dépasse la fenêtre par en bas
    				// Idem par à droite par la gauche
    				nFacteurDépassementX = PoidsFaible(nRes) + nFacteurEspacement + {sunChampCommentaire,indChamp}..Largeur
    				nFacteurDépassementY = PoidsFort(nRes) + nFacteurEspacement + {sunChampCommentaire,indChamp}..Hauteur
     
    				SI nFacteurDépassementY > {suneFenêtre,indChamp}..Hauteur ALORS
    					{sunChampCommentaire,indChamp}..Y = PoidsFort(nRes) + nFacteurEspacement - {sunChampCommentaire,indChamp}..Hauteur
    				SINON
    					{sunChampCommentaire,indChamp}..Y = PoidsFort(nRes) + nFacteurEspacement
    				FIN
     
    				SI nFacteurDépassementX > {suneFenêtre,indChamp}..Largeur ALORS
    					{sunChampCommentaire,indChamp}..X = PoidsFaible(nRes) + nFacteurEspacement - {sunChampCommentaire,indChamp}..Largeur
    				SINON
    					{sunChampCommentaire,indChamp}..X = PoidsFaible(nRes) + nFacteurEspacement
    				FIN
     
    				{sunChampCommentaire,indChamp}..Valeur = sInfoAAfficher
    				rHauteurChampBulle=TexteHauteur({sunChampCommentaire,indChamp},sInfoAAfficher) //Prépare la hauteur du champ en fonction du texte à afficher
    				rLargeurChampBulle=TexteLargeur({sunChampCommentaire,indChamp},sInfoAAfficher)+5 //Prépare la largeur du champ en fonction du texte à afficher
    				{sunChampCommentaire,indChamp}..Hauteur = rHauteurChampBulle
    				{sunChampCommentaire,indChamp}..Largeur = rLargeurChampBulle
    				{sunChampCommentaire,indChamp}..Visible = Vrai
    			FIN
    		SINON
    			{sunChampCommentaire,indChamp}..Visible = Faux
    		FIN
    SINON
    	{sunChampCommentaire,indChamp}..Visible = Faux
    FIN
    Cela aidera peut être les suivants...

    Bonne journée à tous

  9. #9
    Membre habitué
    Homme Profil pro
    Main frame, Unix, Windows, AS400
    Inscrit en
    Mars 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Main frame, Unix, Windows, AS400
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 111
    Points : 171
    Points
    171
    Par défaut
    C'est un plaisir. Cependant, il aurait été intéressant de redimensionner la bulle en fonction de la taille du texte.

    Quelqu'un se lance pour procéder à la modif ?

    Jean-François

  10. #10
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 58
    Points : 55
    Points
    55
    Par défaut
    Si je puis me permettre, je vais piquer ce petit bout de code, car je me sens très feignant ce soir.

  11. #11
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 46
    Points
    46
    Par défaut c'est déjà fait
    Gargandel c'est ce que j'ai fais de redimensionner en fonction du contenu ...
    Regarde bien dans ma procédure à ce niveau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    rHauteurChampBulle=TexteHauteur({sunChampCommentaire,indChamp},sInfoAAfficher) //Prépare la hauteur du champ en fonction du texte à afficher
    				rLargeurChampBulle=TexteLargeur({sunChampCommentaire,indChamp},sInfoAAfficher)+5 //Prépare la largeur du champ en fonction du texte à afficher
    				{sunChampCommentaire,indChamp}..Hauteur = rHauteurChampBulle
    				{sunChampCommentaire,indChamp}..Largeur = rLargeurChampBulle
    Bonne journée

  12. #12
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Merci à vous Gargangel et pompomthebest

    Je garde ça sous le coude

  13. #13
    Membre habitué
    Homme Profil pro
    Main frame, Unix, Windows, AS400
    Inscrit en
    Mars 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Main frame, Unix, Windows, AS400
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 111
    Points : 171
    Points
    171
    Par défaut
    La solution ne répond pas au besoin. Généralement, elle ne devrait pas non plus être utile...

    L'idée d'infobulle est d'afficher des explications détaillées sur une image ou encore du texte. Ce détail prend un niveau d'espace qui dépasse les limites du code suggéré. Ton code, dans le cas d'une grande explication, dépasse les limites de l'écran (la largeur maximum).

    Pour être idéal, il faudrait calculer un ratio largeur VS hauteur avec une balise maximum pour ces deux paramètres...

    Le code pour faire cela, j'ose croire, devra considérer le pixel (la grosseur de la police avec son calcul d'épaisseur)... Code qui est beaucoup plus complexe et compliqué que ceux proposés.

    J'apprécie ta contribution.

    Jean-François

  14. #14
    Membre habitué
    Homme Profil pro
    Main frame, Unix, Windows, AS400
    Inscrit en
    Mars 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Main frame, Unix, Windows, AS400
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 111
    Points : 171
    Points
    171
    Par défaut
    Aussi, personnellement, le redimensionnement d'un cadre de texte est plus lourd visuellement qu'un cadre fixe. Ma logique, d'avoir exclu le redimensionnement, considère ce désagrément pour le regard. Je défini le cadre pour le texte le plus long dans la fenêtre utilisée.

    Et comme ce cadre sert principalement à l'idée d'une légende standard, le positionnement varie très peu (coordonnées X & Y sur la surface de l'image).

    Mais tout cela est très subjectif... ou peut-être pas.

    Bonne journée,

    Jean-François

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

Discussions similaires

  1. Créer son propre objet graphique sous Android
    Par ram-0000 dans le forum Android
    Réponses: 4
    Dernier message: 11/12/2012, 12h37
  2. Créer son propre LayoutManager
    Par tomburn dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 17/03/2005, 16h15
  3. créer son propre protocole
    Par matthew_a_peri dans le forum Développement
    Réponses: 11
    Dernier message: 04/03/2005, 14h16

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