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

LabVIEW Discussion :

[LabView 8.2] Définir la position d'une face avant


Sujet :

LabVIEW

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 67
    Points : 69
    Points
    69
    Par défaut [LabView 8.2] Définir la position d'une face avant
    Je cherche à faire apparaitre une face avant à l'emplacement du curseur de la sourie.

    Dans les faits :
    J'ai mon vi principal qui "tourne" et quand je fais un clic droit un autre vi ce lance, sa face avant s'affiche.
    Ca c'est ok.
    Mais je veux que cette face avant s'affiche là où le clic droit a eu lieu.
    Pas de problème pour récupérer la position du curseur (avec une structure événement) mais je n'arrive pas à définir la position du vi.

    J'ai essayé avec un nœud de propriété position sur le vi mais je crois que ça marche qu’en lecture.

    Voila si quelqu'un à une solution.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 11
    Points : 14
    Points
    14
    Par défaut Position !
    alors alors
    clic droit sur diagramme
    programation -> controle d'application -> reference de VI statique.
    double clic dessus et choisi ton vi
    ensuite clic droit sur diagramme
    programation -> controle d'application -> noeud de methode
    clic sur methode -> face avant -> position a l'execution -> personnalise
    et le tour est joue

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 67
    Points : 69
    Points
    69
    Par défaut
    Merci bien pour ta réponse, ça marche nickel à 2 problème prés :

    1) La structure événement renvoie les coordonnées de la sourie par rapport à la référence de la face avant (l'intersection des 2 lignes épaisses de la face avant).
    De plus elle renvoie une paire left-top alors que l'on utilise une paire top-left mais bon il suffit d'inverser les éléments du cluster de la structure événement.
    Si on place la référence de la face avant en haut à gauche de ce que l'on voit de celle-ci, il suffit d'ajouter les coordonnées top-left de la face avant (qui sont relative au coin supérieur gauche de l'écran) au cluster inversé de la structure événement. Pour avoir les coordonnées top-left le la face avant : nœud de méthode->Fenêtre face avant->limite face avant.
    Mais si la référence de la face avant est à un endroit quelconque, là c'est un autre problème. Donc ma question est peut on récupérer les coordonnées de la référence de la face avant par rapport à la référence de l'écran? Ou est ce qu'il y a un autre moyen?

    2) Quand on fait un clic droit sur le vi principal un autre vi (*) est lancé.
    Mais si on fait un autre clic sans que l'on est fermé *, un autre * est mit en mémoire est il apparé quand on ferme le premier *.
    J'ai essayé avec une structure condition et une variable globale pour piloter celle-ci mais ça ne marche pas car ma structure événement est imbriqué dans un while qui ne tourne plus tant que * est lancé, donc le changement de ma global n'est pas perçu par ma structure condition.

    Merci d’avance.

    A oui j’oublié bonne année (un peu en avance).

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 11
    Points : 14
    Points
    14
    Par défaut avec GetCursorPos
    j'espere que tu n'utilises pas linux !!
    avec une dll de windows tu peux recuprer les coordonnees de ton curseur
    user32.dll dans system32
    utilise la fonction GetCursorPos avec comme parametres un tableau d'enier 32 bits signe a une seul dimensions


    ce vi pourra peut etre t'aider !!
    bonne annee a toi aussi avec un peu d'avance
    Fichiers attachés Fichiers attachés

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 67
    Points : 69
    Points
    69
    Par défaut
    Oui j'utilise bien windows.

    J'ai testé avec appeler une fonction dll, mais j'ai LV qui plante à l'exécution de celle-ci.

    J'ai bien pris GetCursorPos et j'ai ajouté un paramètre en tableau 1d 32bit, je n'ai rien mit en entrée à part l'erreur.

    A la limite peux-tu m'envoyer ton exemple en LV8.2 ou version antérieur car je n’ai pas la version 8.5.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 67
    Points : 69
    Points
    69
    Par défaut
    Bon en fait c'est bon.
    Il faut câbler en entée une constante tableau 1D avec les 2 premières cases à 0 (à 0, pas une case vide (grisée)) et il faut aussi mettre la conversion d'appel en "stdcall" et pas en "C".

    Je vais voir si je trouve une astuce pour le problème 2.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 11
    Points : 14
    Points
    14
    Par défaut pb2
    euh en fait j'ai pas compris le probleme n°2!!
    si tu pouvais etre un peu plus precis !!!

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 67
    Points : 69
    Points
    69
    Par défaut
    En fait le vi principal est lancé, quand tu fais clic droit sur celui-ci un sous vi apparait.
    Si tu refais clic droit sur le vi principal sans avoir fermé le sous vi à priori rien ne ce passe.
    Mais quand tu ferme le sous vi que tu as à l'écran un deuxième apparaitre (sans que tu face un autre clic droit, en fait le deuxième clic reste en mémoire est apparait à l'itération suivante).

    Je veux donc empêcher l'apparition d'une deuxième fenêtre.

    Voici un petit exemple.
    Fichiers attachés Fichiers attachés

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 11
    Points : 14
    Points
    14
    Par défaut
    ne m'en veut pas mais la franchement je calle !!
    j'ai essayer une autre methode mais ca n'a pas fonctionner non plus
    le seul truc qui a marcher avec ma methode c'est clic droit pour ouvrir et clic gauche pour fermer
    je continue a chercher un peu mais je te promet rien
    de plus je suis embete avec toi parce que je peu pas creer de fichier pour version 8.2 !! il me reste une machine en 8.2 mais au boulot et je t'avoue qu'au boulot j'ai pas trop le temps

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 67
    Points : 69
    Points
    69
    Par défaut
    Ce n’est pas grave je met résolu (une bonne partie du problème est résolu) et puis quelqu'un trouve une réponse qu'il là post.

    Merci encore pour ton aide.

    (PS : tu peux pas faire enregistrer dans une version précédant avec la 8.5?)

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 67
    Points : 69
    Points
    69
    Par défaut
    Désolé pour le double poste mais j'ai trouvé.

    Il faut mettre le sous vi dans une structure condition avec rien dans la condition faux.

    Un registre à décalage sur le while :
    -coté gauche : à l'exterieur du while : un constante vrai
    à l'intérieur du while : on relie à la structure condition
    -coté droit : à l'intérieur du while : on cable à la structure événement et on met constante faux pour sourie appuyé et constante vrai pour time out.

    Et là ... ça marche pas...

    Mais en mettant une autre structure condition( dans le while) piloté par la condition qui sort de la structure événement, avec comme condition faux un wait (50 ms ça passe) et comme condition vrai rien.

    Je n’ai pas trop compris pourquoi le wait est nécessaire, ça doit venir de la vitesse de traitement du PC.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [Toutes versions] Définir la position d'une TextBox avec une variable
    Par tools dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/08/2012, 13h45
  2. [LabVIEW 8.6] Création dynamique de commandes sur face avant
    Par ArnaudMartin dans le forum LabVIEW
    Réponses: 4
    Dernier message: 16/07/2009, 08h37
  3. [Débutant] Afficher une face avant graphe XY
    Par Navcom83 dans le forum LabVIEW
    Réponses: 2
    Dernier message: 30/03/2009, 09h15
  4. [LabVIEW 8.2] Faire disparaître une face-avant
    Par ptit_knard dans le forum LabVIEW
    Réponses: 2
    Dernier message: 16/01/2009, 14h14
  5. Réponses: 4
    Dernier message: 12/06/2007, 09h34

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