
Zitat von
smart:
Hi,
wann rufst Du es auf? Bei mir gibt das eine Zugriffsverletzung.
Gruß
Heike
Wenn ich schon 2 Einträge im Listview habe, dann wird das 2. Item (ListView.Items.Item[1]) in der Position verändert. Die Eigenschaft ViewStyle der Listenansicht muß entweder auf vsIcon oder auf vsSmallIcon gesetzt sein.
SetPosition
EDIT: So könnte man beim Hinzufügen neuer Items gleich den Abstand untereinander verringern:
Delphi-Quellcode:
var
LstItm: TListItem;
ItemRect: TRect;
ItemPos: TPoint;
ScrollX: integer;
const
iLeft= 15;
iTop= 0;
begin
ScrollX := GetSystemMetrics(SM_CXVSCROLL);
LstItm := ListView1.Items.Add;
LstItm.Caption := 'Test Item';
LstItm.ImageIndex := 0;
with Listview1 do
if Items.Count> 1 then
begin
ItemPos := Items.Item[Items.Count- 2].GetPosition;
ItemRect := Items.Item[Items.Count- 2].DisplayRect(drBounds);
if ItemRect.Right+ iLeft+ ListView1.LargeImages.Width+ ScrollX+ 10>= ClientWidth then
LstItm.SetPosition(Point(iLeft, ItemRect.Bottom+ iTop))
else
LstItm.SetPosition(Point(ItemRect.Right+ iLeft, ItemPos.Y));
end
else
LstItm.SetPosition(Point(iLeft, iTop));