3

我想用 firemonkey 在 Delphi中复制https://github.com/jdg/MBProgressHUD的 HUD 功能。

这是 iPhone 中的样子:

平视显示器

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

4

1 回答 1

4

创建您的 Firemonkey HD 表单,将其设置Fill.KindbkNone,然后设置Fill.ColorNull。此外,将其Transparency属性设置为 True,并将其设置BorderStylebsNone.

创建一个 TRectangle(或任何形状),并将Stroke.Kind属性设置为bkNone. 设置Fill.ColorGray,设置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,然后将上述表单(包含TAniIndicator, label, and rectangle)添加为子组件。然后,您使用有效的模式变量调用您创建的过程,它将按照您在代码中的指示运行。添加更多模式很容易,我已经用我自己的一个应用程序做了类似的事情(尽管它与指标相关TRectangle而不是创建指标)。

于 2012-05-09T18:38:31.860 回答