256 colour form wallpaper

We've all seen ways to put wallpaper on a form, such as:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Bkgnd := TBitmap.Create;
  Bkgnd.LoadFromFile('c:\texture.bmp');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Bkgnd.Free;
end;

procedure TForm1.FormPaint(Sender: TObject);
var X,Y,W,H:LongInt;
begin
  W := Bkgnd.Width;
  H := Bkgnd.Height;
  Y := 0;
  while Y < Height do
    begin
      X := 0;
      while X < Width do
        begin
          Canvas.Draw(X,Y,Bkgnd);
          inc(X,W);
       end;
      inc(Y,H);
    end;
end;

My question is, how can I get this to handle the palette
correctly for 256 color bitmaps?

I've experimented with
  SelectPalette(Canvas.Handle,Bkgnd.Palette,False);
  RealizePalette(Canvas.Handle);
but no joy.

I've also experimented with loading the bitmap from a
resource rather than a file, but no difference.

Is there an easy way to make this happen?  Ideally I'd be
able to repeat this code for several forms and have them
all share the palette, with the colours optimised
for active/foreground form.  I understand that Windows GDI
has facilities to do this; MSJ recently ran a big article
with a ream of code, but I'd like to know if the VCL
makes it easy or whether we need lots of extra code to
achieve this.

__________________________________________________________________
Grant Walker        Hobart, Tasmania         Ph: +613 62313083
Design Engineer     Australia                Fx: +613 62313086