DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: a12315
今日帖子: 42
在线用户: 14
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 ds3000 (ds3000) ▲▲▲▲△ -
普通会员
2020/1/17 15:12:42
标题:
关于TListView控件使用求助 浏览:1037
加入我的收藏
楼主: 有个小工具软件,用了TListView控件,里面有个定位显示,是按照2列的内容满足要求,就定位选中这一条记录,但是有一个问题,在数据信息比较多的情况下,这个定位显示有可能刚好在一屏的低端,这样看起来不是很舒服,现要求这条记录显示在TListView的中部或者头部,请问这个有办法实现吗?
此帖子包含附件:
PNG 图像
大小:23.0K
----------------------------------------------
-
作者:
男 earthsbest (全能中间件) ▲▲▲▲△ -
普通会员
2020/1/17 17:43:48
1楼: var
  R: TRect;
  Item: TListItem;
begin
  Item := ListView1.FindCaption(0, 'abcd', True, True, False);
  if Item <> nil then
  begin
    ListView1.Selected := Item;

    Item.MakeVisible(True);
    ListView1.SetFocus;

    R := Item.DisplayRect(drBounds);
    ListView1.Scroll(0, R.Top - R.Height);
  end;
end;
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
作者:
男 hs_kill (lzl_17948876) ★☆☆☆☆ -
普通会员
2020/1/21 17:49:08
2楼: listview.makevisible原则是, 要显示的item序号比当前显示的高就在最下面显示, 反之在最上面显示

所以, 自己计算一下当前topitem的序号和要显示的序号关系, 然后去显示增加或减少的listview可见行数/2序号的item, 然后再选中你要显示的item
----------------------------------------------
http://www.cnblogs.com/lzl_17948876/
作者:
男 ds3000 (ds3000) ▲▲▲▲△ -
普通会员
2020/2/28 14:23:34
3楼: to earthsbest:

谢谢,问题解决了,TRect没有Height,所以我调整了一下:
      
R := lvInfo.Items[I].DisplayRect(drBounds);
iHeight := R.Bottom - R.Top;    
lvInfo.Scroll(0, R.Top - iHeight);
----------------------------------------------
-
作者:
男 ds3000 (ds3000) ▲▲▲▲△ -
普通会员
2020/2/28 14:24:04
4楼: to hs_kill:
谢谢!
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行109.375毫秒 RSS