Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 提示形式与焦点_Delphi_Windows 7_Focus_Delphi Xe - Fatal编程技术网

Delphi 提示形式与焦点

Delphi 提示形式与焦点,delphi,windows-7,focus,delphi-xe,Delphi,Windows 7,Focus,Delphi Xe,我正在显示一个自定义表单作为提示。我希望提示窗口不获得焦点 提示表单的Enabled属性设置为False,我还处理WM\u MOUSE\u ACTIVATE窗口消息并返回MA\u NOACTIVATE。然而,每次显示提示窗口时,我的主窗口的边框都会闪烁(带有透明边框的Windows 7) 如何避免这种闪烁?我假设您在处理应用程序时显示自己的提示表单。OnShowHint,例如: procedure TMainForm.ApplicationShowHint(var HintStr: string

我正在显示一个自定义表单作为提示。我希望提示窗口不获得焦点

提示表单的
Enabled
属性设置为
False
,我还处理
WM\u MOUSE\u ACTIVATE
窗口消息并返回
MA\u NOACTIVATE
。然而,每次显示提示窗口时,我的主窗口的边框都会闪烁(带有透明边框的Windows 7)


如何避免这种闪烁?

我假设您在处理
应用程序时显示自己的提示表单。OnShowHint
,例如:

procedure TMainForm.ApplicationShowHint(var HintStr: string;
  var CanShow: Boolean; var HintInfo: THintInfo);
var
  HintForm: THintForm;
begin
  CanShow := False;
  HintForm := THintForm.Create(nil);
  HintForm.HintLabel.Caption := HintStr;
  HintForm.Left := HintInfo.HintPos.X;
  HintForm.Top := HintInfo.HintPos.Y;
  ShowWindow(HintForm.Handle, SW_SHOWNOACTIVATE);
end;

最后一行在XP和W7上使用D7(以及作为默认设置的标准形式的
THintFrom
,例如Enabled=True)实现了这个技巧。

我假设您在处理
应用程序时显示自己的提示表单。OnShowHint
,例如:

procedure TMainForm.ApplicationShowHint(var HintStr: string;
  var CanShow: Boolean; var HintInfo: THintInfo);
var
  HintForm: THintForm;
begin
  CanShow := False;
  HintForm := THintForm.Create(nil);
  HintForm.HintLabel.Caption := HintStr;
  HintForm.Left := HintInfo.HintPos.X;
  HintForm.Top := HintInfo.HintPos.Y;
  ShowWindow(HintForm.Handle, SW_SHOWNOACTIVATE);
end;

最后一行在XP和W7上使用D7(以及作为默认设置的正常形式的
THintFrom
,例如Enabled=True)实现了这个技巧。

我建议您查看一下
THintWindow
(Controls.pas)。特别是在它的
THintWindow.CreateParams
ActivateHint
方法上。有什么提示确切地说什么是重要的吗?情况有点不同,我尝试了大部分的东西从<代码> TimTunDouth,但不能让它工作…我在我的评论中提到了我认为重要的(特别是)。我只能猜测而没有看到您的代码…我建议您查看一下
THintWindow
(Controls.pas)。特别是在它的
THintWindow.CreateParams
ActivateHint
方法上。有什么提示确切地说什么是重要的吗?情况有点不同,我尝试了大部分的东西从<代码> TimTunDouth,但不能让它工作…我在我的评论中提到了我认为重要的(特别是)。我只能猜测而没有看到你的代码…谢谢!似乎我试着同时做很多事情。我曾经在表单样式中添加了一个额外的
fsStayOnTop
,它似乎会导致闪烁。按照您的建议使用
ShowWindow
,效果很好+1并接受。谢谢!似乎我试着同时做很多事情。我曾经在表单样式中添加了一个额外的
fsStayOnTop
,它似乎会导致闪烁。按照您的建议使用
ShowWindow
,效果很好+1并接受。