DelphiでTListItemを継承した項目をリストビューに追加する

以前にC++BuilderでツリービューにTTreeNodeを継承した項目を追加する方法を書きました。
[C++Builder]TTreeNodeを継承した独自のノードをツリービューに追加する |山本隆の開発日誌

今回はDelphiでリストビューにTListItemを継承した項目を追加する方法です。

フォームにTListView、TLabel、TButtonを配置します。

01

TListItemを継承したクラスを作成します。

type
  TMyListItem = class(TListItem)
  public
    Time: TDateTime; //項目の作成時刻
  end;

リストビューのOnCreateItemClassイベントは、新しく項目を作成しようとしたときに発生します。
引数のItemClassを設定して、作成される項目オブジェクトのクラスをTMyListItemクラスにします。

procedure TForm1.ListView1CreateItemClass(Sender: TCustomListView;
  var ItemClass: TListItemClass);
begin
  ItemClass := TMyListItem;
end;

リストビューに項目を追加すると、TMyListItemクラスのオブジェクトが作成されます。

procedure TForm1.Button1Click(Sender: TObject);
var
  Item: TMyListItem;
begin
  Item := ListView1.Items.Add as TMyListItem;
  Item.Caption := IntToStr(ListView1.Items.Count);
  Item.Time := Now();
end;

項目を選択したとき、選択項目のTimeフィールドの値を表示します。
項目はTMyListItemクラスのオブジェクトになっています。

procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
  Label1.Caption := FormatDateTime('hh:nn:ss', (Item as TMyListItem).Time);;
end;

実行結果

02

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください