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 :

[Souris] Sélection d'objets visuels


Sujet :

Composants VCL Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 27
    Points : 28
    Points
    28
    Par défaut [Souris] Sélection d'objets visuels
    Bonjour,

    Sur un panel, j'ai des objets descendant de TCUSTOMCONTROL : mon but est de les selectionner avec la souris :
    - dessiner un rectangle de sélection avec la souris
    - et connaitre les objects qui seront dans ce rectangle au relachement du bouton de la souris.

    Je pense qu'en passant par l'API ça devrait se faire, mais je ne connais pas les fonctions à employer.

    Si quelqu'un a une idée, je suis preneur !!!

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Pour le dessin, avec le Canvas du panel.
    Pour la détection des contrôles contenus dans le rectangle : TControl.ScreenToClient (à moins que ScreenBounds existe)

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 444
    Points : 5 864
    Points
    5 864
    Par défaut
    salut


    il te suffit d'utilise la fonction ptinrect
    tu definie le rectangle a la souris
    et ensuite en parcourant la liste des elements tu verifie par exemple
    que leurs centre se trouve dans le rectangle

    en resumer dans l'evenement onmousdouwn tu recupere un poit du rectangle

    dans l'evenement onmouseup tu recupere le deuxieme point
    ce qui te permet de definir le rectangle
    et tu parcour la liste d'element pour savoir si le centre de ses element ce trouve dans le rectangle

    @+ Phil
    Ps : chaques elements posés sur le canvas doit etre enregistre dans une liste

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 27
    Points : 28
    Points
    28
    Par défaut
    Merci anapurna

    Je vais tester

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 27
    Points : 28
    Points
    28
    Par défaut
    En fait mon problème est un peu plus compliqué :

    J'ai un panel qui est le parent
    J'ai au moins un objet de grande taille enfant du panel
    J'ai plusieurs objets de petites tailles (enfants du panel) qui peuvent être et sur le panel, et sur l'objet de grande taille.

    Le problème vient donc que j'ai 2 canvas, et quand je fais mon rectangle de sélection, il peut être à cheval sur le panel (Parent) et sur l'objet de grande taille (Enfant)

    Voilà, sur un seul canvas , je sais faire, mais là je sais pas.
    L'API le fait trés bien, on le voit notemment quand il promène un rectangle de sélection au dessus d'objets differents.

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 444
    Points : 5 864
    Points
    5 864
    Par défaut
    salut


    en fait ton probleme est assez simple il faut que tu utilise toujours la meme reference pour ce faire chaque composant as une fonction
    clienttoscreen et screentoclient pour connaitre leur coordonner par rapport au bord de l'ecran il te suffit donc de tout mettre
    dans un meme referentielle et faire ensuite la manip decrit dans mon premier post

    @+ Phil

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 27
    Points : 28
    Points
    28
    Par défaut
    Pour reconnaitre les objets à l'intérieur du rectangle : OK
    Quelque chose de cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TargetControl.ScreenToClient(SourceControl.ClientToScreen(P));
    Parcontre c'est de dessiner le rectangle qui me pose un problème : un rectangle à cheval sur 2 canvas différents !! à moins que je pose mal le problème ...

  8. #8
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 444
    Points : 5 864
    Points
    5 864
    Par défaut
    salut

    pour tracer quelle rectangle si c'est celui de la selection c'est dans l'evenement onmousemouve qu'il faut le desinner sans oublier
    d'effacer l'ancien et de redesinner le nouveau

    pour tacer ton rectangle en fait il te sufffit d'appliquer
    le tracage du rectangle sur les deux canvas
    sans oublier de recalculer les point de depart et celui d'arriver
    par rapport au bord de l'ecran (repere fixe)


    @+ Phil

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 27
    Points : 28
    Points
    28
    Par défaut
    Et voilà : j'étais en train de me dir eque je compliquais qq chose de simple : tracer à la fois sur les 2 canevas et tu confirme !!!

    Merci beaucoup de ton aide,
    j'ai pas toujours les idées bien claires !!

    @ +

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 25/05/2010, 08h44
  2. [Tkinter] sélection d'objet pour déplacement
    Par airod dans le forum Tkinter
    Réponses: 7
    Dernier message: 18/05/2006, 10h40
  3. [SWING] Evenement (souris) sur un objet Chartpanel
    Par rprom1 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 20/04/2006, 11h10
  4. [VBA-A]Détection souris sur un objet.
    Par LiNuXaDDiKt dans le forum VBA Access
    Réponses: 4
    Dernier message: 21/02/2006, 10h13
  5. Sélection d'objets pour un logiciel de type AutoCAD
    Par loran4444 dans le forum C++Builder
    Réponses: 15
    Dernier message: 09/03/2005, 20h23

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