如何制作FireMonkey HUD窗口

3
我希望能够在Delphi with firemonkey中复制https://github.com/jdg/MBProgressHUD的HUD功能。
这是iPhone上的样子:

HUD

主要问题是如何使表单半透明并完全去除边框。

2
请编辑您的问题,并发布一个屏幕截图或图像,而不仅仅使用外部链接来说明您正在尝试做什么。如果外部链接消失或由于某种原因不可用,则会使您的问题对未来的其他人毫无意义。谢谢 :) - Ken White
1
你不能使一个表单半透明,但是你可以让它完全透明,并在上面使用一个半透明(不透明度<1)的形状。 - Marcus Adams
1个回答

4
创建Firemonkey HD表单,将其Fill.Kind设置为bkNone,将其Fill.Color设置为Null。此外,将其Transparency属性设置为True,并将其BorderStyle设置为bsNone
创建一个TRectangle(或任何形状),将Stroke.Kind属性设置为bkNone。将其Fill.Color设置为Gray,将其Opacity设置为0.5。
创建一个TAniIndicatorTLabel,它们的父项都是该表单。它们的Opacity保持在1.0。如果需要,还可以创建一个TImage,并将其大小和位置与TAniIndicator完全相同。
从这里开始,只需要在需要更改图像(例如勾选)时使用TFloatAnimation来处理TAniIndicator,并将标签文本简单地更改为您想要显示的任何消息。理想情况下,您只需创建一个过程,接受字符串或整数作为变量,然后修改文本和指示器/图像以匹配该变量。例如;
Procedure TForm1.Process(Mode : Integer);
Begin
 if Mode = 1 then
 begin
  AniIndicator1.Enabled := True;
  AniIndicator1.Visible := True;
  Image1.Visible := False;
  Label1.TextAlign := TTextAlign.taCenter; // Must be called to reset alignment
  Label1.Text := 'Loading';
 End
 else if Mode = 2 then
 Begin
  AniIndicator1.Enabled := False;
  AniIndicator1.Visible := False;
  Label1.TextAlign := TTextAlign.taCenter; // Must be called to reset alignment
  Image1.Bitmap.LoadFromFile('Tick.png');
  Image1.Visible := True;
  Label1.Text := 'Complete!';
 end;
end;

您可以在主窗体中创建一个tpanel,然后将上述包含的窗体添加为子组件。然后使用有效的模式变量调用您创建的过程,它将按照代码中指定的方式运行。很容易添加更多模式,我已经在自己的应用程序中执行了类似的操作(尽管与创建指示器不同,而是与相关)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接