在做MDI程序时,如果在主窗口上添加一个Panel,并把它的Align设置成Client,当打开子窗口时子窗口会被Panel给全部遮盖,如何使子窗口不被Panel面板遮盖,请问哪位高手知道如何解决这个问题??

解决方案 »

  1.   

    她想在主窗口里面干嘛?
    画图?
    写字?
    procedure TMainForm.FormPaint(Sender: TObject);
    var
      TempCanvas: TCanvas;
    begin
      TempCanvas := TCanvas.Create;
      try
        TempCanvas.Handle := GetDC(ClientHandle);
        with TempCanvas do
        begin
          Rectangle(10, 10, 50, 50);
          TextOut(200, 200, 'Lilor');
        end;
      finally
        ReleaseDC(ClientHandle, TempCanvas.Handle);
        TempCanvas.free;
      end;
    end;
      

  2.   

    Panel.SendtoBack;或者
    MdiForm.BringtoFront;————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  3.   

    在主窗口上添加一个Panel,并把它的Align设置成Client有必要吗??????有的问题其实根本就不是问题,因为它不会发生也不应该发生。
      

  4.   

    同意  lxpbuaa(桂枝香在故国晚秋) ,
     
    to: lxpbuaa(桂枝香在故国晚秋)    ————————————————————————————————————
       宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
       ————————————————————————————————————
    妙,极妙!
      

  5.   

    不要设置成Client,建议none,然后手动设置,你看到的结果就是Client的功能~~~~~~~~~~
      

  6.   

    对不应该出现这种情况,如果想实现这样的功能,把Panel放在一个子窗体上,把子窗体的边一去和panel一样的效果,去子窗体边的代码,网上有很大,可上参考一下
      

  7.   

    关注一下。窗体生成时需要显示窗体的容器。能不能不用FORM做容器?用Panel做容器?
    我猜想的!?高手指点~~~
      

  8.   

    lxpbuaa(桂枝香在故国晚秋) 
    呵,好久不见
      

  9.   

    function TfrmJMMain.FreeUIForm: Boolean;
    begin
      if ( PfrmUIForm <> nil )
         and Assigned(PfrmUIForm^) then
      begin
        PfrmUIForm^.Close;
        if Assigned(PfrmUIForm^) then
        begin
          Result := False;
          Exit;
        end;
      end;
      Result := True;
      PfrmUIForm := nil;
    end;procedure TfrmJMMain.UIFormDock;
    Var
      DockPos : TRect;
    begin
      {注:停靠的窗体要比pnlUIfrm宽加8高加26}
      if ( PfrmUIForm <> nil )
         and Assigned(PfrmUIForm^) then
      begin
        DockPos.Top := 0;
        DockPos.Left := 0;
        DockPos.Right := pnlUIfrm.Width;  //pnlUIfrm为Panel名称
        DockPos.Bottom := pnlUIfrm.Height;
        PfrmUIForm^.Dock(pnlUIfrm , DockPos);
        PfrmUIForm^.Show;
      end;
    end;显示窗体时这样用
      if Not Assigned(frmJMBasedProList) then
      begin
        FreeUIForm;
        frmJMBasedProList := TfrmJMBasedProList.Create(application);
        PfrmUIForm := @frmJMBasedProList;
        UIFormDock;
      end;
      

  10.   

    以前跟伴水学地unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Menus, ExtCtrls;type
      TMainForm = class(TForm)
        mm1: TMainMenu;
        ileF1: TMenuItem;
        ileN1: TMenuItem;
        pnl1: TPanel;
        procedure ileN1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      MainForm: TMainForm;implementationuses Unit2;{$R *.dfm}procedure TMainForm.ileN1Click(Sender: TObject);
    begin
      Application.CreateForm(TChildForm, ChildForm);
    end;procedure TMainForm.FormCreate(Sender: TObject);
    begin
      Windows.SetParent(pnl1.Handle, ClientHandle);  //加上这句
    end;end.
      

  11.   

    不要用MDI窗口模式。
    要多窗口其实也可以放在Panel里啊:-)
      

  12.   

    我记得好象把Panel的Align属性不设为alClient就行,设为altop或别的吧
      

  13.   

    不过用鼠标点击panel时panel又会跑到前面来,点击子窗口时,panel又跑后面去了