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 :

Manipulation des champs à la souris


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Homme Profil pro
    Amateur
    Inscrit en
    Avril 2023
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Avril 2023
    Messages : 17
    Points : 17
    Points
    17
    Par défaut Manipulation des champs à la souris
    Bonjour,

    Novice en Windev, je suis en train de m'y mettre et après une approche un peu suspicieuse, je commence à lui trouver beaucoup de qualités.
    Je suis passé par la formation vidéo en ligne et l'auto-formation. J'arrive maintenant dans la réalisation d'un petit projet.

    Je voudrais pouvoir ajouter des images dans une fenêtre par programmation : ceci j'y arrive facilement avec ChampClone() et l'indirection.
    Je voudrais pouvoir déplacer les images à la souris dans la fenêtre : ceci j'y arrive en ajoutant une procédure à l'évènement WM_LBUTTONDOWN

    Pour dupliquer mon champ image :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    sNomImage est une chaîne
    gnImage_Nbre++
    sNomImage = "TABLE_UI_" + gnTable_Nbre
    ChampClone("IMG_UI",sNomImage,10,80)
    Evénement(Déplacer, {sNomImage +"..Nom"}, WM_LBUTTONDOWN)
    La procédure pour bouger l'image (je l'ai trouvée sur le forum de PCSoft

    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
     
    PROCÉDURE Déplacer()
     
    //On récupère la position du curseur au niveau de l'image
    nXPos, nYPos est un entier
    nXPos=SourisPosX()
    nYPos=SourisPosY()
     
    //tant que le clic gauche est enfoncé
    TANTQUE ToucheEnfoncée(teBoutonG) = Vrai
    	Multitâche(-1)
    	//On récupère la position du curseur sur la fenêtre
    	Res est un entier = CurseurPos(cpClient)
    	SI Res <> -1 ALORS
    		//On déplace le champ
    		{MoiMême..Nom,indChamp}..X = PoidsFaible(Res) - nXPos
    		{MoiMême..Nom,indChamp}..Y = PoidsFort(Res) - nYPos
    	FIN
    FIN

    Maintenant, j'aimerais pouvoir redimensionner mon image à la souris : sans trouver de solution à ce problème.

    J'ai vu également dans un poste qu'il existerait un exemple "WD poignée", mais que je ne trouve pas dans les exemples fournis avec ma version de Windev (une ancienne version 23), ce serait dans les nouvelles versions ?

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Je viens de trouver des commentaires sur cet exemple WD Poignées qui datent de 2007, donc cet exemple était déjà fourni.

    Déjà, quel est le fonctionnement précis voulu.
    On clique sur l'image (ou peut-être double-clic) et ce clic ajoute 4 poignées à l'image. Voire 8 poignées. Et quand ces poignées sont là, c'est plus facile (euh...).
    Reste à définir quelle opération fera disparaître les poignées.
    Puis à programmer ça.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    Au fil des versions, certains exemples ont disparu.
    WD poignées existe en WD 20 mais plus en 25.
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  4. #4
    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
    Citation Envoyé par tbc92 Voir le message
    Je viens de trouver des commentaires sur cet exemple WD Poignées qui datent de 2007, donc cet exemple était déjà fourni.

    On clique sur l'image (ou peut-être double-clic) et ce clic ajoute 4 poignées à l'image. Voire 8 poignées. Et quand ces poignées sont là, c'est plus facile (euh...).
    Reste à définir quelle opération fera disparaître les poignées.
    Puis à programmer ça.
    C'est exactement ce que fait l'exemple WD Poignée !

    Je l'ai en WD55 mais il puisqu'il existe en WD20 quelqu'un pourrait lui envoyer.
    Il migrera l'exemple pour son WD23.

  5. #5
    Membre confirmé Avatar de wd_newbie
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2007
    Messages
    723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 723
    Points : 627
    Points
    627
    Par défaut
    Tu as déjà fait le plus gros du boulot

    Une solution, mettre, par exemple une forme (rond ... carré ) en le positionnement hors de la fenêtre : FRM_Poignee

    Dans ta fonction "déplacer" tu ajoutes un code pour positionner la poignée au clic et lors du déplacement elle suit ton image :

    Dans l'exemple gsElementActive est l'image en cours, si tu veux en mettre plusieurs

    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
     
    PROCÉDURE Déplacer()
     
    //On récupère la position du curseur au niveau de l'image
    nXPos, nYPos est un entier
    nXPos=SourisPosX()
    nYPos=SourisPosY()
     
    // -- activer élement -- 
    gsElementActive = MoiMême..Nom 
     
    FRM_Poignee..Altitude = 1000000 // toujours au-dessus 
     
    //tant que le clic gauche est enfoncé
    TANTQUE ToucheEnfoncée(teBoutonG) = Vrai //et ToucheEnfoncée(teShift)
    	Multitâche(-1)
    	//On récupère la position du curseur sur la fenêtre
    	Res est un entier = CurseurPos(cpClient)
    	SI Res <> -1 ALORS
    		//On déplace le champ
    		{MoiMême..Nom,indChamp}..X = PoidsFaible(Res) - nXPos
    		{MoiMême..Nom,indChamp}..Y = PoidsFort(Res) - nYPos
    		FRM_Poignee..X = {gsElementActive + "..X",indChamp} +  {gsElementActive + "..Largeur",indChamp} - (FRM_Poignee..Largeur /2)
    		FRM_Poignee..Y = {gsElementActive + "..Y",indChamp} +  {gsElementActive + "..Hauteur",indChamp}- (FRM_Poignee..Hauteur /2)
     
    	FIN
    FIN
    et dans le code "Bouton gauche enfoncé" de la forme poignée, presque le même code :

    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
     
     
    //On récupère la position du curseur au niveau de l'image
    nXPos, nYPos est un entier
    nXPos=SourisPosX()
    nYPos=SourisPosY()
     
     
    //tant que le clic gauche est enfoncé
    TANTQUE ToucheEnfoncée(teBoutonG) = Vrai //ET ToucheEnfoncée(teShift)
    	Multitâche(-1)
    	//On récupère la position du curseur sur la fenêtre
    	Res est un entier = CurseurPos(cpClient)
    	SI Res <> -1 ALORS
    		//On déplace le champ
    		FRM_Poignee..X = PoidsFaible(Res) - nXPos
    		FRM_Poignee..Y = PoidsFort(Res) - nYPos
     
    		{gsElementActive + "..Largeur",indChamp} = FRM_Poignee..X -{gsElementActive + "..X",indChamp} +(FRM_Poignee..Largeur/2)
    		{gsElementActive + "..Hauteur",indChamp} = FRM_Poignee..Y -{gsElementActive + "..Y",indChamp} +(FRM_Poignee..Hauteur/2)
     
     
    	FIN
    FIN
    A affiner, mais c'est fonctionnel

  6. #6
    Membre à l'essai
    Homme Profil pro
    Amateur
    Inscrit en
    Avril 2023
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Avril 2023
    Messages : 17
    Points : 17
    Points
    17
    Par défaut
    Merci beaucoup, j'ai pu avancer avec l'astuce

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

Discussions similaires

  1. [WD15] Manipuler des chaine RTF dans un Champs saisie
    Par shemonet dans le forum WinDev
    Réponses: 3
    Dernier message: 10/02/2011, 15h23
  2. Manipuler des champs CLOB Oracle en C
    Par Agfa21 dans le forum C
    Réponses: 1
    Dernier message: 17/04/2009, 10h39
  3. [C#] Dessiner sur un canvas et manipuler des formes avec la souris
    Par nemesisTHEone dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 18/01/2009, 15h37
  4. Manipulation des champs CLOB
    Par FABFAB125 dans le forum SQL
    Réponses: 2
    Dernier message: 23/02/2007, 11h50
  5. opération sur des champs déjà manipulés
    Par fred23195 dans le forum SQL Procédural
    Réponses: 10
    Dernier message: 23/08/2006, 16h16

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