Génération de cadre (shape) aléatoirement [Résolu]

mekhanik 33 Messages postés vendredi 15 août 2003Date d'inscription 20 mai 2007 Dernière intervention - 1 août 2006 à 16:55 - Dernière réponse : mekhanik 33 Messages postés vendredi 15 août 2003Date d'inscription 20 mai 2007 Dernière intervention
- 4 août 2006 à 09:10
Bonjour,
Je voudrais visualiser graphiquement des projets auquels sont affectés plusieurs phases. J'ai prévu de dessiner dans un cadre de taille fixe symbolisant le projet, plusieurs cadres représentant chacun une phase. Ces cadres sont plus au moins grands en fonction de la durée de la phase. Mon problème est que le nombre de phase n'est pas connu au dépard (l'utilisateur peut en rajouter) et donc je ne sais pas combien de cadre (shape) dessiner. J'aimerais en générer le nombre voulu à la création de la forme puis les placer au bon endroit. Est-ce possible de générer des cadres à la volé ?
Merci beaucoup
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_MPi 3877 Messages postés mardi 19 mars 2002Date d'inscription 23 août 2018 Dernière intervention - 1 août 2006 à 23:59
3
Merci
C'est possible, si je comprend bien (...), mais ce n'est pas simple.

Il faut vérifier les débordements d'écran entre autres.

Ensuite, tu devras, si nécessaire, vérifier les index de chaque contrôle pour savoir quoi faire selon le cas.


En fait, je ne suis pas certain de ce que tu entends par cadre. Si
c'est un Frame comme je pense, et qui sert de conteneur à certains
contrôles, tu dois mettre un index à 0 au Frame de départ ainsi qu'à tous ses contrôles.


Ensuite, tu peux utiliser un code comme celui qui suit.

Dans l'exemple, j'utilise un Frame contenant 2 textbox et un bouton... assez simple...


Private Sub Command1_Click()


'Création d'un nouveau Frame à Index 1 et positionnement

'On pourrait changer le 1 pour un compteur quelconque dans une boucle

    Load Frame1(1)

    Frame1(1).Left = Frame1(0).Left + Frame1(0).Width + 50

    Frame1(1).Top = Frame1(0).Top

    Frame1(1).Caption = "2e Frame"

    Frame1(1).Visible = True


'Création des nouveaux contrôles et affectés au 2e Frame  

    Load Text1(1)

    Set Text1(1).Container = Frame1(1)

    'Text1.Text = "ce que tu veux"

    Text1(1).Visible = True

   

    Load Text2(1)

    Set Text2(1).Container = Frame1(1)

    Text2(1).Visible = True

   

    Load Command2(1)

    Set Command2(1).Container = Frame1(1)

    Command2(1).Visible = True


End Sub

Si ce n'est pas ce que tu cherchais, désolé, mais ça pourra peut-être servir à d'autres... ¦¬)

MPi

Merci cs_MPi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_MPi
mekhanik 33 Messages postés vendredi 15 août 2003Date d'inscription 20 mai 2007 Dernière intervention - 2 août 2006 à 12:57
0
Merci
Salut merci de ta réponse MPI,


Je pense que ça peut m'aider mais ce que je voudais c'est, si on sort de ce contexte, avoir par exemple une form vierge de tout élément sauf un bouton qui quand on clique dessus ajoute un objet shape à la forme et le rende visible. En fait j'arrive à faire tout ça par la techique du Shape.visible = false et true mais je ne sais pas combien de shape je vais avoir sur ma forme donc je voudrais qu'il soit crée dynamiquement c'est possible ? genre Dim sh as new Shape ou quelque chose comme ça
Commenter la réponse de mekhanik
cs_MPi 3877 Messages postés mardi 19 mars 2002Date d'inscription 23 août 2018 Dernière intervention - 2 août 2006 à 23:12
0
Merci
Tu es en VB ou en VBA ?

Et est-ce important d'utiliser un contrôle Shape ?

MPi
Commenter la réponse de cs_MPi
mekhanik 33 Messages postés vendredi 15 août 2003Date d'inscription 20 mai 2007 Dernière intervention - 3 août 2006 à 09:16
0
Merci
Je suis en VB6.0 et non ce n'est pas important d'utiliser l'objet shape du moment que je puisse dessiner plusieurs cadres sur ma form
Commenter la réponse de mekhanik
cs_MPi 3877 Messages postés mardi 19 mars 2002Date d'inscription 23 août 2018 Dernière intervention - 3 août 2006 à 12:02
0
Merci
Voici une autre méthode utilisant Controls.Add


À partir d'un bouton, ça crée et positionne un objet Shape à chaque Click

Si tu veux pouvoir assigner des procédures aux contrôles que tu places,
il est plus simple d'utiliser l'autre méthode avec les Index.  Tu
pourrais utiliser des Labels si tu veux pouvoir y mettre du texte ou
autre contrôle selon tes besoins


Private Sub Command1_Click()

    Static Idx As Integer

    Dim Nom As String

    Dim Shp As Shape

   

    Idx = Idx + 1

    Nom = "Shape" & Idx

    Set Shp = Me.Controls.Add("VB.Shape", Nom)

   

    Shp.Width = 900

    Shp.Left = 1000 + (Idx * 1000)

    Shp.Top = 1000

    Shp.FillStyle = 0

    Shp.FillColor = vbBlue

    Shp.Visible = True

End Sub


Autre piste qui pourra peut-être t'aider ...

MPi
Commenter la réponse de cs_MPi
mekhanik 33 Messages postés vendredi 15 août 2003Date d'inscription 20 mai 2007 Dernière intervention - 4 août 2006 à 09:10
0
Merci
Je te remercie MPi pour ton aide précieuse, je n'avais pas pu tester ton code mais c'est exactement ce que je cherche à faire Merci beaucoup.


P.S. : Je vais aussi tester ta deuxième proposition, elle peut m'intéresser !
Commenter la réponse de mekhanik

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.