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

Composants VCL Delphi Discussion :

Evènement sur clic droit !?


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 60
    Points : 47
    Points
    47
    Par défaut Evènement sur clic droit !?
    Bonjour,

    J'ai fait une petite procedure pour changer mon image à chaque clic gauche...
    3 images qui défilent les unes après les autres, le 4ème clic efface
    l'image et on peut repartir pour un cycle... :

    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
     
    procedure TFrmResultats.B5Click(Sender: TObject);
    begin
      if Sender is TImage then
      with Sender as Timage do
      begin
        Tag:=Tag+1;
        case Tag of
          0: Picture.Assign(Vide.Picture);
          1: Picture.Assign(But.Picture);
          2: Picture.Assign(But2.Picture);
          3: Picture.Assign(But10.Picture);
          4: begin
            Picture.Assign(Vide.Picture);
            Tag := 0;
          end;
        end;
      end;
    end;
    J'aimerais pouvoir effacer l'image directement par un clic droit de souris
    et éviter d'avoir à terminer le cycle....comment obtenir un évènement sur un clic droit !?
    J'aimerais éviter de passer par des évènements genre
    onmouseUp/onmousedown/onmousemove car j'ai l'impression que c'est le
    coup à perdre des clics dans le cas où la souris est immobile....et même
    si je voulais passer par onmousemove, je ne vois pas comment il faudrait
    faire pour savoir si un clic droit a été détecté....quelqu'un a un exemple de code que je pourrais étudier !?

    Au passage, un autre problème qui m'easpère car vraiment simple mais je
    n'y arrive pas ! Je ne parviens pas à obtenir le nom de tous les sous
    répertoires dans un répertoire particulier ! J'utilise tout naturellement
    findfirst/findnext comme je l'ai utilisé plusieurs dizaines de fois pour
    trouver des fichiers mais en utilisant fadirectory et je ne parviens pas à
    filtrer QUE les répertoires....j'ai vu du code sur sur forum qui revient exactement à la même chose que j'ai tenté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      Chaine:='.\Championnats\*.*';
      Findfirst(Chaine,faDirectory,sr);
      lbteams.items.add(Sr.Name);
      while FindNext(sr) = 0 do
      begin
        lbteams.items.add(Sr.Name);
      end;
      FindClose(sr);
    J'ai placé 3 répertoires dans le répertoires "championnats"....j'aurais aimé
    extraire ces 3 noms de la liste mais il ne filtre pas QUE les répertoires :
    .
    ..
    10 aine de fichiers listés
    les 3 répertoires à extraire listés

    Je ne souhaiterais mettre dans la listbox que le nom de ces 3 derniers....
    bref, je ne vois pas ce qui ne va pas j'aime pas bloquer sur des trucs
    bètes comme ça !

    Cordialement,

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 60
    Points : 47
    Points
    47
    Par défaut
    Concernant les répertoires, j'ai trouvé mieux, il filtre bien les fichiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      Chaine:='.\Championnats\.*';
      Findfirst(Chaine,faDirectory,sr);
      lbteams.items.add(Sr.Name);
      while FindNext(sr) = 0 do
      begin
        lbteams.items.add(Sr.Name);
      end;
      FindClose(sr);
    Mais il laisse encore les '.' et '..' :

    .
    ..
    Repertoires listés


    Suffit de supprimer les 2 1ères lignes mais il doit bien avoir une solutions
    pour vraiment ne garder que les répertoires et faire tout en un seul coup !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 60
    Points : 47
    Points
    47
    Par défaut
    Oups, erreur dans le code précédent, ça n'est pas '.*' mais '*.', voilà la correction avec en plus les conditions pour supprimer les '.' et '..' mais c'est du bricolage....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      Chaine:='.\Championnats\*.';
      Findfirst(Chaine,faDirectory,sr);
      if (Sr.Name <> '.')and(Sr.Name <> '..') then
      lbteams.items.add(Sr.Name);
      while FindNext(sr) = 0 do
      begin
        if (Sr.Name <> '.')and(Sr.Name <> '..') then
        lbteams.items.add(Sr.Name);
      end;
      FindClose(sr);
    Je n'ai toujours aucune idée de solution concernant l'évènement sur clic droit...

  4. #4
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut
    Pour répondre à l'évènement click droit, il vaut mieux utiliser OnMouseUp:
    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
     
    procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if Sender is TImage then
        with Sender as Timage do
        begin
          if Button = mbLeft then
            Tag:= Tag + 1
          else
            Tag:= 0;
          case Tag of
            0: Picture.Assign(Vide.Picture);
            1: Picture.Assign(But.Picture);
            2: Picture.Assign(But2.Picture);
            3: Picture.Assign(But10.Picture);
            4:
            begin
              Picture.Assign(Vide.Picture);
              Tag := 0;
            end;
          end;
        end;
    end;

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 60
    Points : 47
    Points
    47
    Par défaut
    Merci, ça marche très bien et j'en suis étonné ! Je pensais que l'évènement onmouseup ne permettait les clics que si la souris était déplacé vers le haut mais même en la laissant immobile, l'image est bien rafraichie.

  6. #6
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut
    Les évènements OnMouseDown et OnMouseUp correspondent aux bouttons de la souris: Down quand un bouton est appuyé et Up quand il est relaché. Cela n'a rien à voir avec les déplacements du mulot.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 60
    Points : 47
    Points
    47
    Par défaut
    Oui, je viens de regarder dans l'aide... Je m'étais persuadé je ne sais pas pourquoi...que c'était lié au mouvement du mulot ! J'aurais pu chercher longtemps ! Faut dire que onmouseup et onmousedown, ça fait penser au mouvement....et peut être induit en erreur(mélange) avec les onmouseover qu'on peut trouver en javascript pour faire des rollovers...quand on passe la souris sur une image...je ne sais pas...

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

Discussions similaires

  1. [AC-2007] Mise en forme sur clic droit
    Par gwent dans le forum IHM
    Réponses: 0
    Dernier message: 16/09/2010, 12h57
  2. [AC-2003] Ouverture intempestive d'un formulaire sur clic droit
    Par ca--rd dans le forum IHM
    Réponses: 1
    Dernier message: 26/08/2010, 09h08
  3. [AC-2007] Evènement sur clic Graph Croisé Dynamique
    Par triaguae dans le forum IHM
    Réponses: 4
    Dernier message: 29/05/2010, 13h59
  4. Fonction sur clic droit
    Par Everio dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/12/2009, 20h05
  5. [AC-2007] Evénement sur clic et Sur sourie appuyée ou relâchée
    Par miamou dans le forum IHM
    Réponses: 3
    Dernier message: 11/12/2009, 13h36

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