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 :

Probleme avec TList et Assing


Sujet :

C++Builder

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 218
    Points : 91
    Points
    91
    Par défaut Probleme avec TList et Assing
    Bonjour,
    j'ai un Dbgrid , je veux copier les données d'une colonne d'un Dbgrid
    dans un Tlist.Ces donnes sont de type int

    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TList *pListe=new TList;
    pListe->Assign(DbGPers->Columns[0].Items,laCopy ,pListe) ;

    J'ai essaye ceci sans succès (j'ai seulement le premier message d'erreur a la compilation)

    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pListe->Items=DbGPers->Columns[0].Items;

    Comment faire ?

    Comment utilisez ceci par la suite ?

    J'ai ces messages d'erreur
    [C++ Erreur] FormAnnuaire.cpp(265): E2193 Trop peu de paramètre dans l'appel à '_fastcall TDBGridColumns::GetColumn(int)'
    [C++ Erreur] FormAnnuaire.cpp(265): E2034 Impossible de convertir 'TColumn *' en 'TList *'
    [C++ Erreur] FormAnnuaire.cpp(265): E2342 Mauvaise correspondance de type dans le paramètre 'ListA' ('TList *' désiré, 'TColumn *' obtenu)
    merci
    Outils utilisés : FireBird 2.1 - IbExert Free - C++ Builder 6 Pro Update 4- Windows Xp pro Sp3

  2. #2
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Comme l'indique le second message d'erreur, les types ne sont pas compatibles (TColumn et TList).

    Que souhaite tu récupérer? Les noms des champs?
    Tu peux utiliser une boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      TStringList *liste=new TStringList();
      for( int i=0; i< DbGPers->Columns->Count; i++ )
      {
        liste->Add(DbGPers->Columns->Items[i]->FieldName );
      }
      ShowMessage( liste->Text ) ;
      delete liste ;
    Pour récupérer les données contenues dans ton DBGrid, il faut itérer sur le DataSet (Query, Table):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      TStringList *liste=new TStringList();
      Query->First() ;
      while( !Query->Eof )
      {
        liste->Add( Query->FieldByName( "NOM_DE_CHAMP" )->AsString) ;
        Query->Next() ;
      }
    // Utilisation de la liste
      delete liste ;
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 218
    Points : 91
    Points
    91
    Par défaut
    Merci de ta réponse
    Je pensais pouvoir copier les valeur de la premier colonne de mon dbgrid un comme ceci sans passer par un boucle

    Un peu comme ceci Copie de ligne dans TMemo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Memo1->Lines->Assing(ComboBox->Items)
    Je me suis inspiré de ton premier exemple pour adapter Assing
    et copier le tout sans passer par un boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TStringList *liste=new TStringList();
      liste->Assign(DbGPers->Columns->Items->FieldName);
    $

    j'ai cette erreur de compil, as tu une idée ? Assing doit être possible a utiliser mais comment ?

    [C++ Erreur] FormAnnuaire.cpp(263): E2034 Impossible de convertir 'const AnsiString' en 'TPersistent *'
    Avec ton aide précieuse je me suis inspiré de ceci
    je me sert d'un TClientDataSet ,cependant je désactive le contrôle DbGPers , le curseur de ma dggrid se déplace et je ne voie pas pourquoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    DbGPers->DataSource->DataSet->DisableControls();
      TStringList *listePers=new TStringList();
      DataModule1->CDSPers->First();
      while( !DataModule1->CDSPers->Eof )
      {
        listePers->Add((int) DataModule1->CDSPers->FieldByName( "ID_PERS" )->AsInteger) ;
        DataModule1->CDSPers->Next() ;
      }
    // Utilisation de la liste
     ShowMessage( listePers->Text ) ;
      delete listePers ;
      DbGPers->DataSource->DataSet->EnableControls();
    encore merci pour tout
    Outils utilisés : FireBird 2.1 - IbExert Free - C++ Builder 6 Pro Update 4- Windows Xp pro Sp3

Discussions similaires

  1. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  2. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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