ListView怎么实现背景图?(100分)

  • 主题发起人 主题发起人 winmaster2
  • 开始时间 开始时间
---- 下面是在ListView控件中绘底图的一个小程序

---- 源程序如下:

unit ListViewMain;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs,
ComCtrls, ImgList;
type
TForm1 = class(TForm)
ListView1: TListView;
ImageList1: TImageList;
procedure ListView1CustomDraw(Sender:
TCustomListView;
const ARect: TRect; var DefaultDraw:
Boolean);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject;
var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Bitmap1: TBitmap;
implementation
{$R *.DFM}

procedure TForm1.ListView1CustomDraw(Sender:
TCustomListView;
const ARect: TRect; var DefaultDraw: Boolean);
var
x,y,w,h : LongInt;
begin
with Bitmap1 do begin
W := Width;
H := Height;
end;
Y := 0;
while Y < Height do begin
X := 0;
while X < Width do begin
ListView1.Canvas.Draw(X, Y, Bitmap1);
Inc(X, W);
end;
Inc(Y, H);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Bitmap1 := TBitmap.Create;
Bitmap1.LoadFromFile('backgray.bmp');
end;

procedure TForm1.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Bitmap1.Free;
end;

end.


 
有Listview的空件吗?
 
干吗非要控件啊,自己重画,照上面的老兄说的,很好啊,有时间自己把它做成控件
不好吗?
 
有Listview的控件吗?用控件方便!
 
有支持背景图的Listview的控件吗?用控件方便!
 
有控件,不过忘记时那个斑竹的了,借花献佛,
www.tommstudio.com/
不过要好好找找,太多了,
to:tingtao:干嘛,不让程序员更多的时间去追女孩子呢?

to:lvxq:有时间?有时间去做点别的吧,避免重复劳动。
 
tinytao:
可是如果加入了ITEM以后,就会把背景给盖了,怎么办那?
 
//加入了ITEM以后,就会把背景给盖了,怎么办那?
重绘
 
请看Delphi自带的例子CustomDraw
 
对于这个问题,我也做了。花了很长时间,我做的还要有分隔条,当时主要问题在于
闪烁和分隔条变化画面导致不同步,终于最后用API搞定了,在Form的OnShow事件中
增加如下代码,这里我用C++ Builder的代码给出:
LUListView->Brush->Bitmap=Image1->Picture->Bitmap;
LUListView->Canvas->Brush->Style = bsClear;
SetBkMode(LUListView->Canvas, TRANSPARENT);
LUListView->Perform(LVM_SETTEXTBKCOLOR,0,((int)CLR_NONE));
SetBkColor(LUListView->Canvas,CLR_NONE);
 
接受答案了.
 
后退
顶部