有一个mdi应用的窗口,我想在主窗口中加一个背景图,主窗口有菜单栏、工具栏、状态栏。但我发现把图片stretch后,最大化显示时总要往下错一点,留下一个灰色条;把工具条的ontop属性去掉后问题虽解决,但出现图片藏到工具栏下面的缺点,好像窗口重画能解决这个问题,高手帮忙,给咱指点指点!多谢!

解决方案 »

  1.   

    刚看了一个朋友的话XP界面,没用菜单栏。用speedbutton和Popupmenu做了个假的菜单。
    不知道你的图是什么。你可以关注他的帖子!
      

  2.   

    我使用jpg图片的,你能告诉我贴子的位置吗?
      

  3.   

    你的问题没有碰见过,应该是你的控件的Align属性没有设置好。
    放置在上面的控件一般用alTop, 左边的用alLeft剩下的工作区一般用alClient。_________________________________________________________________
                alTop                                               | 
    ________________________________________________________________|
                                                                    |
                alTop                                               |
    ________________________________________________________________|
                 |                                                  |
                 |                                                  |
                 |                                                  |
        alLeft   |              alClient                            |
                 |                                                  |
                 |        可以先放一个Panel(alClient),然后          |
                 |        再放一个Image(alClient)                    | 
                 |                                                  |
                 |                                                  |
                 |                                                  |
                 |                                                  |
    -----------------------------------------------------------------
      

  4.   

    好像和你这个问题没有关系。  :)
    地址在这里。
    http://expert.csdn.net/Expert/topic/1819/1819796.xml?temp=.4915583
      

  5.   

    我再客户区加了一个PANEL,设为ALCLIENT,再他上面放IMAGE,出现灰色条的问题到解决了,但是挡着了子窗口,子窗口无法显示呀?该如何做呀?
    我想还是应该来重画的,能不能告诉我重画的用法呀?
      

  6.   

    再向大家描述一下我的做法:窗口为MDIFORM,MAXIMIZED
    ————————————————————————————————
    菜单
    ——————————————————————————————————
    工具条,采用TOOLBAR,ONTOP
    --------------------------------------------------------------
    放置一个IMAGE,图片为JPG格式,STRETCH.IMAGE控件ALCLIENT
    ------------------------------------------------------
    STATUEBAR,ALBOTTOM
    --------------------------------------
    为什么运行后图片会向下错一些呢?留下一个灰色的背景条,该如何解决?
      

  7.   

    要不然, 你把图片抓给我。 我帮你分析分析。
    不知道你这种情况是在什么时候会有, 是窗体Show出来就这样,还是说有了一些窗体的事件。比如:移动,最大化,最小化,才有这种情况发生。
      

  8.   

    哦!给你我的Email:   [email protected]
      

  9.   

    刚运行时就这样的,
    TO:Feng93017
    邮件已发出,多谢帮忙!
      

  10.   

    我做了一个Demo,已经用附件发给了你。去看看你的邮箱。  :)
      

  11.   

    还有一个小Bug,就是窗体在最大化和还原的时候,图片刷新有点问题。
    你把主窗体的Align属性设置为alClient,可以解决。
      

  12.   

    问题解决了。
    ==============================================================================
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, jpeg, ExtCtrls, ComCtrls, ToolWin, Menus, UntWaxButtons;type
      TForm1 = class(TForm)
        MainMenu1: TMainMenu;
        FIle1: TMenuItem;
        Exit1: TMenuItem;
        StatusBar1: TStatusBar;
        ToolBar1: TToolBar;
        procedure Exit1Click(Sender: TObject);
        procedure FIle1Click(Sender: TObject);
        procedure FormPaint(Sender: TObject);
      private
        { Private declarations }
        procedure LoadPicture(AForm: TForm);
        procedure WMGetMinMaxInfo(var Msg: TWMGetMinMaxInfo); Message WM_GetMinMaxInfo;
      public  end;var
      Form1: TForm1;implementation
    uses Unit2;{$R *.dfm}
    procedure TForm1.Exit1Click(Sender: TObject);
    begin
      Close;
    end;procedure TForm1.FIle1Click(Sender: TObject);
    var
      ChildForm: TForm2;
    begin
      ChildForm := TForm2.Create(Self);
      ChildForm.Show;
    end;procedure TForm1.FormPaint(Sender: TObject);
    begin
      LoadPicture(Self);
    end;procedure TForm1.LoadPicture(AForm: TForm);
    var
      BitMap: TJPEGImage;
    begin
      BitMap := TJPEGImage.Create;
      Try
        BitMap.LoadFromFile(ExtractFilePath(Application.ExeName) + '\样品.jpg');
      Except
        Application.MessageBox('Picture file not found!', 'Information' MB_OK);
        exit;
      end;
      AForm.Canvas.StretchDraw(Self.ClientRect, BitMap);
      BitMap.Free;
    end;
    procedure TForm1.WMGetMinMaxInfo(var Msg: TWMGetMinMaxInfo);
    begin
      LockWindowUpdate(Self.Handle);
      LockWindowUpdate(0);
    end;end.
      

  13.   

    多谢edge了!
    http://expert.csdn.net/Expert/topic/1847/1847763.xml?temp=.4278376
    还有20分,你去接了吧,多谢了!