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 :

[Delphi7]Selection TTreeView avec souris


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Par défaut [Delphi7]Selection TTreeView avec souris
    Bonjour,
    comment fait on pour seléctioner plusieur Nodes dune TTreeView avec la souris
    en faisant un rectangle(en glissant la souris & faisant un rectangle) sur les nodes desirés.
    Merci

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 096
    Par défaut
    Je n'ai pas vu ce genre de selection dans un TreeView, essaye plutôt la sélection avec CTRL+Click
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éclairé Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Par défaut
    avec ctrl+click ca marche tres bien, mais jai beacoup de neux dans ma View, alors jaimerai bien faire une selection rien quavec la souris.

  4. #4
    Membre émérite Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Par défaut
    Salut,

    Pas le plus simple à faire, et peut-être vaudrait-il mieux réorganiser ton treeview avec plus de sous-noeuds si possible (comme ça un click sur le noeud parent selectionnera tous les enfants), plus deux boutons "tout selectionner" et "tout déselctionner"...

    Si ce n'est pas possible, je suppose qu'il va falloir le faire à la main:
    Sur le premier OnMouseDown tu récupère l'indice de ton premier noeud (grâce à GetNodeAt(X,Y) ) que tu stock dans une variable. Sur le OnMouseMouve tu récupère l'indice de ton deuxième noeuds et tu lance ta procédure qui colorie ou checked... les items se trouvant entre tes deux noeuds. Sur le OnMouveUp, tu valide ta selection.

    A+.

  5. #5
    Membre éclairé Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Par défaut
    merci PadawanDuDelphi pour lidee, je vais essayé

  6. #6
    Membre éclairé Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Par défaut
    jai le probleme suivant:
    lorsque je fais une selection avec la souris, je la commance pas a partir dun neux, mais en dehors, comme ca, c pas possible de récupèrer l'indice de ce dernier. alor tree.GetNodeAt(x, y) me livre tout le temps un nil.

  7. #7
    Membre émérite Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Par défaut
    jai le probleme suivant:
    lorsque je fais une selection avec la souris, je la commance pas a partir dun neux, mais en dehors, comme ca, c pas possible de récupèrer l'indice de ce dernier. alor tree.GetNodeAt(x, y) me livre tout le temps un nil.
    Effectivement si tu ne click pas sur un noeud tu auras ce problème...Je ne vois que deux solutions avec cette méthode:

    1) Tu met dans le mode d'emploi que la multi-selection ne peut se faire qu'avec une selection sur un noeud.

    2) Tu fait une mini fonction pour détecter ton noeud le plus proche (sans pour autant déplacer ton curseur souris). Du style:
    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
    procedure TForm1.TrouverNoeud(sender:TObject;X, Y: Integer): TTreeNode;
    Const
      pas:integer =...;  //la taille maximum pour laquelle tu es sûr de ne pas rater un noeud voisin (hauteur ou largeur de ta selection d'un noeud).
    Var
      Xtest,Ytest: integer;
      pasEnCours,i:integer;
    Begin
     
       result:=TTreeView(Sender).GetNodeAt(X,Y);
       if result <>nil then exit;
     
       i:=0;pasEnCours:=pas;
       Xtest:=X;Ytest:=Y;
     
       While i<50 do
       do
        //test déplacement vers la droite;
         Xtest:= X+pasEnCours;
         Ytest:=Y;
         result:=TTreeView(Sender).GetNodeAt(Xtest,Ytest)
         if result <>nil then exit;
    ...
       //faire les autres tests (gauche, haut, bas, diagonale...)
    ...
         inc(pasEnCours,pas);
         inc(i);
       End;
     
    End;
    Pas tester et clairement à optimiser (De plus, tous les test sont-ils obligatoires, faut-il tester sur les limites de la form...?)...Bref c'était juste une idée comme ça.

    A+.

  8. #8
    Membre éclairé Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Par défaut
    Merci PadawanDuDelphi pour l'Idée.
    pour le moment je me contante de faire une MultiSelection avec Ctrl ou Shift.
    Le reste c un peu compilqué, et jai pas beaucoup le temps.
    Soulama

  9. #9
    Membre émérite Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Par défaut
    ok, pas de problème...

    De toute façon c'est vrai que c'est sûrement pas le plus essentiel, mais si j'arrive à trouver un peu de temps je testerais mon idée...Et je te tiendrais au courant si j'arrive à un truc utilisable.

    A+, et bon courage.

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

Discussions similaires

  1. [XL-2007] Selection contenu textbox avec souris
    Par cathodique dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/12/2014, 12h14
  2. [INSERT][SELECT] insert avec un select imbriqué
    Par narmataru dans le forum SQL
    Réponses: 11
    Dernier message: 06/03/2013, 03h04
  3. [VBA-E]Selection dynamique avec souris de plages de cellules
    Par geeksideofme dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 08/05/2007, 14h25
  4. [VBA-E] Selection dynamique avec la sourie de plages de cellules Excel
    Par geeksideofme dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/04/2007, 11h20
  5. [struts][JSP][select] problème avec le select
    Par redge_touch dans le forum Struts 1
    Réponses: 4
    Dernier message: 14/01/2004, 10h05

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