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

Composants VCL Delphi Discussion :

TListView suprimer une colonne


Sujet :

Composants VCL Delphi

  1. #1
    Membre averti Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Points : 416
    Points
    416
    Par défaut TListView suprimer une colonne
    Bonjour,

    jai une TListView ou je dois suprimer ou rearanger des colognes.
    Pour suprimer une cologne jutilise le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        view.Items.BeginUpdate;
        ListView_DeleteColumn( view.Handle, Column.index );
        view.Items.EndUpdate ;
    Apres la supression je genere du SQL apartir des items.
    Le probleme cest que les SubItem de la cologne que jai suprimer sont toujours present mais hidden.
    Comment faut il proceder pour suprimer les items et subItem de la cologne suprimer.

    Meme cas pour rearanger les colognes, je les rearange avec fullDrag = true, mais juste le titre est changer le contenu reste constant!!

    Merci pour vos idees

    Soulman
    Apprends la science de celui qui sait, et enseigne ta science à celui qui ignore, comme ca, tu auras appris ce que tu ignores et utilisé ce que tu sais.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 489
    Points : 24 966
    Points
    24 966
    Par défaut
    Pour le changement de Colonne par Drag&Drop, il n'y a rien à faire, FullDrag suffit
    Il faut différencier l'affichage des Colonnes qui peut-être dans un ordre différent que celui de SubItems !



    TListView : changez l'ordre des colonnes ne change pas celui des subItems ?

    Pour la suppression, il faudrait balayer tous les SubItems et supprimer les Strings qui dépasse les Columns.Count durant OnColumnDragged
    Il faudrait en réalité savoir qu'elle est l'index de la Colonne (voir Tag et ID) pour supprimer la bonne Strings[] dans SubItems pour gérer d'éventuel déplacement de colonne

    Une fois, je l'ai fait, un truc bien moche, je chargeais dans SubItems TOUTES les données des 15 colonnes possibles et je jouais avec Width et Min\MaxWidth
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre averti Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Points : 416
    Points
    416
    Par défaut
    Merci ShaiLeTroll pour la reponce.

    Donc il ya du travail a faire je voie...
    Existe til un composant gratui qui peut gerer cette fonctionalité?( avant de reinventer la roue )
    Apprends la science de celui qui sait, et enseigne ta science à celui qui ignore, comme ca, tu auras appris ce que tu ignores et utilisé ce que tu sais.

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 489
    Points : 24 966
    Points
    24 966
    Par défaut
    Gratuit, voir dans la JEDI
    Payant, TMS ou DevExpress

    Il y en a surement d'autres !

    Sinon au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        view.Items.BeginUpdate;
        ListView_DeleteColumn( view.Handle, Column.index );
        view.Items.EndUpdate ;
    Essaye un code VCL, si il ne fonctionne pas, c'est que l'équipe de Borland n'a pas pris le temps de le coder, souvent parce que cela implique un dev trop vilain ou trop complexe (limite instable)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        view.Items.BeginUpdate;
       view.Columns.Delete(Column.index);
        view.Items.EndUpdate ;
    une bidouille moche mais qui devrait poser moins de soucis !
    Les données "Hidden", ne gênent pas !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        view.Items.BeginUpdate;
        view.Columns[Column.index].Width = 0;
        view.Columns[Column.index].MaxWidth = 1;
        view.Items.EndUpdate ;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre averti Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Points : 416
    Points
    416
    Par défaut
    Le Hidden va surement gener car je parcourt toute la ListView pour generer du SQL, et donc le contenu des item Hidden vont etre prisent en consideration
    Apprends la science de celui qui sait, et enseigne ta science à celui qui ignore, comme ca, tu auras appris ce que tu ignores et utilisé ce que tu sais.

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 489
    Points : 24 966
    Points
    24 966
    Par défaut
    Pourquoi ne pas utiliser un TDBGrid et un TClientDataSet, ça ferait très bien le travail, le masquage de colonne est très aisée (et facile à vérifier durant le parcours)

    Sinon, nettoyer la liste cela reste facile

    Code c++ : 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
    void __fastcall TBeginningCPPMainForm::Button1Click(TObject *Sender)
    {
      TListColumn *Col = ListView1->Columns->Add();
      Col->Caption = "Col " + IntToStr(ListView1->Columns->Count);
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TBeginningCPPMainForm::Button2Click(TObject *Sender)
    {
      ListView1->Columns->Delete(3);
      for (int i = 0; i < ListView1->Items->Count ; i++)
        if (ListView1->Items->Item[i]->SubItems->Count >= 3)
          ListView1->Items->Item[i]->SubItems->Delete(2);
     
      // remplace 3 et 2 par l'index voulu
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TBeginningCPPMainForm::Button3Click(TObject *Sender)
    {
      TListItem *Item = ListView1->Items->Add();
      Item->Caption = "Col 1, Valeur " + IntToStr(ListView1->Items->Count);
      for (int i = 1; i < ListView1->Columns->Count ; i++)
        Item->SubItems->Add(Format("Col %d, Valeur %d", ARRAYOFCONST((i + 1, ListView1->Items->Count))));
    }
    //---------------------------------------------------------------------------
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre averti Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Points : 416
    Points
    416
    Par défaut
    Bonjour,

    je lis un fichier CSV dans une TListView et apres je genere du SQL en parcourant tte la View.

    J ne sais pas si vraiment une TDBGRID peut lire un fichier CSV?

    Merci de confirmer.

    Soulman
    Apprends la science de celui qui sait, et enseigne ta science à celui qui ignore, comme ca, tu auras appris ce que tu ignores et utilisé ce que tu sais.

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 489
    Points : 24 966
    Points
    24 966
    Par défaut
    Un DBGrid affiche n'importe quel TDataSet
    un DBGrid ne lit pas de fichier ! c'est le DataSet qui s'occupe de cette tache !

    le BDE fourni le TTable, qui peut lire des fichiers dit ASCII, qui correspond au CSV américan donc utilise la virgule (comma) commé séparateur, différent du format CSV français utilisant le point-virgule !

    Sinon, tu peux effectuer le découpage du CSV comme tu le fais déjà pour remplir ton TListView (tu utilises peut-être le DelimitedText des SubItems ?) mais tu remplis un TClientDataSet à la place !

    la FlexCellGrid de TMS fournir un parser CSV, je me souviens bien !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. [IDE] Afficher hint sur une colonne Tlistview
    Par Pascale38 dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/11/2011, 11h04
  2. TlistView ajouter une ligne avec 2 colonnes
    Par GO dans le forum Composants VCL
    Réponses: 2
    Dernier message: 30/01/2009, 16h55
  3. Comment cacher une colonne d'un TListView ?
    Par Shredder dans le forum Composants VCL
    Réponses: 15
    Dernier message: 28/10/2007, 19h24
  4. [VCL][TListView]Montrer une ligne à l'écran
    Par ptitbob dans le forum Delphi
    Réponses: 4
    Dernier message: 23/07/2007, 16h35
  5. [TListView] Comment connaître la largeur d'une colonne ?
    Par remixtech dans le forum Composants VCL
    Réponses: 8
    Dernier message: 03/04/2005, 13h18

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