ListVIEw控件是Windows程序開發中的常用控件, 利用它可以把需要用戶進行選擇操作的多個項目在窗口中以列表的方式顯示, 每一個項目可以有它的小圖標和大圖標, 從而可以改善程序的用戶界面, 方便用戶操作.
---- 為了使程序的界面更美觀, 我們還可以在ListVIEw控件中繪制底圖, 正如我們可以為窗口繪制底圖一樣. 在Delphi中, 為ListView控件繪制底圖是非常容易的, 它為我們提供有OnCustomDraw事件, 專門用於處理用戶自定義的繪制, 在該事件中編寫程序, 可以在繪制ListView的各個項目之前, 先執行該事件程序在ListVIEw的畫布(Canvas)上繪制我們自己的圖形.
---- 下面是在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;