主窗口调用各子窗口时,如何令“子窗口的位置固定出现在主窗口的菜单下面区域”?
我困扰的是,主窗口很好看,可一调用子窗口时,后者的位置大小不好控制,有啥办法令子窗口固定在主菜单下面的正文区?
我的调用程序是这样的:procedure TMain.SB1LoadClick(Sender: TObject);
begin
  Application.CreateForm(TF_patient1,f_patient1);
  f_patient1.ShowModal;
  f_patient1.Free;
end;请问各高人,这样做有问题吗?非常期待您的回答,谢谢!

解决方案 »

  1.   

    是mdi开发吗,是的话全屏就行啦,不是的话,指定子窗体的parent是主窗口菜单下面的panel,然后设置充满属性。再或者设置子窗口大小并显示在屏幕中间
      

  2.   

    设置窗体的Left和Top就可以了,如果要跟你的菜单关联,要还找出菜单的位置再换算出Left,Top
      f_patient1.Left := 100;
      f_patient1.Top := 10;
      f_patient1.ShowModal;
      f_patient1.Free;
      

  3.   

    觉得1楼的可行性大,但我如下设置,子窗口运行后呈死机状态,没有任何反应。
    主程序:
    procedure TMain.SB1LoadClick(Sender: TObject);
    begin
       Application.CreateForm(TF_patient1,f_patient1);
       f_patient1.Parent:=Panel3; //Panel3 是新加的,刚好覆盖下面内容区域。
       f_patient1.ShowModal;
       f_patient1.Free;
    end;
    //Panel3设置如下:
    Align:=alClient;
    //子程序patient1表单属性如下:
    Align:=alBottom界面的效果达到了,可是子程序、主程序 像死了,都没有反应,靠我在DELPHI 中断它。何解?甚盼。十分感谢上面两位的回复。
      

  4.   

    f_patient1.Show; 是一闪而过,窗口是打开过,但没有停留。谢谢 chinahth 朋友,期待进一步的回复。
      

  5.   

    我在主程序中用了框架,情况有所好转:在子程序运行时,可以在GRID中用上下键,但GRID外的TOOLBAR还是
    没能获得焦点。
    procedure TMain.SB1LoadClick(Sender: TObject);
    begin
      Application.CreateForm(TF_patient1,f_patient1);
      Windows.SetParent(f_patient1.Handle,FrameContent1.Handle);
      f_patient1.BorderStyle := bsNone;
      f_patient1.WindowState := wsMaximized;
      f_patient1.ShowModal;
      f_patient1.Free;
    end;
    前辈、大侠,HELP me! 救救我啊!
      

  6.   

    使用MDI多文档窗口,请问怎么用呢?我很菜,但是很用功。  Application.CreateForm(TF_patient1,f_patient1);
      Windows.SetParent(f_patient1.Handle,FrameContent1.Handle);
      f_patient1.ShowModal;
      f_patient1.Free;主程序用上述程序调用f_patient1,在f_patient1中,有两个frame,
    分别装grid 和 toolbar
    现在只有装grid的frame 获得焦点,另一个没有,有什么办法使f_patient1窗体都获得焦点呢?
    谢谢了!
      

  7.   

    用MDI就用多文档窗口,否则别用MDI了,用普通的再SetParent另外,MDI是不用Show的,Create后即直接显示了
    要在子窗体(f_patient1)内部的Create事件设置Top,Left,width,height值
    若在Application.CreateForm(TF_patient1,f_patient1)后再设置,相当于窗体已经初始化了,又重新调整了位置,就肯定会闪了
      

  8.   

    弱弱的问一句:不用MDI。用普通的再SetParent,具体该怎么写呢?谢谢了!