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

VB 6 et antérieur Discussion :

fonction ,command et raccourcis


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut fonction ,command et raccourcis
    Bonjour,

    Je suis en vb6, j'utilise un command pour lancer une fonction (en fait je la lance quatres fois)...

    J'ai un raccourcis clavier qui appel la commande "call command_click", mais j'ai un soucis.

    Si je fais un appui prolongé sur la touche de raccourcis ou que j'appuis plusieurs fois assez vite ca rame, je voudrais lancer le traitement de la fonction, qu'elle se termine et ensuite la relancer.

    merci à vous

    bauhaus

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    Quelle méthode utilises-tu pour cette touche de raccourci (code et lequel ou autre) ? (la réponse sera différente selon le cas de figure)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Bonjour,

    Quelle méthode utilises-tu pour cette touche de raccourci (code et lequel ou autre) ? (la réponse sera différente selon le cas de figure)
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    ..
    If KeyCode = vbKeyG Then Call cmdNext_Click
    ..
    End Sub

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    tu n'appeles pas là une fonction ! Tu déclenches un évènement click !

    Je te suggère alors :
    -de mettre le code le ton évènement Click dans une fonction ou une procédure toto
    - d'appeler toto depuis l'évènement Click en question
    - d'appeler toto lorsque tu utilises ton raccourci
    - d'utiliser une variable booléenne static pour forcer la main à ta fonction ou procédure

    Exemple : un bouton Command1 et un Label (pour voir) Label1

    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
    Private Sub Command1_Click()
     voyons
    End Sub
     
    Private Function voyons() As String
      Static pas_permis As Boolean
      If pas_permis Then Exit Function
      pas_permis = True
      Dim i As Long
      For i = 1 To 100
       i = i * 2
       Label1.Caption = i
       '=================================
       ' n'est là que pour te permettre de conster que si tu cliques à nouveau
       'avant la fin de la fonction, tu ne la relances pas
       depart = Timer
       '============================
       Do While Timer < depart + 1
         DoEvents
       Loop
      Next
      pas_permis = False
    End Function
     
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
      If KeyCode = vbKeyG Then voyons
    End Sub

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Bonjour,

    tu n'appeles pas là une fonction ! Tu déclenches un évènement click !

    Je te suggère alors :
    -de mettre le code le ton évènement Click dans une fonction ou une procédure toto
    - d'appeler toto depuis l'évènement Click en question
    - d'appeler toto lorsque tu utilises ton raccourci
    - d'utiliser une variable booléenne static pour forcer la main à ta fonction ou procédure

    Exemple : un bouton Command1 et un Label (pour voir) Label1

    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
    Private Sub Command1_Click()
     voyons
    End Sub
     
    Private Function voyons() As String
      Static pas_permis As Boolean
      If pas_permis Then Exit Function
      pas_permis = True
      Dim i As Long
      For i = 1 To 100
       i = i * 2
       Label1.Caption = i
       '=================================
       ' n'est là que pour te permettre de conster que si tu cliques à nouveau
       'avant la fin de la fonction, tu ne la relances pas
       depart = Timer
       '============================
       Do While Timer < depart + 1
         DoEvents
       Loop
      Next
      pas_permis = False
    End Function
     
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
      If KeyCode = vbKeyG Then voyons
    End Sub


    je viens de tester mais le probléme si je place mes appels de fonction

    a la place de depart = Timer

    la fonction voyon me lance plusieur fois les fonctions

    je ne sais pas si je suis clair là..

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    C'est clair !

    Mais cela veut dire que ta fonction tourne et se termine très vite et que tu aurrais alors le même problème en cliquant plusieurs fois de suite sur cOMMAND1 !!! (plus rien à voir avec ton seul raccourci).

    Remède : interdire le déroulement de la fonction lancée avant un délai d'attente "raisonnable" (2 secondes, par exemple)
    A la fin de ta fonction (juste avant le pas_permis = False) tu ajoutes tout bêtement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Depart = Timer
    Do while timer < depart + 2 'pour attendre 2 secondes)
      doevents
    Wend
    Il est maintenant clair que si tu recliques après 2 secondes, ou que tu laisses ton doigt sur la touche G plus de 2 secondes, la fonction se relancera ...
    Tu peux décider de la durée d'attente .... si tu veux ...

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Maintenant :

    Mon code précédent te protégeait également des clics intempestifs rapprochés.
    Si la seule chose que tu crains est le gros doigt qui s'endort sur la touche G, voilà une autre méthode :

    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
    Private censeur As Boolean
     
    Private Sub Command1_Click()
     voyons
    End Sub
     
    Private Function voyons() As String
      Dim i As Long
      For i = 1 To 100
       i = i * 2
        Label1.Caption = i
        '=================================
       ' n'est là que pour te permettre de conster que si tu cliques à nouveau
       'avant la fin de la fonction, tu ne la relances pas
       depart = Timer
       Do While Timer < depart + 1
         DoEvents
       Loop
      '============================
      Next
    End Function
     
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
      If censeur Then Exit Sub
      censeur = Not censeur
      If KeyCode = vbKeyG Then voyons
    End Sub
     
    Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
      censeur = Not censeur
    End Sub
    Bien que cette méthode-là te paraîtra plus simple, elle ne te protège que des "gros doigts" et pas des fous furieux qui cliqueraient à tire-larigot ...

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    C'est clair !

    Mais cela veut dire que ta fonction tourne et se termine très vite et que tu aurrais alors le même problème en cliquant plusieurs fois de suite sur cOMMAND1 !!! (plus rien à voir avec ton seul raccourci).

    Remède : interdire le déroulement de la fonction lancée avant un délai d'attente "raisonnable" (2 secondes, par exemple)
    A la fin de ta fonction (juste avant le pas_permis = False) tu ajoutes tout bêtement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Depart = Timer
    Do while timer < depart + 2 'pour attendre 2 secondes)
      doevents
    Wend
    Il est maintenant clair que si tu recliques après 2 secondes, ou que tu laisses ton doigt sur la touche G plus de 2 secondes, la fonction se relancera ...
    Tu peux décider de la durée d'attente .... si tu veux ...
    effectivement la fonction est relativement rapide 2 seconde c'est long..

    je liste quatre repertoires j'affiche 4 images et 4 listbox

    j'ai une erreur avec wend "erreur when sans while"

  9. #9
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Citation Envoyé par bauhaus Voir le message
    effectivement la fonction est relativement rapide 2 seconde c'est long..

    je liste quatre repertoires j'affiche 4 images et 4 listbox

    j'ai une erreur avec wend "erreur when sans while"
    Excuse : j'ai écrit à main levée.

    Remplace tout simplement Wend par Loop... (mais tu aurais pu le faire toi-même sans revenir avec une telle question, non ?... Il n'est pas bon de se contenter de faire comme l'oiselet qui attend la becquettée... il faut participer un peu...)

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Excuse : j'ai écrit à main levée.

    Remplace tout simplement Wend par Loop... (mais tu aurais pu le faire toi-même sans revenir avec une telle question, non ?... Il n'est pas bon de se contenter de faire comme l'oiselet qui attend la becquettée... il faut participer un peu...)
    surtout que tu l'avais ecrit juste avant..

    merci à toi en tout cas cela fonctionne

    Bauhaus

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

Discussions similaires

  1. [LibreOffice][Texte] Ajout de commandes pour raccourcis clavier sur Libre Office
    Par martinimy dans le forum OpenOffice & LibreOffice
    Réponses: 7
    Dernier message: 31/12/2014, 16h15
  2. Fonction GetTarget et raccourcis Bureau.
    Par Nicolas Coolman dans le forum Langage
    Réponses: 2
    Dernier message: 23/02/2013, 11h18
  3. Fonction commande : indexation conditionnée
    Par orphean dans le forum Programmation (La)TeX avancée
    Réponses: 8
    Dernier message: 14/07/2007, 09h37
  4. Réponses: 10
    Dernier message: 07/10/2003, 16h59
  5. Réponses: 3
    Dernier message: 02/09/2002, 18h49

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