如何在edit上做个背景图片

解决方案 »

  1.   

    http://delphi.bibts.com/TEdit-t927693.htm
      

  2.   

    声明:
    procedure HandleCTLColorEdit(var Msg: TWMCTLCOLOREDIT);message
    WM_CTLCOLOREDIT;
    代码部分:
    procedure TForm1.HandleCTLColorEdit(var Msg: TWMCTLCOLOREDIT);
    begin
    if Msg.ChildWnd = Edit1.Handle then
    begin
    SetBkMode(Msg.ChildDC, TRANSPARENT);
    Msg.Result := Edit1.Brush.Handle;
    end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
    edit1.Brush.Bitmap:=image1.Picture.Bitmap;//这里背景图片取image1里的图片
    edit1.Repaint;
    end;
    好东东,不过image1里的图片必须为BMP格式的。
      

  3.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Button1: TButton;
        Label1: TLabel;
        Panel1: TPanel;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
        procedure FormShow(Sender: TObject);
        procedure Edit1Enter(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
         procedure NewWindowProc(Var Message:TMessage); 
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    var
      OldWndProc:TWndMethod;
      i:integer;procedure TForm1.Button1Click(Sender: TObject);
    var c:TCanvas;
     bitmap:TBitmap;begin
     bitmap:=TBitmap.Create;
     bitmap.LoadFromFile('d:\dzrsgl\zt.bmp');
     c:=TControlCanvas.Create; TControlCanvas(c).Control:=Edit1; c.Brush.Style:=bsClear;
     c.StretchDraw(c.ClipRect,bitmap);
     c.Free;end;procedure TForm1.NewWindowProc(var Message:TMessage);
    var
     c:TCanvas;
     bitmap:TBitmap;begin
       //执行系统默认的操作
       OldWndProc(Message);
       //如果接受重绘消息
       if (Message.Msg=WM_PAINT) then
       begin
        Inc(i);label1.Caption:=inttostr(i);
        bitmap:=TBitmap.Create;
        bitmap.LoadFromFile('d:\dzrsgl\zt.bmp');
        c:=TControlCanvas.Create;
        TControlCanvas(c).Control:=self.Edit1;
        c.Brush.Style:=bsClear;
        c.StretchDraw(c.ClipRect,bitmap);
        c.TextOut(c.ClipRect.Left+1,  c.ClipRect.Top+1, Edit1.Text);
        c.Free;
        Freeandnil(bitmap);
       end;
    end;
    procedure TForm1.FormShow(Sender: TObject);
    begin
      OldWndProc:=self.Edit1.WindowProc;
      self.Edit1. WindowProc:=NewWindowProc;
    end;procedure TForm1.Edit1Enter(Sender: TObject);
    begin
       self.Edit1.Repaint;
    end;end.