读书人

吃饭还在想着的有关问题*关于ListView*

发布时间: 2012-02-25 10:01:48 作者: rapoo

吃饭还在想着的问题****关于ListView******
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:=0 to 7 do
begin
listview1.Columns.Add;
listview1.Columns[i].Caption:='第'+inttostr(i)+'列';
listview1.Columns[i].Width:=90;
end;

for i:=0 to 5 do
with ListView1.Items.Add do
begin
Caption:='哈哈,我是美女';
SubItems.Add('第0列内容:');
SubItems.Add('第1列内容');
SubItems.Add('第2列内容');
SubItems.Add('第3列内容');
SubItems.Add('第4列内容');
SubItems.Add('第5列内容');
SubItems.Add('第6列内容');
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
listview1.Items.Item[listview1.Selected.Index].Delete;
///..............怎么写???
end;


请看代码,我想实现Button2是删除当前选择行后,再定位到下一行!!!!
解释:如果当前选择的是最后一行,那么定位到删除后的ListView最后一行!!!
要不就是定位到删除那一行的下一行!!!
让定位的行部总处于选择的状态!!!
若ListView中无数据,则退出,不进行操作!!!

怎么会写呢??求助了???



[解决办法]
procedure TForm5.Button2Click(Sender: TObject);
var
FItem, FNext: TListItem;
begin
FItem := ListView1.Selected;
if Assigned(FItem) then
begin
FNext := ListView1.GetNextItem(FItem, sdBelow, [isNone]);
if not Assigned(FNext) then
FNext := ListView1.GetNextItem(FItem, sdAbove, [isNone]);

if Assigned(FNext) then
FNext.Selected := True;

FItem.Delete;
end;
end;

读书人网 >.NET

热点推荐