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 :

Comment séléctionner des shapes???


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Par défaut Comment séléctionner des shapes???
    8) Salut à tous. Je suis nouveau sur ce site et j'ai besoin que vous m'aidiez pour mon bouot SVP. J'ai VB 6. je voudrais pouvoir séléctionner des ronds (représentant des puits dans un plaque) un peu comme on séléctionne des cellules dans Excel (on clique et puis on glisse la souris sur les cellules et on arrete de cliquer...). Il faudrait que les ronds changent de couleurs (passe du rouge au vert ou quelque chose comme ca. Le probleme c'est que je ne sais pas comment faire pour faire que l'utilisateur séléctionne un ou plusieurs ronds ?

    Merci de vtre aide,
    Cordialement,

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Par leur index dans la collection des contrôles shapes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For each MonDessin in Maform.controls
         if .name = NomDuShapeQueJeVeux then
               .select
               exit for 'ajouté parce qu'oublié...
         endif
    Next
    Je pense qu'il est possible de définir le type de contrôle (.type) mais je ne connais pas la syntaxe.

    Pas vérifié mais ça devrait être un truc comme ça

    A+

    Je crois que la syntaxe pour le type est .type = msoFreeform
    sans garantie

    A+

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Par défaut
    Je te remercie pour ton aide ouskel'n'or mais je n'arrive ps à voir comment il faut utiliser ton code; Je suis un petit débutant en VB.

    Merci
    a+

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Désolé mais faudra patienter un peu, là je rentre at home avant qu'on m'enferme...

    A tout'

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Par défaut
    hé hé je comprend bonne soirée !

  6. #6
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Salut

    Je crois qu'on ne peut pas sélectionner les objets Shape en VB6. En tout cas, pas tels quels. Les objets Shapes ne répondent à aucun événement.

    Cependant, tu peux tester la localisation d'un MouseUp (ou un MouseDown) sur la feuille et si ça correspond à la localisation d'un des shape, tu le mets en surbrillance (DrawMode = quelque chose que je sais plus), changer sa couleur ou lui mettre une bordure plus ou moins large...

    Tu peux aussi créer par programmation un nouveau contrôle Shape qui répondrait aux événement de la souris...

    Un petit test que j'ai fait:
    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
    Private Function VerifierSiShapeSel(X As Single, Y As Single) As Integer
        Dim forme As Shape
        Dim i As Integer
        For i = 0 To Shape1.Count - 1
            If (X >= Shape1(i).Left) _
               And (X <= Shape1(i).Left + Shape1(i).Width) _
               And (Y >= Shape1(i).Top) _
               And (Y <= Shape1(i).Top + Shape1(i).Height) Then
                Exit For
            End If
        Next i
        If i = Shape1.Count Then
            VerifierSiShapeSel = -1
          Else
            VerifierSiShapeSel = i
        End If
    End Function
     
    Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Dim indice As Integer
        indice = VerifierSiShapeSel(X, Y)
        If indice > -1 Then
            Shape1(indice).BorderWidth = 2
    '        Debug.Print indice
        End If
    End Sub
    Pour les sélections multiples, t'auras besoin d'une variable booléenne et de tester sur le parmètre Shift du MouseUp.

    Pour la sélection ou désélection, tu peut mettre quelque-chose dans la propriété Tag de tes Shapes.

  7. #7
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Tu es nouveau sur ce site, mais à quel niveau d'utilisation de VB en es-tu ?

    Cette question est importante car elle conditionnera tout le reste :

    Si tu es nouveau également en VB, il va falloir nous contenter de peu pour parvenir à quelque-chose de très approximatif, en utilisant des astuces plutôt que du véritable code. Mais, même à ce petit niveau, sais-tu déjà faire un drag and drop sur un objet plus simple à manipuler qu'un "shape" (un label, par exemple) ? Si tel n'est pas le cas, il me semble qu'il conviendra de prendre le début... par le début..., sans chercher d'emblée à "faire des trucs" pour en faire, sans réellement en comprendre le fonctionnement.

    Si au contraire, tu as déjà des notions d'utilisation de l'API de Windows (mais dis-nous, on t'écoute oreilles grandes ouvertes) on pourra penser plus loin avec toi...

    dis-nous donc et Nous/je continue(rons/rais) avec plaisir avec toi.

    Si tu ne te sens pas à l'aise après cette petite lecture, passes par la case départ s'il te plait, pour ton propre salut.


  8. #8
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Bon ! je vois que tu es allé dormir, ce qui me donne à penser

    1) que ce "boulot" n'est pas si impotant que celà
    2) que tu n'es pas prêt à t'engager dans du "compliqué

    Alors, il te restera demain la solution "astuce". Quelques indices :

    1) un objet shape ne reçois pas d'événements réels
    2) si tu l'insères dans un cadre ("frame") ce cadre peut, lui, subir des événements et donc accepter un drag and drop
    3) si tu as autant de cadres que de "shapes", tu peux "jouer" au "glisser déposer" (drag and drop) avec chacun d'eux
    4) si tu places tous ces petits cadres contenant tes "shapes" dans un cadre plus grand (ta "plaque"), le tour est joué

    A toi de jouer maintenant (si tu sais comment faire un drag and drop, bien sur !)

    A demain, donc ... pour me dire où tu en es.



    A tous les autres : que personne ne m'en veuille pour ce type de réponse, mais je crois qu'il fallait la faire. Je crois également que certains d'entre vous (un au moins) savent que je n'ai aucune difficulté en matière de manipulation des graphiques.
    Il y a pourtant une limite, à laquelle je tiens vraiment : ne jamais permettre de brûler les étapes... celà ne rend service à personne, à commencer par celui qui veut les brûler !

    Pardonnez-moi

  9. #9
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Par défaut
    Salut jmfmarques, tout d'abord je te remercie de l'attention que tu portes à mon problème. On va dire que je suis initié plus que débutant, je sais manipulé les API mais de facon limité (ca viens petit a petit). Je vais essayer de faire la méthode de zazaraignée et je vais voir ce que ca donne.(au passage merci à toi aussi zazaraignée!). C'est vrai que la solution astuce serait plus simple et plus rapide mais l solution compliqué me permettrait au pasage d'élargir mes connaissances en VB...

    Voila, je tente et je ous tiens au courant!

Discussions similaires

  1. Comment effacer des Items d'un TListView ?
    Par boyerf dans le forum Composants VCL
    Réponses: 4
    Dernier message: 11/11/2002, 10h19
  2. [VB6][impression]Comment faire des effets sur les polices ?
    Par le.dod dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 08/11/2002, 10h31
  3. [TP][MULTI-PROBLEME]Comment afficher des images pcx
    Par mikoeur dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 24/10/2002, 13h57
  4. Réponses: 8
    Dernier message: 18/09/2002, 03h20
  5. [langage] comment créer des fichiers ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2002, 16h33

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