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

VBScript Discussion :

[HTA] Définir event dynamiquement


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re

    mais je me pose toujours la question vu ton enoncé de départ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" style="width:250px;" id="MachineObjectOU" name="MachineObjectOU" onclick="javascript:TogglePopupBox('MachineObjectOU');" onkeydown="javascript:TogglePopupBox('MachineObjectOU');" onpropertychange="javascript:ValidateOU();" />
    des paramètres entre guillemets ne change pas alors pourquoi pas simplement faire 2 sub

    TogglePopupBox
    et
    ValidateOU
    puisque l'argument et le même et fixe pour le prp..change et le click
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Ils ne changent pas dans l'exemple mais c'est un popup dynamique et donc mon paramètre est l'id de l'input concerné.

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    et alors????
    to id est injecté en dur alors a quoi ca sert?????
    autant utiliser le id en dur dans la sub ma fois !!!?????

    au lieu de


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub truc (argument_ID)
    msgbox argument_ID
    end sub
    faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sub truc ()
    arrgument_ID="toto"
    msgbox argument_ID
    end sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Le truc c'est que j'ai plusieurs éléments qui appellent cette fonction.
    Et qui passe en paramètre un input text qui doit être la target de ma popup box.
    Un bouton, un label.....

    Donc problème
    L'idée de cette fonction justement c'est qu'elle affiche ou cache le popup en prenant en paramètre l'élément destination sous lequel sera affiché le popup.

    Donc je ne peux pas faire simplement avec event.source
    Il me faut bien un paramétre à passer à la fonction.

    Ce que je ne comprends pas c'est pourquoi lorsqu'on sauvegarde dans un variable et qu'on restaure ça fonctionne.
    Mais pas quand on définit stricto sinco la même valeur en string alors que c'est bien du string qui est sauvegarde, ça ne fonctionne pas....
    Il y a bien un truc par là :S

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    tu es testard hein!!!

    si je te dis que tu n'est pas obligé de mettre une variable dans l'appel en argument c'est que tu n'est pas obligé

    tiens teste ce hta

    et en plus on lui change la fonction dynamiquement a chaque click c'est ce que tu voulais non
    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
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
         "http://www.w3.org/TR/html4/strict.dtd">
    <HTML>
    <HEAD>
    <TITLE>A document with SCRIPT</TITLE>
    <META http-equiv="Content-Script-Type" content="text/tcl">
    <script type="text/vbscript" >
    function createevenement()
    document.getElementById("text1").onclick = GetRef("sub1")
    document.getElementById("text2").onclick = GetRef("sub1")
    document.getElementById("text3").onclick = GetRef("sub1")
    msgbox "evenement créé!!"
    end function 
    sub sub1()
    obj= document.activeElement.id
    msgbox "la sub 1 a été apelée par le bouton " &  obj
    document.getElementById("text1").onclick = GetRef("sub2")
    document.getElementById("text2").onclick = GetRef("sub2")
    document.getElementById("text3").onclick = GetRef("sub2")
    end sub
    sub sub2()
    obj= document.activeElement.id
    msgbox "la sub 2 a été apelée par le bouton " &  obj
    document.getElementById("text1").onclick = GetRef("sub1")
    document.getElementById("text2").onclick = GetRef("sub1")
    document.getElementById("text3").onclick = GetRef("sub1")
    end sub
    </script> 
    </head>
    <body onload="createevenement"> 
    <input type="text" style="width:250px;" id="text1"  />
    <input type="text" style="width:250px;" id="text2"  />
    <input type="text" style="width:250px;" id="text3"  />
     
    </body> 
    </html>
    conclusion

    document.activeElement!!!!!! sorti tout droit du HTML5 encore en développement mais suffisant pour ce cas
    voila maintenant tu a en vbs intégral l'attribution dynamique de la fonction et l'argument par le activeElement directement
    on est ok c'est bon??
    edit:

    et si tes librairies ne sont pas a jour ca arrive selon le system et le mode de mise a jour
    tu a ElementFromPoint qui fonctionne très bien en vbs je l'utilise d'ailleurs même en vba si tu te souviens de ma fausse classe control

    je pourrais ajouter qu'il serait facile dans mon exemple que au lieu de changer la fonction au 3 textbox en même temps
    il serait facile de le faire que pour celui qui a été cliqué et cela dans la même sub pour tous

    allez tiens parce que c'est dimanche
    les sub sont attribuées dynamique au click pour les 3 textbox dans la même sub mais séparément et cela avec elementFromPoint
    tout bêtement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <HEAD>
    <TITLE>A document with SCRIPT</TITLE>
    <META http-equiv="Content-Script-Type" content="text/tcl">
    <script type="text/vbscript" >
    ' creation et attribution evenement (click)
    function createevenement()
    document.getElementById("text1").onclick = GetRef("sub1")
    document.getElementById("text2").onclick = GetRef("sub1")
    document.getElementById("text3").onclick = GetRef("sub1")
    msgbox "evenement créé!!"
    end function
    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
    sub sub1()
     x =window.event.clientX:  y = window.event.clientY              ' on determine le point ou se trouve la souris 
    obj= document.elementFromPoint(x,y).id                                ' on capte l'element qui se trouve au point x,y
    msgbox "la sub 1 a été apelée par le bouton " &  obj
    'on attribu l'autre sub a l'element qui vient d'etre cliqué
    document.getElementById(obj).onclick = GetRef("sub2")    'on attribu l'autre sub a l'element qui vient d'etre cliqué
    end sub
    sub sub2()
     x =window.event.clientX:  y = window.event.clientY             ' on determine le point ou se trouve la souris 
    obj= document.elementFromPoint (x,y).id                              ' on capte l'element qui se trouve au point x,y
    msgbox "la sub 2 a été apelée par le bouton " &  obj
    document.getElementById(obj).onclick = GetRef("sub1")   'on attribu l'autre sub a l'element qui vient d'etre cliqué
    end sub
    </script> 
    </head>
    <body onload="createevenement"> 
    <input type="text" style="width:250px;" id="text1"  />
    <input type="text" style="width:250px;" id="text2"  />
    <input type="text" style="width:250px;" id="text3"  />
    
    </body> 
    </html> </html>
    
     


    maintenant on est bon hein !!!
    purée je suis revenu a l'Age de pierre avec ton truc c'est tellement plus facile en JS

    je conclurais que c'est une belle erreur de faire cela en vbs faut pas oublier que le DOM évolue et bientôt on pourra plus gérer ca en VBS
    c'est pour ca que je me suis mis au JS
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Ah !!! Du grand Patrick comme j'aime le retrouver

    Merci, super en effet !

    Poir l'info je fais des wizard MDT et malheureusement pas le choix, c'est du VBS avec de l'html décomposés en deux fichiers exécuter par mshta et point barre...

    Je préfère de loin le JS surtout avec des frame comme JQuery ou Prototyp y a pas photo
    Je n'ai aucun souci avec ces techno web.
    Par contre avec des vieux machins comme HTA qui en plus utilise des vielles lin et un vieux moteur IE.....

  7. #7
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Reste tout de même un problème (tout petit)

    C'est que l'idée était de n'avoir qu'une seule fonction TogglePopupBox avec en paramètre le nom de l'id sur lequel l'afficher.
    Mais pour autant, j'ai aussi des boutons qui appellent TogglePopupBox avec le nom de l'id d'un autre élément de la page...

    Donc pour ces boutons, on ne peux pas utiliser document.activeElement.id puisque c'est sur un autre éklément qu'on souhaite afficher le popup

    Et dans ce cas, je suis du coup obliger de créé une nouvelle fonction qui gérera le onclick de l'input qui appellera TogglePopupBox avec en paramètre document.activeElement.id

    Une dernière proposition ?

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Mais pour autant, j'ai aussi des boutons qui appellent TogglePopupBox avec le nom de l'id d'un autre élément de la page...

    Donc pour ces boutons, on ne peux pas utiliser document.activeElement.id puisque c'est sur un autre éklément qu'on souhaite afficher le popup

    Et dans ce cas, je suis du coup obliger de créé une nouvelle fonction qui gérera le onclick de l'input qui appellera TogglePopupBox avec en paramètre document.activeElement.id

    Une dernière proposition ?
    ho mais elle st toute simple tu manque de réflexion d'après toi comment sans injection d'argument on peut dire a la fonction que c'est un autre élément en paramètre que celui qui est cliqué

    allez un indice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if document.activeElement.id ="toto" then obj="titi"
    ou meme un select case

    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
    select case document.activeElement.id
     
    case "toto"
    'ici on garde "toto
    obj="toto"
    case "titi
    'ici on garde "titi"
    case "cérédé"
    'ici par exemple on change 
    obj="non!! c'est Patrick"
    case Patrick
    obj="non c'est cérédé"
     
    end select
    msgbox obj
    je n'ai jamais essayé un select case en vbs dans un html mais je ne vois pas pourquoi ca matcherait pas

    sinon une série de if a l'ancienne puisqu'on y est en plein dans un jurrassichtmlpark

    voila voila
    pas de limite ce toulonnais rien ne l'arrête pas même la déontologie

    Par contre avec des vieux machins comme HTA qui en plus utilise des vielles lin et un vieux moteur IE.....
    détrompe toi perso je code en JS maintenant dans mes htas il suffit de mettre au moins la balise meta compatible IE edge pour bénéficier du DOm2 et je jquery & JS
    on perd juste la manipulation de certaines constante de l'object applicationen haut de code c'est tout, ce qui est largement rattrapable en JS

    et il y a le fait aussi que l'on peut appeler une fonction/sub vbs a partir de JS en ce qui te concerne se serait le chemin a prendre pour avoir une gestion d'évènement solide
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. [Débutant] changer event dynamiquement
    Par mapmip dans le forum VB.NET
    Réponses: 4
    Dernier message: 19/07/2011, 20h35
  2. Réponses: 4
    Dernier message: 08/02/2010, 23h10
  3. Réponses: 1
    Dernier message: 05/02/2010, 13h10
  4. définir margin dynamiquement ?
    Par thibotus01 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 22/07/2009, 00h39
  5. Ajouter un event dynamiquement pour iexplorer
    Par infostars dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 31/03/2009, 16h41

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