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