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

C++Builder Discussion :

Créeer des composants dynamiquement dans un TVertScrollBox


Sujet :

C++Builder

  1. #1
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut Créeer des composants dynamiquement dans un TVertScrollBox
    Bonjour à tous

    Je cherche à créer dynamiquement des composants dans un TVertScrollBox

    Voici le code que j'utilise

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    	// Position en Y
    	int PositionY = 24;
     
    	// On va créer les éléments pour chaque Match
    	for(int i = 1; i <= Nb; i++)
    	{
    		// On crée l'élément Date
    		TDateEdit *DateEdit = new TDateEdit(Form);
     
    		// On renseigne le Nom du Composant
    		DateEdit->Name = "DateEdit" + String(i);
     
    		// On renseigne le Parent
    		DateEdit->Parent = VertScrollBoxMatchs;
     
    		// On marque qu'il aura la date courante
    		DateEdit->TodayDefault = true;
     
    		// On le positionne
    		DateEdit->Position->X = 16;
    		DateEdit->Position->Y = PositionY;
     
    		// On le rend actif et visible
    		DateEdit->Enabled = true;
    		DateEdit->Visible = true;
     
    		// On ajoute l'élément comme Controle Enfant du VerticalScrollBox
    		VertScrollBoxMatchs->Controls->Add(DateEdit);
     
     
    		// On crée l'élément TimeEdit
    		TTimeEdit * TimeEdit = new TTimeEdit(Form);
     
    		// On renseigne le Nom du Composant
    		TimeEdit->Name = "TimeEdit" + String(i);
     
    		// on renseigne le parent
    		TimeEdit->Parent = VertScrollBoxMatchs;
     
    		// On marque qu'il aura l'heure courante
    		TimeEdit->UseNowTime = true;
     
    		// On le Positionne
    		TimeEdit->Position->X = 152;
    		TimeEdit->Position->Y = PositionY;
     
    		// On le rend actif et visible
    		TimeEdit->Enabled = true;
    		TimeEdit->Visible = true;
     
    		// On ajoute l'élément comme Controle Enfant du VerticalScrollBox
    		VertScrollBoxMatchs->Controls->Add(TimeEdit);
     
    		// On incrémente la Position en Y
    		PositionY += 56;
    	}
    La création se passe bien je vois bien mes composants à l'écran, le problème, c'est que lorsque je veux scroller pour descendre, j'ai une violation d'accès

    Savez-vous ce que j'aurais pu oublier

    Je suis en RAD Studio XE7 et j'utilise firemonkey

    Merci d'avance pour votre aide

  2. #2
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut
    Bonjour,

    Pourquoi faire ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	// On ajoute l'élément comme Controle Enfant du VerticalScrollBox
    		VertScrollBoxMatchs->Controls->Add(DateEdit);
    Il suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TDateEdit *DateEdit = new TDateEdit(VertScrollBoxMatchs);
    Et le DateEdit fera partie de la liste des contrôles enfants du VertScrollBoxMatchs, lorsque le VerticalScrollBox sera détruit, les DateEdit le seront aussi.

    Dans ce que tu écris, les DateEdit ont deux propriétaires ? Form et VertScrollBoxMatchs...

  3. #3
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Merci pour ta réponse

    Ok je les ai enlevé, je comprend ce que tu veux dire, mais j'ai toujours l'access violation cela ne change rien

  4. #4
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut
    Citation Envoyé par kurul1 Voir le message
    Merci pour ta réponse

    Ok je les ai enlevé, je comprend ce que tu veux dire, mais j'ai toujours l'access violation cela ne change rien
    J'ai rapidement testé ce que tu as fait ( avec simplement les DateEdit ) et cela fonctionne chez moi avec XE4, pas de violation d'accès lorsque je scrolle.

    Est ce que tu vois ou intervient la violation d'accès ? est ce que tu a mis du code sur l'événement du scroll ?

  5. #5
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Non je n'ai rien mis là.

    l'erreur interviens dès que je scroll mais cela me met en erreur sur l'ouverture de ma form et non d'une ligne en particulier dans la form.

  6. #6
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Je viens de mettre en commentaire tous ce qui suit la création de mes DateEdit pour voir et j'ai toujours l'erreur

  7. #7
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut
    AMHA, le problème n'est pas dans le code que tu as posté, ça doit planter ailleurs

  8. #8
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Je crois que je vais passer par un autre composant car cela me bloque complètement.

    Je vais surement opter pour une ComboBox pour sélectionner le Numéro du Match et mettre mes composants en dessous et changer les valeurs pour chacune a chaque fois qu'on change le numéro du Match.

    Cela sera moins pratique mais bon j'ai pas trop le choix

  9. #9
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Fait un Break quand tu as l'exception et regarde la Call Stack pour voir où le problème est survenu.
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  10. #10
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Je ne vois pas où le mettre le break.
    Le code que j'ai mis est dans ma fonction d'initialisation de la form.
    Ensuite je lance ma boîte de dialogue par un showmodal().

    Le lancement se passe bien. C'est dès que je veux scroller que l'access violation se produit.

Discussions similaires

  1. Creer et supprimer des cercles dynamiquement dans google maps
    Par Sofute dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 12/02/2014, 10h22
  2. Réponses: 5
    Dernier message: 19/02/2007, 15h44
  3. Réponses: 4
    Dernier message: 19/05/2006, 14h30
  4. [VB.NET] Creer des contrôles dynamiquement
    Par theartist dans le forum Windows Forms
    Réponses: 4
    Dernier message: 11/01/2005, 11h42
  5. [JTabbedPane] Accès à des composants dynamiques
    Par SamRay1024 dans le forum Composants
    Réponses: 8
    Dernier message: 26/05/2004, 13h04

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