listview: fixes for improper OwnerDataListItem.Owner. #18961

git-svn-id: trunk@30832 -
This commit is contained in:
dmitry 2011-05-21 03:56:27 +00:00
parent 90fa711a3a
commit a32a3ef4ca
3 changed files with 15 additions and 3 deletions

View File

@ -786,6 +786,7 @@ type
procedure DoCacheItem;
public
procedure SetDataIndex(ADataIndex: Integer);
procedure SetOwner(AOwner: TListItems);
end;
{ TListItemsEnumerator }

View File

@ -469,7 +469,7 @@ end;
{------------------------------------------------------------------------------}
procedure TCustomListView.SetItems(const AValue : TListItems);
begin
end;
end;
{------------------------------------------------------------------------------}
{ TCustomListView SetItemVisible }
@ -1045,16 +1045,18 @@ procedure TCustomListView.SetOwnerData(const AValue: Boolean);
begin
if FOwnerData=AValue then exit;
FOwnerData:=AValue;
FOwnerDataItem.SetOwner(nil);
Items.Free;
if AValue then
begin
FSelectedIdx:=-1;
Items:=TOwnerDataListItems.Create(Self);
FListItems:=TOwnerDataListItems.Create(Self);
end else
Items:=TListItems.Create(Self);
FListItems:=TListItems.Create(Self);
if HandleAllocated then
TWSCustomListViewClass(WidgetSetClass).SetOwnerData(Self, AValue);
FOwnerDataItem.SetOwner(FListItems);
end;
procedure TCustomListView.SetProperty(const ALvpOrd: Integer;

View File

@ -809,6 +809,15 @@ begin
end;
end;
procedure TOwnerDataListItem.SetOwner(AOwner: TListItems);
begin
FOwner:=AOwner;
FFlags := [];
FStates := [];
FImageIndex := -1;
FreeAndNil(FSubItems);
end;
function TOwnerDataListItem.GetSubItems: TStrings;
begin
if not FCached then DoCacheItem;