TListView的问题

lght 2011-06-10 09:05:13
TListView设为vsIcon模式,自己画背景,单个选择的时候背景框能全部显示,按Ctrl键,用鼠标选择多个,背景也能全部显示。
如果用鼠标直接选择多个则图片显示不全,怎么回事?

...全文
179 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lght 2011-06-28
  • 打赏
  • 举报
回复
找到问题了,caption太长,large_image图片的大小不够。
结贴
五哥 2011-06-24
  • 打赏
  • 举报
回复
跟踪学习...
山东蓝鸟贵薪 2011-06-22
  • 打赏
  • 举报
回复
不清楚,没试过.......
lyhoo163 2011-06-22
  • 打赏
  • 举报
回复
关注。
浩南_哥 2011-06-21
  • 打赏
  • 举报
回复
#5 已经给你提示了
要么是没地方画了,要么就是覆盖了,其他的暂时没想到
lght 2011-06-20
  • 打赏
  • 举报
回复
高手来帮忙看看
lght 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lovelymelon 的回复:]

显示不全,应该是没显示的地方重画了

不知道你是在什么事件里写的代码,看看是不是存在同一线条画两遍的情况
[/Quote]

在OnAdvancedCustomDrawItem里画的。
dropme 2011-06-10
  • 打赏
  • 举报
回复
呃。。。不贴代码怎么看有什么问题
lght 2011-06-10
  • 打赏
  • 举报
回复
就是自己画的啊
bdmh 2011-06-10
  • 打赏
  • 举报
回复
自己实现自画吧,在drawitem中对选中的记录进行处理
lovelymelon 2011-06-10
  • 打赏
  • 举报
回复
显示不全,应该是没显示的地方重画了

不知道你是在什么事件里写的代码,看看是不是存在同一线条画两遍的情况
lght 2011-06-10
  • 打赏
  • 举报
回复

var
lpRect: TRect;
X, Y: Integer;
Icon: TIcon;
p: PItemData;
sName: string;
begin
if (Item = nil) or (Item.Data = nil) then
Exit;
p := Item.Data;

lpRect := Item.DisplayRect(drBounds);

if cdsSelected in State then
FPicture.Draw2(ACanvas, lpRect, 'Selected', 0);

Icon := GetFileIconEx(p^.Path, 1, itLargeIcon);
if Icon <> nil then
try
// 画图标
X := (RectWidth(lpRect) - Icon.Width) div 2 + lpRect.Left - 3;
Y := lpRect.Top + 2;
ACanvas.Brush.Style := bsClear;
ACanvas.Draw(X, Y, Icon);
finally
FreeAndNil(Icon);
end;

// 画文字
SetBkMode(ACanvas.Handle, TRANSPARENT);
ACanvas.Brush.Style := bsClear;
lpRect := Item.DisplayRect(drLabel);
lpRect.Bottom := lpRect.Top + ACanvas.TextHeight(Item.Caption) * 2;

sName := ExtractFileName(p^.Path);
sName := GetShort(ACanvas, lpRect, sName);
DrawString(ACanvas, sName, lpRect, DT_CENTER or DT_WORDBREAK);

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧