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
Version imprimable
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
hélas non, car avec ça l'utilisateur peut toujours faire réapparaitre la colonne manuellement :P
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
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 :P
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 !)
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
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
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 :(
Yep !
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, :cry:
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]
ok merci :)
et cela est possible tout en gardant la barre visible ?? :oops:
mdr désolé :mouarf:
en fait quand tu mets : ShowColumnHeaders := False;
et bien automatiquement la barre disparait :P
sinon a part ça ça marche nikel ;)
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
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 ? :D
merci encore pour ton aide