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

Delphi Discussion :

focus entre deux listbox


Sujet :

Delphi

  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Points : 91
    Points
    91
    Par défaut focus entre deux listbox
    Salut,
    J'ai deux listbox : celle de gauche (listDirs) contient des dossiers et celle de droite (listFiles) contient les fichiers contenus dans le dossier sélectionné a gauche. Je cherche à faire en sorte que quand on est dans la liste des dossiers et qu'on appuie sur la flèche droite on se retouve dans la liste des fichiers et inversement quand on est dans la liste des fichiers et qu'on appuie sur flèche gauche on se retrouve dans la liste des dossiers.

    Pour l'instant j'ai fait ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TfmMain.listDirsKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (Key = VK_RIGHT) then
        listFiles.SetFocus;
    end;
    Ca marche presque mais le problème c'est que juste avant de passer à la liste des fichiers, dans ma liste des repertoires, l'item courant est incrémenté et donc à chaque fois s'affichent dans listFiles les mauvais fichiers.

    J'ai pensé à faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listDirs.itemindex := listDirs.itemindex - 1
    juste avant de changer le focus mais je trouve ç apas très propre.
    Merci d'avance.
    --
    "Qui fait le malin tombe dans le ravin"

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 901
    Points : 6 026
    Points
    6 026
    Par défaut
    Euh....Exit dans le if ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (Key = VK_RIGHT) then begin
        listFiles.SetFocus;
        exit;
    end;
    Peut-être même avec un RAZ de Key.
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Si on suppose que c'est l'appui sur la flèche droite qui produit le déplacement dans la ListBox, il suffit d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TfmMain.listDirsKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (Key = VK_RIGHT) then
      begin
        listFiles.SetFocus;
        Key := #0;
      end;
    end;
    Roland

  4. #4
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Points : 91
    Points
    91
    Par défaut
    Merci, j'ai testé les deux solutions mais aucunes des deux ne marchent.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TfmMain.listDirsKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (Key = VK_RIGHT) then
      begin
        ShowMessage('toto');
        listFiles.SetFocus;
        Exit;
      end;
    end;
    La messagebox s'affiche clairement avant que ne soit fait l'incrémentation qui a encore lieu. Le "Exit" est lui aussi bien réalisé. Je ne comprends pas... D'autres idées ?
    --
    "Qui fait le malin tombe dans le ravin"

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    J'ai vérifié sur une appli existante avec 2 listbox dépendantes :
    même motif, même punition (personne n'avait remarqué ce problème parce que personne n'avait idée d'utiliser le clavier pour passer d'une liste à l'autre).

    C'est l'action VK_Right qui en standard fait comme VK_Down,
    il fadrait essayer Key :=VK_Space au lieu de Key :=#0
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  6. #6
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Points : 91
    Points
    91
    Par défaut
    Citation Envoyé par Graffito
    il faudrait essayer Key := VK_Space au lieu de Key :=#0
    Merci Graffito ça marche nikel !
    ++
    --
    "Qui fait le malin tombe dans le ravin"

  7. #7
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    J'avais fait une petite erreur (confusion avec Keypress où Key est de type Char). C'était :
    qu'il fallait écrire.
    ne compilait pas

    Mais effectivement, n'importe quel code de touche qui ne produit rien sur un ListBox convient.
    Roland

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

Discussions similaires

  1. [VBA-E]drag and drop entre deux listbox
    Par Yolak dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 14/06/2012, 14h37
  2. manipulation d'objet Items entre deux listbox
    Par Torgar dans le forum Windows Forms
    Réponses: 4
    Dernier message: 01/05/2008, 20h14
  3. Drag and drop entre deux ListBox
    Par simoinfonet dans le forum Langage
    Réponses: 0
    Dernier message: 18/04/2008, 18h53
  4. Ajout et Suppression entre deux listBox
    Par sacofan dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/01/2007, 17h02
  5. [VB.NET] Perte de focus entre deux form
    Par toniolol dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/07/2005, 08h00

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