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

这是iPhone中的样子:



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

最佳答案

创建您的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完全相同。

从那里开始,这只是在TAniIndicator上使用TFloatAnimation的一种情况,当您想更改图像(更改为刻度)或标签文本以仅更改为想要显示的任何消息时。理想情况下,您只需创建一个接受字符串或整数作为变量的过程,然后修改文本和指示符/图像以使其匹配。例如;

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;


然后,您可以在主窗体中创建一个面板,然后将上述窗体(包含TAniIndicator, label, and rectangle)添加为子组件。然后,使用有效的模式变量调用创建的过程,该过程将按照代码中的指示运行。添加更多模式很容易,我对自己的一个应用程序也做了类似的操作(尽管它与TRectangle有关,而不是创建一个指标)。

关于delphi - 如何制作Firemonkey HUD窗口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9038253/

10-09 16:04