Manchmal müssen wir bei der Verwendung der Listenansicht von Delphi7 immer einige Standardeinstellungen ändern. Jetzt stellen wir sie zusammen und fassen sie wie folgt zusammen.
MultiSelect := True; ermöglicht Listview die gleichzeitige Auswahl mehrerer Zeilen
GridLines := True; bewirkt, dass Listview Gitterlinien anzeigt
ViewStyle := vsReport; zeigt eine detaillierte Liste der Datenelemente an
HideSelection := True; Wenn die Listenansicht den Fokus verliert, wird die ausgewählte Zeile nicht hervorgehoben.
//Farbprozedur festlegen TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);var subRect, itemRect: TRect; i, SubItem: Integer;begin DefaultDraw := False; if Item.Selected Beginnen Sie dann mit Sender.Canvas.Font.Color := clRed; //Ausgewählte Zeilenschriftfarbe Sender.Canvas.Brush.Color := clgray; //clGreen; Ausgewählte Zeilenmarkierungsfarbeend else begin Sender.Canvas.Font.Color := clNavy; //Normale Zeilenschriftfarbe Brush.Color := clWhite; //Normale Zeilenhervorhebungsfarbe end; itemRect := Item.DisplayRect(drLabel); SubItem := 0 bis (Sender als TListView).Columns.Count - 1 beginnt subRect.Left := itemRect.Left; für i := 1 bis SubItem beginnt subRect.Left := subRect.Left + (Sender als TListView) .Column[i - 1].Width; subRect.Right := subRect.Right + SubRect.Left + (Sender as TListView).Column[i].Width; if SubItem = 0 then begin 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]); end;end;
//Sortierfunktion privat { Private Deklarationen } SortCol: Integer; SortWay: Integer; procedure TForm1.ListView1ColumnClick(Sender: TObject; Column: TListColumn);begin SortCol := Column.Index; if (SortWay = 1) then SortWay := 1 else SortWay := 1; (Absender als TCustomListView).AlphaSort;end;procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);var t: Integer;begin if (SortCol = 0) then begin Compare := SortWay * CompareText(Item1.Caption, Item2.Caption); end else begin t := SortCol - 1; Compare := SortWay * CompareText(Item1.SubItems[t], Item2.SubItems[t]);Bei dieser Funktion gibt es ein Problem: Die numerische Sortierung ähnelt den Zeichen, zum Beispiel: 1,10,102,3,34,356...Interessierte Leser können sie verbessern.