Delphi 7 에서 Listview 의 일반적인 기능 집합

2575 단어 DelphiListview기능.
어떤 때 는 Delphi 7 의 Listview 를 사용 하 는 과정 에서 기본 설정 을 바 꿔 야 할 때 가 있 습 니 다.지금 은 집중 해서 다음 과 같이 모 으 겠 습 니 다.
MultiSelect := True;   Listview 가 여러 줄 을 동시에 선택 할 수 있 도록 합 니 다.
GridLines := True;     Listview 로 격자 선 보이 기
ViewStyle := vsReport; 데이터 항목 의 자세 한 목록 보이 기
HideSelection := True;  listview 초점 을 잃 었 을 때 선택 한 줄 이 밝 지 않 습 니 다.

//    
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
 Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
 subRect, itemRect: TRect;
 i, SubItem: Integer;
begin
 DefaultDraw := False;
 if Item.Selected then begin
  Sender.Canvas.Font.Color := clRed; //       
  Sender.Canvas.Brush.Color := clgray; //clGreen;        
 end else begin
  Sender.Canvas.Font.Color := clNavy; //       
  Sender.Canvas.Brush.Color := clWhite; //       
 end;
 itemRect := Item.DisplayRect(drLabel);
 subRect := itemRect;
 for 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 + (Sender as TListView).Column[i].Width;
  end;
  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;


//    
 private
  { Private declarations }
  SortCol: Integer;
  SortWay: Integer;
 
procedure TForm1.ListView1ColumnClick(Sender: TObject;
 Column: TListColumn);
begin
 SortCol := Column.Index;
 if (SortWay = 1) then SortWay := -1 else SortWay := 1;
 (Sender as 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]);
 end;
end;

이 기능 에 문제 가 존재 한다.숫자 정렬 은 문자 와 유사 하 게 배열 된다.예 를 들 어 1,10,102,3,34,356.관심 있 는 독 자 는 보완 할 수 있다.

좋은 웹페이지 즐겨찾기