Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1381 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  [Resolu] Marquer le titre d'une colonne après un tri dans une ListView

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Resolu] Marquer le titre d'une colonne après un tri dans une ListView

n°652840
Dionyzos
nom de Dio
Posté le 24-02-2004 à 11:20:52  profilanswer
 

Bonjour,  
 
J'utilise une TlistView avec ViewStyle = vsReport, et j'ai créé une procédure pour trier les éléments de la liste lorsque l'on appelle l'événement OnColumnClick.
 
Mon problème est le suivant :
 
Après que l'utilisateur ait cliqué sur l'une des en-têtes de colonne d'une ListView, comment faire pour que le titre de cette même colonne change ? Par exemple le titre de la colonne passe en caractère gras, ou une petite image s'affiche à coté du titre pour indiquer que le tri a été fait par rapport à cette colonne.
 
J'ai potassé la doc Delphi (6) mais je n'ai rien trouvé concernant cette fonctionnalité pour une TListView  :??:
 
Quelqu'un a-t-il déjà planché sur le problème ?  :ange:
 
Merci  :)


Message édité par Dionyzos le 07-03-2005 à 15:22:53
mood
Publicité
Posté le 24-02-2004 à 11:20:52  profilanswer
 

n°721006
Dionyzos
nom de Dio
Posté le 10-05-2004 à 18:03:03  profilanswer
 

Alléluia !!! J’ai la solution grâce à  Delphiprog :)
 
1- disposer d'un composant TImageList
2- Charger au moins deux images dans ce composant : un représentant un tri croissant et l'autre un tri décroissant.
3- affecter la propriété SmallImages du TListView avec le composant TImageList.
4- double cliquer sur le composant TListView et enseigner la propriété ImageIndex de la colonne que l'on souhaite voir affublée d'un dessin au démarrage de l'application.
 
Et voici la procédure permettant de gérer l’événement OnColumnClick :
 

var
  TriAsc: boolean; // variable globale déterminant le sens du tri dans un ListView
 
procedure TForm1.ListView1ColumnClick(Sender: TObject; Column: TListColumn);
var
  i: integer;
begin
  //Réinitaliser tous les titres des colonnes
  //= effacer les images présentes
  with TListView(Sender) do
    for i := 0 to Columns.Count - 1 do
      Columns[i].ImageIndex := -1;
 
  if TriAsc
    then Column.ImageIndex := 0
    else Column.ImageIndex := 1;
 
  //Inversion du sens de tri
  TriAsc := not TriAsc;
end;


 
La petite image va maintenant s’afficher devant le titre de la colonne sur laquelle on a cliqué.
Le problème est qu’elle s’affiche également devant chaque éléments de la première colonne.
 
Pour empêcher cela, il faut placer le bout de code suivant à la fin de la procédure qui permet de remplir la TlistView :
 

With MaListView do
  for i := 0 to Items.Count – 1 do
    Items.Item[i].ImageIndex := -1;


 
Et voilà le petit symbole graphique indiquant le sens de tri de la colonne cliquée, apparaît uniquement sur l’en-tête de la colonne :wahoo:  
 
 
Par contre il reste un petit détail gênant : Lorsque le symbole apparaît dans l’en-tête de la colonne, celui-ci est placé à gauche du titre, ce qui fait que le titre se décale vers la droite pour laisser la place à l’image du symbole.
C’est pas très esthétique :(
 
J’espère que cette solution servira à quelqu’un d’autre que moi ;)
 
Dionyzos


Message édité par Dionyzos le 18-07-2005 à 17:49:33

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  [Resolu] Marquer le titre d'une colonne après un tri dans une ListView

 

Sujets relatifs
[HTML]Créer un assenceur <<< Resolu[PHP] url rewriting : probleme de recup des paramètres [Résolu]
[Resolu][JAVA]Problème de try catch et if else[Resolu][PHP] Passer une variable dans une requete mysql_query()
mdp plus en clair [résolu][JTreeTable] initialisation d'une colonne
[resolu]cast de composant graphique[RESOLU]Problème de communication (DataInputStream & DataOutputStream)
[PHP] dupliquer une variable... [Resolu][PHP] utilisation de polices TTF dans les images [Résolu]
Plus de sujets relatifs à : [Resolu] Marquer le titre d'une colonne après un tri dans une ListView


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR