关于 ListView 控件Item的定位问题 (100分)

  • 主题发起人 主题发起人 yhw1999
  • 开始时间 开始时间
Y

yhw1999

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用通过程序代码 来定位ListView 控件中的Item , 也就是我要查找一个item ,
如果它不可见的话,我要把 listview 卷动到它的位置上去,以让ITem可见, 请问有谁知道
该如何写代码呢?
 
procedure TForm1.Button1Click(Sender: TObject);
var a_listitem : TListItem;
begin
a_listitem := ListView1.Items[3];『你向寻找的Item』
ListView1.Selected :=listview1.Items[ListView1.Items.IndexOf(a_listitem)];
ListView1.Selected.MakeVisible (true) ;{显示}
// ListView1.SetFocus ;
end;
 
看看:)
 
这样是可以让选中的item可见, 但是要把Item移动到 listview 可见区域的中间部分,
比如说固定让它在当前页的第十行显示, 这又该如何做呢?
 
先用
a_listitem := ListView1.Items[3];『你向寻找的Item』
ListView1.Selected :=listview1.Items[ListView1.Items.IndexOf(a_listitem)];
ListView1.Selected.MakeVisible (true) ;{显示}
再配合滚动函数试试. :-)
SendMessage(ListView1.Handle,EM_LINESCROLL,0,-5);
 
问题题是该滚动多少行呢?
用 ListView1.Selected.MakeVisible (true) ; 的结果会使选中的item出现在 LiveView
的任何位置上.
 
那就不是一两行代码的事了,你要算listview的高度,1行的高度,然后得到需要滚动多少行
 
那listview一行的高度该如何求呢? 我没有找到
 
找个和listview一行差不多大的edit量量 呵呵
我这里是12
 
后退
顶部