Parfois, nous devons toujours modifier certains paramètres par défaut lors de l'utilisation de Listview de Delphi7. Nous les rassemblons maintenant et les résumons comme suit.
MultiSelect := True ; permet à Listview de sélectionner plusieurs lignes en même temps.
GridLines := True ; fait en sorte que Listview affiche les lignes de grille.
ViewStyle := vsReport ; affiche une liste détaillée des éléments de données.
HideSelection := True ; Lorsque la vue de liste perd le focus, la ligne sélectionnée n'est pas mise en surbrillance.
//Définir la procédure de couleur TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);var subRect, itemRect: TRect; i, SubItem: Integer;begin DefaultDraw := False if Item.Selected; puis commencez Sender.Canvas.Font.Color := clRed; //Couleur de police de ligne sélectionnée Sender.Canvas.Brush.Color := clgray; //clGreen; Couleur de surbrillance de ligne sélectionnée sinon commencer Sender.Canvas.Font.Color := clNavy; Brush.Color := clWhite; //Fin de la couleur de surbrillance normale ; itemRect := Item.DisplayRect(drLabel); SubItem := 0 à (Expéditeur en tant que TListView).Columns.Count - 1 commence subRect.Left := itemRect.Left; pour i := 1 à SubItem commence subRect.Left := subRect.Left + (Expéditeur en tant que TListView) .Column[i - 1].Width; subRect.Right := subRect.Right + SubRect.Left + (Expéditeur en tant que TListView).Column[i].Width; end; si SubItem = 0 alors commencez subRect.Right := subRect.Right + 2; end else Sender.Canvas.TextRect(subRect, subRect.Left, subRect.Top, Item.SubItems[SubItem - 1]); fin;fin;
//Fonction de tri privée {Déclarations privées } SortCol: Integer; SortWay: Integer; procédure TForm1.ListView1ColumnClick(Sender: TObject; Column: TListColumn);begin SortCol := Column.Index; if (SortWay = 1) then SortWay := - 1 sinon SortWay := 1; TCustomListView).AlphaSort;end;procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);var t: Integer;begin if (SortCol = 0) then start Compare := SortWay * CompareText(Item1.Caption, Item2.Caption); fin sinon début t := SortCol - 1; Comparer := SortWay * CompareText(Item1.SubItems[t], Item2.SubItems[t]);Il y a un problème avec cette fonction : le tri numérique sera similaire aux caractères, par exemple : 1,10,102,3,34,356...Les lecteurs intéressés peuvent l'améliorer.