때때로 Delphi7의 Listview를 사용할 때 일부 기본 설정을 항상 변경해야 하는 경우가 있습니다. 이제 이를 모아서 다음과 같이 요약합니다.
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; 그런 다음 Sender.Canvas.Font.Color를 시작합니다. clRed; //선택한 선 글꼴 색상 Sender.Canvas.Brush.Color := clgray; //clGreen; 선택한 선 강조 colorend else start Sender.Canvas.Font.Color := clNavy; Brush.Color := clWhite; //일반 행 강조 색상 end; item.DisplayRect(drLabel); SubItem := 0 to (TListView로 보낸 사람).Columns.Count - 1 do start subRect.Left := itemRect.Left; for i := 1 to SubItem do start subRect.Left := subRect.Left + (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[하위 항목 - 1]); end;end;
//정렬 함수 private { Private 선언 } SortCol: Integer; SortWay: Integer; 프로시저 TForm1.ListView1ColumnClick(Sender: TObject; Column: TListColumn);begin SortCol := Column.Index; if (SortWay = 1) then SortWay := - 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) then start Compare := SortWay * CompareText(Item1.Caption, Item2.Caption) end else 시작 t := SortCol - 1; 비교 := SortWay * CompareText(Item1.SubItems[t], Item2.SubItems[t]) end;end;이 기능에는 문제가 있습니다. 숫자 정렬은 문자와 유사합니다. 예: 1,10,102,3,34,356...관심 있는 독자는 이를 개선할 수 있습니다.