超级大难题!!!(30分)

  • 主题发起人 主题发起人 chatop
  • 开始时间 开始时间
C

chatop

Unregistered / Unconfirmed
GUEST, unregistred user!
我遍了大富翁的资料,就是没有找到,不知道大家知道不
ListView的行号,行数 怎么得到?

 
ListView.Items.Count;
ListView.Selected.Index;
是这个意思吗?
 
itmeslinecount:=seskinslistview1.Selected.Index;
这个不行,会出错!
我放在procedure TForm1.SeSkinSListView1SelectItem(Sender: TObject;
Item: TListItem; Selected: Boolean);
里,不行!!
 
procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
Caption := inttostr(Item.Index);
end;
 
测试了一下,可以得到行号,可就是会出错!
出错提示:access violation at 00440868 in module 'hellworld.exe'. read address 0000004
 
那不是这里的原因,是你程序的其它地方有问题。
你可以自己分析一下是什么时候、在那里出的错,然后设断点调试。如果还解决不了,再把出错的代码帖出来。
 
不可能会有问题的…
procedure TForm1.SeSkinSListView1SelectItem(Sender: TObject;
Item: TListItem; Selected: Boolean);
var
itmeslinecount:integer;//记录行数
begin
itmeslinecount:=seskinslistview1.Selected.Index;
label1.Caption:=inttostr(itmeslinecount);
end;

这些代码是独立分开的,可能会有问题吗?
 
说明一下listview中的数据,是从数据库里读出来的,他的行数不确定!
 
不对的,Selected是一个对象,如果当前listview根本就没有东西被选中,那么
你读取这个对象就是访问非法地址。
 
你的概念是错误的,你认为Selected应该有数据,但实际情况是:
Selected有时为Nil,所以会出现非法访问错误,你在访问前应该:
if Selected<>Nil Then
Begin
// do something
End;
 
神人呀…
解决了,给分了
谢谢tk128
 
后退
顶部