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 :

Effacer contenu d'un ValueListEditor [Débutant]


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 23
    Par défaut Effacer contenu d'un ValueListEditor
    Bonjour,

    Alors voilà, j'ai un TValueListeditor avec 2 colonne et x lignes et j'aimerai qu'après un clique sur le bouton effacer, cela supprime tout le contenu du valuelisteditor

    J'ai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void __fastcall TForm2::BitBtn1Click(TObject *Sender)
    {
    	int nbligne = ValueListEditor1->RowCount - 1 ;
    	if (MessageDlg("Etes-vous sur?", mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0) == mrYes)
    	{
    		for(int i = 0; i <= nbligne ; i = i+1)
    		{
    			ValueListEditor1->DeleteRow(i);
    		}
    	}
    }
    Mais j'ai le message d'erreur suivant:

    "Exception 'first chance' à $74D2B727. Classe d'exception EInvalidGridOperation avec un message 'Indice de grille hors limites'. Processus caisse.exe (3220)"

    Je ne trouve pas la solution, pouvez vous me dire ou se trouve mon erreur?

    Merci par avance !

  2. #2
    Membre Expert
    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
    Par défaut
    Je pense que je comprend le problème. Admettons que tu as trois lignes:
    0- X
    1- Y
    2- Z
    En premier, i=0, donc après le DeleteRow(i) tu as:
    0- Y
    1- Z
    L'élément 0 a été supprimé, ensuite tu as i=1. Donc après le DeleteRow(i) tu as:
    0- Y
    L'élément 1 a été supprimer, ensuite tu as i=2. Tu essaie de supprimer l'élément 2, mais il y a seulement l'élément 0
    Donc si j'ai bien compris, tu devrais toujours faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ValueListEditor1->DeleteRow(0);
    En passant tu peux mettre i++ à la place de i = i+1.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 23
    Par défaut
    Merci pour ta réponse, effectivement je n'y avais pas pensé, mais je viens de tester et j'ai toujours le message d'erreur :

    "Indice de grille hors limite"

    je ne comprends vraiment pas...

  4. #4
    Membre Expert
    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
    Par défaut
    Met un point d'arrêt et regarde pas à pas pour voir où est le problème. Regarde la valeur de i quand sa plante.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 23
    Par défaut
    J'ai un point d'arrêt, et la valeur de I ne change jamais, il rentre dans la boucle fort et plante directement...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 23
    Par défaut
    C'est bon, j'ai trouvé la solution, il fallait que la valeur de i soit initialisé à 1

    Voici le code pour les intéressés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int nbligne = ValueListEditor1->RowCount - 1 ;
    	if (MessageDlg("Etes-vous sur?", mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0) == mrYes)
    	{
    		for(int i = 1; i <= nbligne ; i++)
    		{
    			ValueListEditor1->DeleteRow(1);
    		}
    	}

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 23
    Par défaut
    Merci beaucoup

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

Discussions similaires

  1. effacer contenu d'une combobox liée
    Par christi dans le forum Windows Forms
    Réponses: 13
    Dernier message: 04/02/2009, 17h25
  2. Effacer contenu DBGrid
    Par sondo dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/06/2008, 14h26
  3. Effacer contenu de fichier
    Par Mimiche dans le forum Langage
    Réponses: 3
    Dernier message: 09/01/2008, 14h51
  4. Effacer contenu JTextField lors d'un clic
    Par javamax dans le forum Composants
    Réponses: 3
    Dernier message: 07/04/2007, 17h04
  5. effacer contenu d'un tableau
    Par mrtatou dans le forum C
    Réponses: 8
    Dernier message: 06/02/2006, 13h35

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