如何在treeview中插入背景图,或使它成为透明也可以。
午饭前结帐。             呵呵,来者都有分。帮我顶啦。

解决方案 »

  1.   

    procedure TForm1.FormPaint(Sender: TObject);
    begin
    TreeView1.Canvas.BrushCopy(....);
    end;
      

  2.   

    不太容易;
    你看看TCUSTOMLABEL的PAINT过程;也许对你有帮助;
    你需要自己继承TCUSTOMTREEVIEW,然后处理WM——PAINT消息;
      

  3.   

    我看了一下,直接用TreeView1.Canvas好像是不行
    你还是像天外流星说的试试看吧
      

  4.   

    这个是在listview中绘制地图的方法unit ListViewMain;interfaceuses
    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. 
      

  5.   

    这个是在treeview中绘制地图的方法:从TCUSTOMTREEVIEW继承,重载PAINT过程,然后处理WM——PAINT消息
    用create TBitMap 去贴在TCUSTOMTREEVIEW中,然后再进行其它的绘制
    对于闪烁的问题可以将其它文字等一起绘制在地图上
      

  6.   

    这个是在dbgrid中绘制地图的方法:unit fTransparentGrid;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls,
            Forms, Dialogs, Db, Grids, DBGrids, ADODB, ExtCtrls;type
      TForm1 = class(TForm)
        ADOTable1: TADOTable;
        DataSource1: TDataSource;
        Image1: TImage;
        Panel1: TPanel;
        DBGrid1: TDBGrid;
        procedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
          Field: TField; State: TGridDrawState);
        procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.DBGrid1DrawDataCell(Sender: TObject;   const Rect: TRect;
      Field: TField; State: TGridDrawState);
    var
      Text: string;
      Rct: TRect;
    begin
      Text := Field.AsString;
      Rct:= Rect;  BitBlt(DBGrid1.Canvas.handle,
             Rct.left,
             Rct.top,
             Rct.right - Rct.left,
             Rct.bottom - Rct.top,
             Image1.Canvas.Handle,
             Rct.left + DBGrid1.Left + Panel1.Left,
             Rct.Top + DBGrid1.Top + Panel1.Top,
             SRCCOPY);  SetBkModE(DBGrid1.Canvas.Handle, TRANSPARENT);
      DBGrid1.Canvas.Font.Style := [fsBold];
      DrawtextEx(DBGrid1.Canvas.Handle,
                 PChar(Text),
                 Length(Text),
                 Rct,
                 DT_WORDBREAK,
                 nil);end;procedure TForm1.Panel1MouseDown(Sender: TObject;   Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      ReleaseCapture;
      Panel1.Perform(WM_SYSCOMMAND, $F012, SC_MOVE);
      Application.ProcessMessages ;  BitBlt(GetDc(Panel1.Handle),
             0,
             0,
             Panel1.Width,
             Panel1.Height,
             Image1.Canvas.Handle  ,
             Panel1.Left, Panel1.Top,
             SRCAND);  DBGrid1.refresh;
    end;
    end.
     
      

  7.   

    这个是创建透明窗体的方法:procedure TForm1.FormCreate(Sender: TObject); 
    var 
      FullRgn, ClientRgn, ButtonRgn: THandle; 
      Margin, X, Y: Integer; 
    begin 
      Margin := (Width - ClientWidth) div 2; 
      FullRgn := CreateRectRgn(0, 0, Width, Height); 
      X := Margin; 
      Y := Height - ClientHeight - Margin; 
      ClientRgn := CreateRectRgn(X, Y, X + ClientWidth, Y + ClientHeight); 
      CombineRgn(FullRgn, FullRgn, ClientRgn, RGN_DIFF); 
      X := X + Button1.Left; 
      Y := Y + Button1.Top; 
      ButtonRgn := CreateRectRgn(X, Y, X + Button1.Width, Y + Button1.Height); 
      CombineRgn(FullRgn, FullRgn, ButtonRgn, RGN_OR); 
      SetWindowRgn(Handle, FullRgn, True); 
    end;