如何使表单在​​错误输入时闪烁?

时间:2010-12-18 04:25:15

标签: delphi

也许是一声哔哔声,背景闪烁红光?任何代码片段?感谢

7 个答案:

答案 0 :(得分:5)

制作表单Blink是一个非常糟糕的GUI设计,您可以尝试以下选项之一:

  • 使用对话框消息,例如

_

Application.MessageBox('Your message of error', 'Errror', MB_ABORTRETRYIGNORE + MB_ICONSTOP);
  • 使用代表错误状态的图像(图标)。
  • 使用TStatusBar并显示指示错误消息的消息。
  • 在表单中使用TLabel并使用特殊字体颜色(如clred)。

最后,您选择的选项取决于您的应用程序类型和错误类型。

检查此问题以获取更多建议Error Message Text - Best Practices

答案 1 :(得分:1)

我个人的偏好是执行以下操作:

通过改变控件的背景颜色或使边框变粗或甚至使字段标题变为粗体来突出显示(并聚焦)错误控件。或任何组合。正如Marjan Venema所说,要注意那些色盲的人。

最后,每个表单的区域都可以显示验证错误 - 例如将列表框或字符串网格或类似内容对齐到底部或顶部,并根据错误数量切换可见性> 0.您甚至可以允许用户单击网格/列表中的错误,将焦点设置在有问题的字段上。

我的一个应用程序实际上将这些验证错误存储在一个表中,并允许用户查询列表以便稍后处理错误。

弹出对话框,闪烁应该非常谨慎地使用。

希望这有帮助。

答案 2 :(得分:1)

只需在运行时创建第二个空表单,其大小和位置相同,并在短时间内将其显示为叠加层。您可以使用alphablending(AlphaBlend和AlphaBlendValue属性,请参阅this article),以便下面的表单仍然可见。

(这是一种在显示模态对话框时用作附加视觉提示的技术 - 当然没有闪烁)

答案 3 :(得分:1)

我目前正在使用Jedi Lib的JvValidators。你可以找到更多信息 Jedi's Project Portal并可以在Sourceforge Jedi's page

下载

看看我用它做了什么:Gedean's Error Manager Framework demo

最好的问候。

答案 4 :(得分:0)

即使我不同意'闪烁'窗口/消息,您也有一个小组件示例http://www.torry.net/vcl/labels/blink/blinklbl.zip

您可以根据需要调整代码。

答案 5 :(得分:0)

可能的解决方案:

请参阅:

就Delphis而言,它们在Windows.pas单位中定义。

将正确的句柄设置为FLASHWINFOHWND结构的HWND字段。任何带手柄的VCL控件都会执行etvoilà

通过调整dwFlags和uCount字段,您可以获得所期望的行为。

在你的情况下,闪烁/闪烁整个表格对我来说不是一个好主意。避免过于干扰和/或烦人:为什么不针对错误输入发生的控件或至少是状态栏?


旁注:

以下是我有时使用的片段通过闪烁提醒用户

procedure TForm1.Flash;
var
  FlashInfo: FLASHWINFO;
begin
  if (GetForegroundWindow<>Handle) then
  begin
    FillChar(FlashInfo, SizeOf(FLASHWINFO), 0);
    //
    FlashInfo.cbSize := SizeOf(FLASHWINFO);
    FlashInfo.dwFlags := FLASHW_ALL or FLASHW_TIMERNOFG;
    FlashInfo.hwnd := Handle;
    //
    FlashWindowEx(FlashInfo);
  end;
end;

注意:

  • 当且仅当应用程序的主窗口不在前台时才有效(仅在需要时闪烁!)。
  • 我在模态错误通知之前调用该方法,仅在这种情况下调用。

答案 6 :(得分:0)

在Windows中执行此操作的“正确”方法是使用FlashWindow API,它允许您闪烁窗口边框,如果当前没有聚焦,则闪烁任务栏图标。