我想让一个 Form 不管任何时候总是置于最前,但是用了各种方法,总是有问题。
有时候 Form 还是会失踪,很郁闷,大家看看我的方法有问题吗?首先把 Form 的 FormStyle 设为 fsStayOnTop,然后写下面程序:procedure TtbMainForm.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do
  begin
    ExStyle   := ExStyle or WS_EX_TOPMOST or WS_EX_TOOLWINDOW or WS_EX_NOPARENTNOTIFY;
    WndParent := GetDesktopWindow;
  end;
end;procedure TtbMainForm.FormCreate(Sender: TObject);
begin
  SetWindowLong(Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
  SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
end;郁闷了很久都没找到原因的问题,或者有人能告诉我查问题的方法也行,不胜感激^_^

解决方案 »

  1.   

    你的意思是连form最小化也不可以是吗?
      

  2.   

    application.ondeactivate事件中写:SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
      

  3.   

    procedure TForm1.CheckBox1Click(Sender: TObject);
    begin
        if CheckBox1.Checked then SetWindowPos(Form1.Handle,HWND_TOPMOST,Form1.Left,Form1.Top,Form1.Width,Form1.Height,SWP_SHOWWINDOW )
        else  SetWindowPos(Form1.Handle,HWND_NOTOPMOST,Form1.Left,Form1.Top,Form1.Width,Form1.Height,SWP_SHOWWINDOW);
    end;
      

  4.   

    procedure TLoginFrm.CreateParams(var Params: TCreateParams);
    begin
      inherited;
      Params.WndParent:=FindWindow('Shell_TrayWnd', nil);
    end;
    包你成功!
      

  5.   

    有时候 Form 还是会失踪
    =============
    你到是说说什么情况下出现的啊?
      

  6.   

    有时候 Form 还是会失踪
    =============
    你到是说说什么情况下出现的啊?唉~~我要是知道在什么情况下 Form 会失踪就好了,没规律的
    所以头疼