...tile a non-MDIframe window with a backgrund bitmap?

Author: P. Below
Homepage: http://www.teamb.com

Category: Forms

type
  
TForm1 = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    
FWallpaper: TBitmap;
    procedure WMEraseBkGnd(var Msg: TWMEraseBkGnd); message WM_ERASEBKGND;
  end;

var
  
Form1: TForm1;

implementation

{$R *.DFM}
procedure TForm1.FormDestroy(Sender: TObject);
begin
  
FWallpaper.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  
// Load the bitmap
  // Bild laden
  
if OpenDialog1.Execute then
  begin
    if not 
Assigned(FWallpaper) then
      
FWallpaper := TBitmap.Create;
    FWallpaper.LoadFromFile(OpenDialog1.FileName);
    Invalidate;
  end;
end;

procedure TForm1.WMEraseBkGnd(var Msg: TWMEraseBkGnd);
var
  
row, col: Integer;
begin
  if not 
Assigned(FWallpaper) then
    inherited
  else
  begin
    
// Draw the bitmap
    // Das Bild zeichnen
    
for Row := 0 to ClientHeight div FWallpaper.Height do
      for 
Col := 0 to ClientWidth div FWallpaper.Width do
        
BitBlt(Msg.Dc,
          Col * FWallpaper.Width,
          Row * FWallpaper.Height,
          FWallpaper.Width,
          FWallpaper.Height,
          FWallpaper.Canvas.Handle,
          0,
          0,
          SRCCOPY);
    Msg.Result := 1;
  end{ else }
end;

end.

 

printed from
www.swissdelphicenter.ch
developers knowledge base