次の状況をプログラムしたいと思います。
フォームに2つの異なるListViewがあります。ListView2の特定のアイテムをListView1アイテムに添付したいと思います。「親」アイテムが削除された後、ListView2からすべての添付アイテムも削除する必要があります。私はこれまでこれを試しました:
type
TITEMS = record
A_Items : array of TListItem;
end;
ListView1にアイテムを追加するボタン(ParentItems)
var
item : TListItem;
begin
item := ListView1.Items.Add;
item.Caption := 'ParentTestItem';
item.SubItems.Add('TestSubItem');
ListView2(ChildItems)にアイテムを追加するボタン
var
item : TlistItem;
items : TITEMS;
begin
if ListView1.Selected = NIL then exit; // Make sure an item is selected.
item := ListView2.Items.Add;
item.Caption := 'ChildTestItem';
item.SubItems.Add('TestSubItem');
SetLength (items.item, Length(items.item) + 1); // wrong?
items.item[Length(items.item)-1] := item;
ListView1.Selected.SubItems.Objects[0] := @items;
ParentItemを削除するボタン(そしてChildItemsも削除する必要があります...)
var
items : TItems;
i : Integer;
item : TlistItem;
begin
if ListView1.Selected = NIL then exit; // Make sure an item is selected.
items := TItems(ListView1.Selected.SubItems.Objects[0]); // Cast
for i := 0 to Length (items.item) - 1 do begin
item := items.item[i];
item.Delete;
end;
ListView1.Selected.Free;
どうすればこれを実現できるか考えてみてください。