在手机应用开发的过程中,有时候,我们要给用户一些简单的提示,这些提示不需要用户提示,在一定的时间之后,它就可以自动消失了。实际上,通过 FMX 而不是系统的接口就可以很简单的实现这一效果。下面简单说一下步骤,供大家参考:
- 在窗体上放一个 TPopup 和 TTimer,设置 TTimer 的 Interval 为 2500 毫秒,并且 Enabled 默认为 false。
- 在 TPopup 上放置一个 TRectangle ,然后在 TRectangle 上放置一个 TLabel,然后设置 TRectangle 和 TLabel 的对齐方式为 Client,然后你再根据需要调整下 TRectangle的边线及填充的颜色、透明度等信息,调整 TLabel 的文本对齐方式。
- 接下来,实现一个函数来计算要消息提示的内容的区域大小,并调用弹出的提示消息的布局位置,如果不设置位置,则会在你触控的位置附近显示,下面是一段参考,其中 lblMessage 是上面的 TLabel,popMessage 是上面的 TPopup,tmMessage 是上面的 TTimer。
procedure TfrmMain.PopHint(const AMsg: String); var V: Single; R: TRectF; begin R := ClientRect; R.Inflate(-10, -10); lblMessage.Canvas.MeasureText(R, AMsg, true, [], TTextAlign.Leading, TTextAlign.Leading); popMessage.Width := R.Width + 20; popMessage.Height := R.Height + 20; lblMessage.Text := AMsg; Application.ProcessMessages; popMessage.IsOpen := true; tmMessage.Enabled := false; tmMessage.Enabled := true; end; procedure TfrmMain.tmMessageTimer(Sender: TObject); begin popMessages.IsOpen := false; tmMessage.Enabled := false; end;
- 好了,现在就可以直接调用 PopHint 来显示提示了。