Alléluia !!! Jai 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 safficher devant le titre de la colonne sur laquelle on a cliqué.
Le problème est quelle saffiche é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 len-tête de la colonne
Par contre il reste un petit détail gênant : Lorsque le symbole apparaît dans len-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 à limage du symbole.
Cest pas très esthétique
Jespère que cette solution servira à quelquun dautre que moi
Dionyzos
Message édité par Dionyzos le 18-07-2005 à 17:49:33