用过vb的可能都知道,vb窗体显示函数
form.show modal,parent
当modal=1时就是一般的模态显示的窗口,当modal=0时指定parent后form就是非模态显示,父为parent,但form不会显示在parent的client区域内,而且parent不会失去焦点。可是在delphi中form.show后form就出现在了parent的client区域内,现在在显示form时既要指定form的parent又不要他显示在parent的client区域内,同时parent不能失去焦点,应改如何操作?说的有点乱,希望能看明白。

解决方案 »

  1.   

    不是mdiform,2个窗体都是normal
      

  2.   

    的二个form的formstryle不能是fsMDIForm。
      

  3.   

    你要指定form的paren干什么用,TCustomForm.parent就是用来把子窗口嵌入到父窗口中的,你要让他不实现嵌入功能可不能实现。
      

  4.   

    就是想写一个自己用的toolbar,具有dock功能并且还能悬空,当悬空的时候就是我说的这种情况了,或者这种toolbar不因该从tform派生?那基类应该是什么?
      

  5.   

    试试TFrame,好像做dock不需要指定paren的吧?
      

  6.   

    //用过vb的可能都知道,vb窗体显示函数
    form.show modal,parent
    当modal=1时就是一般的模态显示的窗口,当modal=0时指定parent后form就是非模态显示,父为parent,但form不会显示在parent的client区域内,而且parent不会失去焦点。结论不正确,注意owner window和parent window是有区别的
      

  7.   

    直接使用Api函数ShowWindow(HWND hWnd, int nCmdShow);
    nCmdShow可以为:
      { ShowWindow() Commands }
      {$EXTERNALSYM SW_HIDE}
      SW_HIDE = 0;
      {$EXTERNALSYM SW_SHOWNORMAL}
      SW_SHOWNORMAL = 1;
      {$EXTERNALSYM SW_NORMAL}
      SW_NORMAL = 1;
      {$EXTERNALSYM SW_SHOWMINIMIZED}
      SW_SHOWMINIMIZED = 2;
      {$EXTERNALSYM SW_SHOWMAXIMIZED}
      SW_SHOWMAXIMIZED = 3;
      {$EXTERNALSYM SW_MAXIMIZE}
      SW_MAXIMIZE = 3;
      {$EXTERNALSYM SW_SHOWNOACTIVATE}
      SW_SHOWNOACTIVATE = 4;
      {$EXTERNALSYM SW_SHOW}
      SW_SHOW = 5;
      {$EXTERNALSYM SW_MINIMIZE}
      SW_MINIMIZE = 6;
      {$EXTERNALSYM SW_SHOWMINNOACTIVE}
      SW_SHOWMINNOACTIVE = 7;
      {$EXTERNALSYM SW_SHOWNA}
      SW_SHOWNA = 8;
      {$EXTERNALSYM SW_RESTORE}
      SW_RESTORE = 9;
      {$EXTERNALSYM SW_SHOWDEFAULT}
      SW_SHOWDEFAULT = 10;
      {$EXTERNALSYM SW_MAX}
      SW_MAX = 10;慢慢调试了,有你要的
      

  8.   

    楼上的方法我试过,但有个奇怪的问题,以showwindow的方法显示无焦点的窗体或重写窗体的createparams或用setwindowlong也是这样,凡是具有handle的控件均无法显示,