Às vezes sempre temos que alterar algumas configurações padrão ao usar o Listview do Delphi7. Agora as reunimos e resumimos da seguinte forma.
MultiSelect := True permite que Listview selecione várias linhas ao mesmo tempo
GridLines := True faz com que Listview exiba linhas de grade
ViewStyle := vsReport exibe uma lista detalhada de itens de dados;
HideSelection := True; Quando a listview perde o foco, a linha selecionada não é destacada.
//Definir procedimento de cor TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);var subRect, itemRect: TRect i, SubItem: Integer;begin DefaultDraw := False if Item.Selected; então comece Sender.Canvas.Font.Color := clRed; //Cor da fonte da linha selecionada Sender.Canvas.Brush.Color := clgray; //clGreen; Cor da fonte da linha selecionada Sender.Canvas.Font.Color := clNavy; Brush.Color := clWhite; //Fim da cor de destaque da linha normal; itemRect := Item.DisplayRect(drLabel); SubItem := 0 para (Sender as TListView).Columns.Count - 1 comece subRect.Left := itemRect.Left; para i := 1 para SubItem comece subRect.Left := subRect.Left + (Sender as TListView) .Column[i - 1].Width; subRect.Right := subRect.Right + SubRect.Left + (Remetente como TListView).Column[i].Width; end se SubItem = 0 então começa subRect.Right := subRect.Right + 2; end else Sender.Canvas.TextRect(subRect, subRect.Left, subRect.Top, Item.SubItems[SubItem - 1]); fim;fim;
//Classificar função private { Declarações privadas } SortCol: Integer SortWay: Integer; procedimento TForm1.ListView1ColumnClick(Sender: TObject; Column: TListColumn);begin SortCol := Column.Index; 1 else SortWay := 1 (Remetente como TCustomListView).AlphaSort;end;procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);var t: Integer;begin if (SortCol = 0) então comece Compare := SortWay * CompareText(Item1.Caption, Item2.Caption end else start); t := SortCol - 1; Comparar := SortWay * CompareText(Item1.SubItems[t], Item2.SubItems[t]);Há um problema com esta função: a ordenação numérica será semelhante aos caracteres, por exemplo: 1,10,102,3,34,356...Leitores interessados podem melhorá-la