问题描述:
  当我重载了被调用窗体的CreateParams 过程时,然后用Showmodal 来显体窗体后。此时我一用鼠标指向我被调窗体上的ToolButton1时,然后一移动鼠标从一个toolbutton移向,或是鼠标箭头停在toolbutton区时,这时被调窗体就会自动跑到调用窗体的后面去了,鼠标在toolbutton区以外不会,而在toolbutton上又没有写什么代码。两个窗体都是普通非模式的窗体(fsNormal)。困扰多日,望多位帮帮。
http://topic.csdn.net/u/20101213/09/b0c60413-cfaf-45ff-b8d7-1bd69d319fc5.html问题原因:
  当你重载了CreateParams 事年,如查把toolbutton 的Shohint =true 时,只要你的鼠标指到这此toolbutton ,当弹出hint 信息时,被调的窗体就自动跑调用窗体后面去了。
  当我一定要现显hint信息时又不想他自动跑调用窗体后面去如何处理?大家可以帮忙出出注意。谢谢!

解决方案 »

  1.   

    这是因为Hint窗口的Parent是Application,他显示的时候你重载的窗口parent不是application,所有跑到后面去了
      

  2.   

    修改方法
    你先重载类
      THintWindowEx=class(THintWindow)
        procedure CreateParams(var Params: TCreateParams); override;
      end;
    procedure THintWindowEx.CreateParams(var Params: TCreateParams);
    begin
      inherited;
      Params.WndParent:=GetDesktopWindow;
    end;
    在显示被调用窗体的前
      Application.ShowHint:=False;
      HintWindowClass:=THintWindowEx;
      Application.ShowHint:=True;
      Form2.ShowModal;或现在工程  Application.Initialize;前