void __fastcall TForm1::StatusBar1DrawPanel(TStatusBar *StatusBar,
      TStatusPanel *Panel, const TRect &Rect)
{
  if (Panel->Index==1)
  {
     TCanvas *pCanvas=StatusBar1->Canvas;
     ImageList1->Draw(pCanvas,Rect.Left,Rect.Top,Panel->Index,true);
  }
}

解决方案 »

  1.   

    要使一个控件可以作为控件容器,其实只要使ControlStyle属性(集合类型)包含csAcceptsControls元素就可以了ControlStyle:= ControlStyle + [csAcceptsControls];例如Delphi 5原来的状态栏控件不支持包含其他控件,改成下面的就可以了。需要扩展一下statusbar,加一个属性就行.分归我了.//----------------------------------------------------------------------//
    //扩展StatusBar
    //加入特性:允许在状态条上加入任意控件
      type
      TMStatusBar=Class(TStatusBar)
      private
      protected
      public
        constructor Create(AOwner: TComponent); override;
      published
      end;//TMStatusBar 事件扩展
      constructor TMStatusBar.Create(AOwner: TComponent);
      begin
            inherited Create(AOwner);
            ControlStyle:= ControlStyle + [csAcceptsControls];
      end;
      

  2.   

    //比较简单的方法一
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Image1.Parent := StatusBar1;
      Image1.Left := 1;
      Image1.Top := 1;
    end;
      

  3.   

    //比较简单的方法一
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Image1.Parent := StatusBar1;
      Image1.Left := 1;
      Image1.Top := 1;
    end;
      

  4.   

    将StatusBar的每个TStautsPanel的Style设为psOwnerDraw,
    然后在StatusBar的OnDrawPanel事件中画。
    procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
      Panel: TStatusPanel; const Rect: TRect);
    begin
      with StatusBar1 do
      begin
        Canvas.Draw(Rect.Left, Rect.Top, Image1.Picture.Graphic);
        Canvas.TextOut(Rect.Left + 20, Rect.Top, Panel.Text);
      end;
    end;
      

  5.   

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Image1.Parent := StatusBar1;
      Image1.Left := 1;
      Image1.Top := 1;
    end;