delphibackgroundeditbox

How to set background image for Edit (Delphi)


how can i have a image for Editbox background ?


Solution

  • This is very possible, indeed. In your form, define

    private
      { Private declarations }
      FBitmap: TBitmap;
      FBrush: HBRUSH;
    protected
      procedure WndProc(var Message: TMessage); override;      
    

    and do

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      FBitmap := TBitmap.Create;
      FBitmap.LoadFromFile('C:\Users\Andreas Rejbrand\Pictures\AS20Utv.bmp');
      FBrush := 0;
      FBrush := CreatePatternBrush(FBitmap.Handle);
    end;
    

    and

    procedure TForm1.WndProc(var Message: TMessage);
    begin
      inherited;
      case Message.Msg of
        WM_CTLCOLOREDIT, WM_CTLCOLORSTATIC:
          if (Message.LParam = Edit1.Handle) and (FBrush <> 0) then
          begin
            SetBkMode(Message.WParam, TRANSPARENT);
            Message.Result := FBrush;
          end;
      end;
    end;
    

    Of course you can wrap this into a component of your own, say TEditEx. If I get time over, I might do this. (And, notice that there is no need to buy an expensive (and maybe not that high-quality) component pack from a third-party company.)

    Custom edit background