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 :

Comment cacher une colonne d'un TListView ?


Sujet :

Composants VCL Delphi

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 107
    Par défaut Comment cacher une colonne d'un TListView ?
    bonjour,

    je chercherais a cacher une colonne dans un listview, étant donné qu'il n'y a pas de propriété "Visible" je ne vois pas comment je pourrais faire.

    merci

  2. #2
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Citation Envoyé par Shredder Voir le message
    étant donné qu'il n'y a pas de propriété "Visible"...
    A ouais je n'avais jamais remarqué !

    Peut-être en jouant sur la largeur de la colonne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      ListView1.Column[2].Width := 0;
    Attention à MinWidth.

    @+ Claudius

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 107
    Par défaut
    hélas non, car avec ça l'utilisateur peut toujours faire réapparaitre la colonne manuellement

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    SAlut
    Effectivement c pas cool, j'ai bien essayé de magouillé un truc mais c pas simple....
    N'aurais tu pas la possibilité de stocker les valeur de ta colonne et du la supprimer physiquement? et au moment de la faire reapparaitre remettre les valeur en place.
    As tu regarder dans la JVCL, je connais tres tres mal les composant de cette serie ne les ayant installer que recement mais ils parraissent nombreux et pas mal fait ... enfin de ce que j'en ai vu et lu sur le forum.

    Sinon apres il te reste la solution pas tres propre mais ... bon ... c'est de mettre 2 ListView dans ton projet tu renseignes celle avec toutes les colonnes et au moment de faire disparaitre une colonne tu copie toutes les valeurs dans l'autre ListView sans les données de la colonne "cachée", et tu cache la complete et fait apparaitre l'incomplete.
    Si tu dois rajouter des lignes alors que la ListView est incomplete(colonne cachée) tu met a jour la ListView complete qui mettra automatiquement a jour la ListView "incomplete" (par du code).

    Je sais pas si mes explication sont tres claire ... surement atant que la solution est propre...

    A++
    Qwaz qui sort la tete basse

    Edit
    La nuit porte conseil ^^, peut etre une autre piste serait au niveau de la methode Draw d'empecher le dessin de cette colonne.
    /Edit

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 107
    Par défaut
    mmm est-ce que vous sauriez éventuellement comment est-ce que je peux indiquer 0 comme valeur pour le maxwidth sans que cette valeur soit considérée comme nulle et qu'il n'y ai pas de limites ?

    avec width = 0 et maxwidth=0 ça suffirait

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 124
    Par défaut
    Cette Colonne sert à quoi ? pourquoi ne pas afficher juste ce qui est utile, et stocker les autres données internes je présume comme un ID dans un Pointer (tu stocke dans le Data de l'Item, c'est fait pour !)
    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 confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 107
    Par défaut
    en fait ça sera un listview avec beaucoup de colonnes et je voudrais que l'utilisateur puisse choisir facilement les informations qui l'interesse, il y a un id que je mettrai dans le pointeur mais plein d'autres choses que l'utilisateur devra voir

  8. #8
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    SAlut
    Pour porsuivre dans le meme sens que Shail pourquoi ne pas alors stocker l'integralité de tes données dans une structure et n'afficher que les données que tu souhaite (ou que l'utilisateur souhaite afficher) dans la ListView.
    Le traitement de tes données sera plus rapide et le listview ne sera pas "chargé pour rien avec des données inutiles.
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 107
    Par défaut
    et bien oui mais un probleme est que mon code fait souvent référence a ce qui est affiché dans les subitems, et ça serait beaucoup plus compliqué d'aller chercher ailleurs que dans ma listview en fonction de "si une information est affichée ou non"
    l'encombrement ne me pose pas de problème, un maxlength=0 suffirait largement

    cependant quand la valeur est nulle delphi n'en tient pas compte

  10. #10
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 164
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 164
    Par défaut
    Yep !
    Citation Envoyé par Shredder Voir le message
    hélas non, car avec ça l'utilisateur peut toujours faire réapparaitre la colonne manuellement
    L'objet TListColumn représente une colonne d'une vue liste de style état (aide Delphi), et cet objet possède une propriété AllowResize (dérivée de TCustomHeaderSection), qui serait à mon avis la voie à explorer (AllowResize := False; ), couplée avec Width := 0;
    Mais je ne peux pas en dire plus, mon aide (D7 PE) est cassée quand je clique sur le lien,
    Mes 2 cts,
    --
    jp

    [edit, 1 h après] Je dois pas être doué, ch'suis arrivé à rien avec cette piste...
    Pa contre, je suis arrivé à un truc sympa en utilisant un THeaderControl au-dessus d'une Listview avec .ShowColumnHeaders := False; et cette fois, le HeaderControl1.Sections[lindexquivabien].Width := 0; fonctionne !
    À toi de gérer, en cas de resize des autres "en-têtes", pour répercuter sur les largeurs des colonnes de la listview.
    Ça devrait fonctionner.
    [/edit]

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 107
    Par défaut
    ok merci

    et cela est possible tout en gardant la barre visible ??

  12. #12
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 164
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 164
    Par défaut
    Citation Envoyé par Shredder Voir le message
    et cela est possible tout en gardant la barre visible ??
    De quelle barre visible tu parles, là ? Car avec trois semaines de temps de réponse, y a longtemps que j'ai zappé tout ça, hein,
    --
    jp

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 107
    Par défaut
    mdr désolé

    en fait quand tu mets : ShowColumnHeaders := False;

    et bien automatiquement la barre disparait

    sinon a part ça ça marche nikel

  14. #14
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 164
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 164
    Par défaut
    C'était bien le sens de mon post d'il y a 3 weeks : cacher le ColumnHeaders de la Listview et mettre à la place un HeaderControl.
    --
    jp

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 107
    Par défaut
    tu pourrais m'expliquer comment mettre un header control stp



    a sinon je pose une question qui a pas grand chose a voir au passage, c'est juste pour éviter de créer un autre topic :

    j'ai ma listview qui est en : align = alClient

    et toutes mes colonnes ont la propriété autosize = true

    de cette maniere quand je redimensionne la fenetre toutes les colonnes prennent la même taille.

    maintenant quand je modifie la taille d'une colonne a l'aide d'un code, les autres colonnes ne se redimensionnent pas

    j'ai tester listview.refresh, listview.realign, la même chose pour l'application, mais rien a faire, les colonnes ne se remettent a la bonne taille que quand je redimensionne la form.

    une idée ?

    merci encore pour ton aide

  16. #16
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 164
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 164
    Par défaut
    Citation Envoyé par Shredder Voir le message
    tu pourrais m'expliquer comment mettre un header control stp
    Un panel, dessus un Header Control (onglet Win32) qui va s'aligner à alTop et une Listview alClient et ShowColumnHeader à False, c'est tout.

    une idée ?
    Pas la moindre, et c'est l'heure de passer à table,
    --
    jp

Discussions similaires

  1. [C#] Comment cacher une colonne d'un GridView ?
    Par dumser1 dans le forum ASP.NET
    Réponses: 15
    Dernier message: 11/12/2009, 16h58
  2. Réponses: 3
    Dernier message: 19/07/2006, 15h28
  3. comment cacher une application de la liste des tâches ?
    Par Laurent Dardenne dans le forum Windows
    Réponses: 2
    Dernier message: 22/12/2004, 18h12
  4. [C#] Cacher une colonne d'une dataGrid
    Par royrremi dans le forum ASP.NET
    Réponses: 2
    Dernier message: 27/05/2004, 17h00

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