以前にC++BuilderでツリービューにTTreeNodeを継承した項目を追加する方法を書きました。
([C++Builder]TTreeNodeを継承した独自のノードをツリービューに追加する |山本隆の開発日誌)
今回はDelphiでリストビューにTListItemを継承した項目を追加する方法です。
フォームにTListView、TLabel、TButtonを配置します。
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;
実行結果