Delphi 在选项卡项上显示通知编号

Delphi 在选项卡项上显示通知编号,delphi,notifications,icons,firemonkey,delphi-xe7,Delphi,Notifications,Icons,Firemonkey,Delphi Xe7,我有一个面向选项卡的Firemonkey多平台应用程序。我有一些选项卡,可能有单独的通知。我知道移动应用程序的通知中心,但在我自己的应用程序内部,我不知道如何在选项卡项上执行类似的指示 例如,我有一个带有4个选项卡的TTabControl。每个选项卡都有一个自定义图标。在图标旁边的每个选项卡上,我想显示一个通知指示器,类似于使用通知时在应用程序图标上显示的指示器 大概是这样的: 我如何在iOS和Android的标签上显示这样的指示器 我尝试过在表单上添加标签,但无法知道当表单针对不同平台调整大

我有一个面向选项卡的Firemonkey多平台应用程序。我有一些选项卡,可能有单独的通知。我知道移动应用程序的通知中心,但在我自己的应用程序内部,我不知道如何在选项卡项上执行类似的指示

例如,我有一个带有4个选项卡的
TTabControl
。每个选项卡都有一个自定义图标。在图标旁边的每个选项卡上,我想显示一个通知指示器,类似于使用通知时在应用程序图标上显示的指示器

大概是这样的:

我如何在iOS和Android的标签上显示这样的指示器

我尝试过在表单上添加标签,但无法知道当表单针对不同平台调整大小/重新缩放/重新排列时如何通过编程定位标签。如果
TTabItem
具有
Position
Size
属性,我可以一起定位这样的标签。但如果没有它,我如何定位与此选项卡相关的内容


PS-请原谅我可怕的图形:-)

我知道如何在标签项上放置标签。这有点草率,但它能起作用。首先,
TTabControl.TabPosition
不能是
PlatformDefault
。它必须是
顶部
底部
。其次,标签必须与
TTabControl
位于同一父控件中。然后,实现如下功能:

procedure TfrmMain.PositionNotifyLabel(ALabel: TLabel; ATabItem: TTabItem);
var
  TabLeft, TabTop: Single;
  X: Integer;
  T: TTabItem;
  TabControl: TTabControl;
begin
  TabControl:= ATabItem.TabControl;
  //Calculate left position of tab
  TabLeft:= 0;
  for X := 0 to TabControl.TabCount-1 do begin
    T:= TabControl.Tabs[X];
    if T = ATabItem then Break;
    TabLeft:= TabLeft + T.Width;
  end;
  case TabControl.TabPosition of
    TTabPosition.Top: begin
      TabTop:= 0;
    end;
    TTabPosition.Bottom: begin
      TabTop:= TabControl.Height - TabControl.TabHeight;
    end;
    else begin
      //Not Supported
      TabTop:= 0;
    end;
  end;
  //Calculate label width based on tab width
  ALabel.Width:= ATabItem.Width / 3;
  //Position label to calculated Left/Top positions
  ALabel.Position.X:= TabLeft + ATabItem.Width - ALabel.Width;
  ALabel.Position.Y:= TabTop;
  ALabel.BringToFront;
end;
在窗体显示和窗体调整大小时调用此函数,如下所示:

PositionNotifyLabel(lblCartNotify, tabCart);