A veces siempre tenemos que cambiar algunas configuraciones predeterminadas cuando usamos Listview de Delphi7. Ahora las reunimos y las resumimos de la siguiente manera.
MultiSelect := True; permite que Listview seleccione varias filas al mismo tiempo
GridLines := True; hace que Listview muestre líneas de cuadrícula
ViewStyle := vsReport; muestra una lista detallada de elementos de datos
HideSelection := True; Cuando la vista de lista pierde el foco, la fila seleccionada no se resalta.
//Establecer procedimiento de color TForm1.ListView1CustomDrawItem(Remitente: TCustomListView; Elemento: TListItem; Estado: TCustomDrawState; var DefaultDraw: Boolean);var subRect, itemRect: TRect; i, SubItem: Integer;begin DefaultDraw := False if Item.Selected; luego comience Sender.Canvas.Font.Color := clRed; //Color de fuente de línea seleccionada Sender.Canvas.Brush.Color := clgray; //clGreen; Color de fuente de línea seleccionadaend else start Sender.Canvas.Font.Color := clNavy; Brush.Color := clWhite; // Fin del color de resaltado de fila normal; itemRect := Item.DisplayRect(drLabel); SubItem:= 0 a (Remitente como TListView).Columns.Count - 1 comienza subRect.Left:= itemRect.Left; para i:= 1 a SubItem comienza subRect.Left:= subRect.Left + (Remitente como TListView) .Columna[i - 1].Ancho; subRect.Right := subRect.Right + SubRect.Left + (Remitente como TListView).Column[i].Width; fin; si SubItem = 0, entonces comience subRect.Right := subRect.Right + 2; fin más Sender.Canvas.TextRect(subRect, subRect.Left, subRect.Top, Artículo.SubItems[SubItem - 1]); fin;fin;
// Función de clasificación privada { Declaraciones privadas } SortCol: Integer; SortWay: Integer; procedimiento TForm1.ListView1ColumnClick(Remitente: TObject; Columna: TListColumn);begin SortCol := Column.Index si (SortWay = 1) entonces SortWay := - 1 más SortWay: = 1 (Remitente como TCustomListView).AlphaSort;end;procedimiento TForm1.ListView1Compare(Remitente: TObject; Elemento1, Elemento2: TListItem; Datos: Entero; var Comparar: Entero);var t: Entero;comenzar si (SortCol = 0) luego comenzar Comparar:= SortWay * CompareText(Item1.Caption, Item2.Caption y finalice); t := SortCol - 1; Comparar := SortWay * CompareText(Item1.SubItems[t], Item2.SubItems[t]);Hay un problema con esta función: la clasificación numérica será similar a la de los caracteres, por ejemplo: 1,10,102,3,34,356... Los lectores interesados pueden mejorarla.