这个挺容易的,想要的话就MAIL我吧...

解决方案 »

  1.   

    应该也是用canvas自己画吧!!
    Canvas->Draw(50,50,pBitmap);
      

  2.   

    uses Jpeg;procedure TForm1.Button1Click(Sender: TObject);
    var
      jpg:TJPEGImage;
    begin
      jpg:= TJpegImage.Create;
      jpg.LoadFromFile('F:\My Documents\Pictures\0091.jpg');
      Treeview1.Canvas.Draw(0,0,jpg);
      Listview1.Canvas.Draw(0,0,jpg);
      jpg.Free;
    end;
      

  3.   

    可是,当我点击TREEVIEW时,图片变的很破碎,我要得是那种,一直在底部而不会被改变,那位能解决这个问题呢
      

  4.   

    这个么,我想可能要自己再去写一遍这两个控件,重载它们的WM_ERASEBGGND消息处理方法,
    把绘制底图的代码放在这里,哪位可以试试,应该有用的,我没时间试了,呵呵
      

  5.   

    只需在listview的重画事件用Apollo47(阿波罗)方法
      

  6.   

    只需在listview的重画事件用Apollo47(阿波罗)方法
      

  7.   

    从TListView继承一个自已的控件,重载它的Paint方法。
    type
      TExListView = class(TListView)
      protected
        procedure Paint; override;
      end;
    ......procedure TExListView.Paint;
    var
      jpg:TJPEGImage;
    begin
    // Draw you background here
      jpg:= TJpegImage.Create;
      try
        jpg.LoadFromFile('F:\My Documents\Pictures\0091.jpg');
        Treeview1.Canvas.Draw(0,0,jpg);
        Listview1.Canvas.Draw(0,0,jpg);
      finally
        jpg.Free;
        inherited; // inherite TListViewDraw;
      end;
    end;
    省略了控件的其它部份。如果对控件不熟,建议你通过向导创建新控件并注册。实际上很简单的。
      

  8.   

    刚才写错了,重发一次。从TListView继承一个自已的控件,重载它的Paint方法。
    type
      TExListView = class(TListView)
      protected
        procedure Paint; override;
      end;
    ......procedure TExListView.Paint;
    var
      jpg:TJPEGImage;
    begin
    // Draw you background here
      jpg:= TJpegImage.Create;
      try
        jpg.LoadFromFile('F:\My Documents\Pictures\0091.jpg');
        TExListView(Self).Canvas.Draw(0,0,jpg); 
           // 老外一般这样写,我常写成 Self.Canvas.Draw(0,0,jpg); 
      finally
        jpg.Free;
        inherited; // inherite TListViewDraw;
      end;
    end;
    省略了控件的其它部份。如果对控件不熟,建议你通过向导创建新控件并注册。实际上很简单的。   
      

  9.   

    可是,你的那句
      Protected
         procedure Paint;override;
      end;
    编译时报[Error] ListView1.pas(13): Method 'Paint' not found in base class
    我改成了  virtual,编译通过了,安装好
     但是控件如何用呀
    分数我将再加
      

  10.   

    如果TListView 没有Paint 的话Ary的方法可能不行,应该是建一个
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ComCtrls,jpeg;type
      TListViewEx = class(TListView)
      private
        FBkgnd : TJPEGImage;
        procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); message WM_ERASEBKGND;
      public
        property BkGnd : TJPEGImage read FBkgnd write FBKgnd;
      end;
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        FList : TListViewEx;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
    var
      jpg : TJpegImage;
    begin
      jpg:= TJpegImage.Create;
      jpg.LoadFromFile ('c:\My Documents\My pictures\god.jpg');
      FList := TListViewEx.Create(self);
      FList.Parent := self;
      FList.BkGnd := jpg;
      FList.Items.Add;
      FList.Items[0].Caption  := 'askjdfsajfhsa';
      FList.Items.Add;
      FList.Items[1].Caption  := 'askjdfsajfhsa';  FList.Items.Add;
      FList.Items[2].Caption  := 'askjdfsajfhsa';
      FList.Items.Add;
      FList.Items[3].Caption  := 'askjdfsajfhsa';
    end;{ TListViewEx }procedure TListViewEx.WMEraseBkgnd(var Message: TWmEraseBkgnd);
    begin
      if not Assigned(FBKGnd) then
        inherited
      else begin
        Canvas.Lock;
        try
          Canvas.Handle := Message.DC;
          Canvas.Draw(0,0, Bkgnd);
          Canvas.Handle := 0;
        finally
          Canvas.Unlock;
        end;
      end;
    end;end.
      

  11.   

    但是上面的ITEM会盖掉一部分的背影,如果想让ITEM透明就要定义事件OnCustomDraw,
    另外如果想做一个好一点的组件,以后也好用的话可以从TCustomListView继承,而 不是从TListView;