Иногда нам всегда приходится менять некоторые настройки по умолчанию при использовании Listview в Delphi7. Теперь мы соберем их вместе и суммируем следующим образом.
MultiSelect := True; позволяет Listview выбирать несколько строк одновременно.
GridLines := True; заставляет Listview отображать линии сетки.
ViewStyle := vsReport отображает подробный список элементов данных;
HideSelection := True Когда представление списка теряет фокус, выбранная строка не выделяется.
//Установка процедуры цвета TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);var subRect, itemRect: TRect; i, SubItem: Integer;begin DefaultDraw := False; if Item.Selected; затем начните Sender.Canvas.Font.Color := clRed; //Цвет шрифта выбранной строки Sender.Canvas.Brush.Color := clgray; //clGreen; Цвет выделения выбранной строки else Begin Sender.Canvas.Font.Color := clNavy; //Цвет шрифта обычной строки Sender. Brush.Color := clWhite; //Цвет выделения обычной строки end; itemRect := Item.DisplayRect(drLabel); SubItem := 0 to (Sender as TListView).Columns.Count - 1 do Begin subRect.Left := itemRect.Left; for i := 1 to SubItem do Begin subRect.Left := subRect.Left + (Sender as TListView) .Column[i - 1].Width; subRect.Right := subRect.Right + SubRect.Left + (Отправитель как TListView).Column[i].Width; end; если SubItem = 0, то начать subRect.Right := subRect.Right + 2; Sender.Canvas.TextRect(subRect, subRect.Left, subRect.Top, Item.Caption); end else Sender.Canvas.TextRect(subRect, subRect.Left, subRect.Top, Item.SubItems[SubItem - 1]); конец;конец;
// Функция сортировки Private { Частные объявления } SortCol: Integer; SortWay: Integer; 1 else 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), затем начать Compare:= SortWay * CompareText(Item1.Caption, Item2.Caption end else Begin); t := SortCol - 1; Сравнить := SortWay * CompareText(Item1.SubItems[t], Item2.SubItems[t]);С этой функцией есть проблема: числовая сортировка будет аналогична символьной, например: 1,10,102,3,34,356... Заинтересованные читатели могут ее улучшить.