关于微软推荐的通知区域(Notification Area), 我正在寻找想法或者一个Delphi组件来实现通知区域Flyout。
第一个“自然”的想法是使用标准的Delphi窗体,但我遇到了两个问题:
- 无法使用标准的“BorderStyle”属性获取窗体边框行为。尝试使用GlassFrame属性以及BorderStyle设置为bsNone来“模拟”边框,但在没有边框时没有GlassFrame(至少在Delphi 2007中是如此)。
- 我无法弄清楚如何使窗体在用户单击窗体之外的任何地方时关闭。昨天我尝试使用不同的消息,但没有一个像预期的那样工作。
感谢任何提示或组件使其成为可能 :)
最好的问候。
jachguate。
ps. 这里有一个相关问题:在Win7(Delphi)中将通知区域图标转换为程序图标。
更新[0] 我仍在寻找建议。@skamradt的回答看起来非常好,但在实践中不起作用。
更新[1] 最终,通过在调用SetForegroundWindog来强制Flyout“激活”之后使用WM_ACTIVATE消息,自动关闭行为正在工作。
begin
FlyoutForm.Show;
SetForegroundWindow(FlyoutForm.Handle);
end;
现在,我正在寻求建议,以达到边框行为和视觉风格,因为最接近的行为是通过样式WS_POPUP或WS_DLGFRAME实现的,而最接近的视觉目标是通过设置样式为WS_POPUP或WS_THICKFRAME来实现的。