Delphi7 のリストビューを使用するときは、常にいくつかのデフォルト設定を変更する必要がある場合があります。それらをまとめて次のようにまとめます。
MultiSelect := True; リストビューで複数の行を同時に選択できるようになります。
GridLines := True; リストビューにグリッド線を表示します。
ViewStyle := vsReport はデータ項目の詳細なリストを表示します。
HideSelection := True; リストビューがフォーカスを失うと、選択された行は強調表示されません。
//カラー設定プロシージャ TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Items: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);var subRect, itemRect: TRect; i, SubItem: Integer;begin DefaultDraw := False if Items.Selected;次に Sender.Canvas.Font.Color を開始します:= clRed; //選択された行のフォントの色 Sender.Canvas.Brush.Color := clgray; //選択された行の強調表示の色end else begin Sender.Canvas.Font.Color := clNavy; //通常の行のフォントの色。 Brush.Color := clWhite; // 通常の行のハイライト色 end; 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; SubItem = 0 の場合、開始 subRect.Right := subRect.Right + 2; end else Sender.Canvas.TextRect(subRect, subRect.Left, subRect.Top, item.SubItems[SubItem - 1]);
// ソート関数 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 begin Compare := SortWay * CompareText(Item1.Caption, Items2.Caption); end else begin t := SortCol - 1; 比較 := SortWay * CompareText(Item1.SubItems[t], item2.SubItems[t]);この関数には問題があります。数値の並べ替えは文字と同様になります (例: 1,10,102,3,34,356)。興味のある読者は改善できるでしょう。