起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 135|回复: 7

【结贴】在线等!TListView中vsReport类型不能自绘

[复制链接]
发表于 2008-6-24 14:42:44 | 显示全部楼层 |阅读模式
在delphi中下面的可以改变颜色。
procedure TForm1.ListView2AdvancedCustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
  var DefaultDraw: Boolean);
Begin
ListView2.ViewStyle := vsReport;
ListView2.Canvas.Brush.Color := clYellow;
End;

我用的是2617
如果LvXZZX设置为vsIcon, vsSmallIcon, vsList, 都能改变颜色,但是
如果设置为vsReport就没有反应!
procedure TCT1.LvXZZXAdvancedCustomDrawItem(Sender: TCustomListView;Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;var DefaultDraw: Boolean);
begin
  with TCustomListView(Sender).Canvas do
       begin
       Brush.Style := TBrushStyle.bsSolid;
       Brush.Color := Graphics.clGreen
       end;
end;

WHY ?
回复

使用道具 举报

发表于 2008-6-24 15:40:24 | 显示全部楼层
我这里可以啊,用楼主的代码。是否属性设置有不同,还是DefaultDraw被设置成false了?
object ListView1: TListView
  Left = 8
  Top = 142
  Width = 592
  Height = 232
  Columns = <
    item
      Caption = #32534#21495
    end
    item
      Caption = #22995#21517
    end
    item
      Caption = #24180#40836
    end
    item
      Caption = #24615#21035
    end>
  Items.Data = {
    D00000000500000000000000FFFFFFFFFFFFFFFF0300000000000000025A5304
    D5C5C8FD02323002C4D000000000FFFFFFFFFFFFFFFF0300000000000000024C
    5304C0EECBC402313902C4D000000000FFFFFFFFFFFFFFFF0300000000000000
    02575704CDF5CEE502333102C4D000000000FFFFFFFFFFFFFFFF030000000000
    0000025A4C04D5D4C1F902353002C4D000000000FFFFFFFFFFFFFFFF03000000
    0000000002595104D1E0C6DF02323902C5AEFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF}
  TabOrder = 1
  ViewStyle = vsReport
  OnCustomDrawItem = ListView1CustomDrawItem
end
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-24 15:53:50 | 显示全部楼层
我发现是设置了ownerdraw属性为ture以后没有反应,取消以后代码起作用了。
楼上能解释一下ownerdraw属性?
回复 支持 反对

使用道具 举报

发表于 2008-6-24 15:58:02 | 显示全部楼层
这个属性为true后,将会用OnDrawItem替代默认的绘制动作。下面是delphi的解释:

Specifies whether the list view receives an OnDrawItem event.

property OwnerDraw: Boolean;

Description

Set OwnerDraw to True to allow the list view to receive the OnDrawItem event instead of the default rendering of list items.

Note:        This property is independent of the custom draw events such as OnCustomDraw, OnCustomDrawItem, OnAdvancedCustomDraw, and so on. The custom draw events always occur.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-24 16:30:25 | 显示全部楼层
明白了,
谢谢!
楼上能再解决一下如何在LISTVIEW中增加行的高度?比如增加成2行文字的高度。
自绘的时候只能得到Rect不能改变Rect
回复 支持 反对

使用道具 举报

发表于 2008-6-24 17:20:05 | 显示全部楼层
抱歉,这个就不太清楚了。
查一下delphi的帮助吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-24 17:49:22 | 显示全部楼层
多谢,已经解决了高度问题。
回复 支持 反对

使用道具 举报

发表于 2008-6-24 17:52:22 | 显示全部楼层
呵呵,请楼主共享一下吧。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-18 12:32 , Processed in 0.038392 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表