AlphaControls 控件 菜单的附加功能

AlphaControls 控件 菜单的附加功能

     AlphaControls 控件 使用标准的TMainMenu TPopupMenu控件,队原有功能外,其菜单ITEM项,具有的附加功能:

    一、菜单项组的标题(附加功能)
    1、项目中的多行文本
    2、附加垂直信息栏
    3、菜单中字体的全局更改
    4、可定制的 alpha 混合效果
    5、附加到表单的系统菜单

    见下图

     上述功能,通过OnGetPopupItemData事件体现。 

  二、TsSkinManager.OnGetPopupItemData事件
    该事件发生在绘制弹出菜单之前,并允许为每个菜单项定义字体。更改字体大小时会自动计算项目的高度。
procedure TMainFrm.sSkinManager1GetPopupItemData(Item: TMenuItem;
  State: TOwnerDrawState; ItemData: TacMenuItemData);
    参数:
    Item 当前菜单项
    State 当前菜单项的状态
    ItemData 包含绘图所需数据的结构。此结构包含 Font 属性,计划添加更多属性。

    三、菜单项组的标题
    如果 Caption = "-",则在标准菜单中绘制分隔线。在 AlphaControls 中添加了将菜单项绘制为标题的其他可能性。标题应在开头和结尾都有“-”符号。

    四、项目中的多行文本
    菜单项目文本国,如果包含回车+换行的组合(#13#10),菜单项的文本将自动换行。

    五、附加垂直信息栏
    设置TsSkinManager.MenuSupport.UseExtraLine属性为True,启用在弹出菜单中显示附加垂直信息行。如果启用此属性,则将在所有弹出菜单上绘制此线。使用 OnGetMenuExtraLineData 事件,我们可以定义哪些菜单应该有一条垂直线。此外,我们可以在那里定义文本和字形。
    在绘制弹出菜单之前,调用TsSkinManager.OnGetMenuExtraLine事件。

procedure TMainFrm.sSkinManager1GetMenuExtraLineData(FirstItem: TMenuItem;
  var SkinSection, Caption: String; var Glyph: TBitmap;
  var LineVisible: Boolean);
var
  iGlyphSize: integer;

  function GetSectionTextColor: TColor; // Get text color for colorizing of glyph received from CharImageList
  var
    Ndx: integer;
  begin
    Ndx := sSkinManager1.GetSkinIndex(SkinSection);
    if Ndx >= 0 then
      Result := sSkinProvider1.SkinData.CommonSkinData.gd[Ndx].Props[0].FontColor.Color
    else
      Result := clBlack;
  end;

begin
  LineVisible := True;                  // External line is visible
  Caption := 'SKin MenuExt';            // External line Text  
  iGlyphSize := ScaleInt(22, sSkinProvider1.SkinData);  //External line 字符Size 
  Glyph := CharImageList16.CreateBitmap32Color(7, iGlyphSize, iGlyphSize, GetSectionTextColor, iGlyphSize);     //External line图形 
end;

    LineVisible 属性为 True,则垂直信息栏将显示在当前菜单中。
    FirstItem 参数指向此弹出菜单的第一个菜单项。关注此选项,您可以启用或禁用额外的行
    SkinSection皮肤部分,可以更改组件的外观
    Caption标题
    Glyph字形
    TsSkinManager.MenuSupport.ExtraLineFont指定将用于文本绘图的字体 。
    TsSkinManager.MenuSupport.ExtraLineWidth附加垂直信息栏宽度。

    五、定义菜单中(全局)字体
    我们可以定义将在应用程序的所有弹出菜单中使用的字体。
    使用TsSkinManager.MenuSupport.Font更改菜单中的字体。
    如果TsSkinManager.MenuSupport.CustomFont属性为 True,然后在应用程序的所有皮肤菜单中使用字体。

    六、可定制的alphablend效果(alpha混合)
    TsSkinManager.MenuSupport.AlphaBlend属性允许定义弹出菜单透明度。如果属性值为 0,则菜单完全透明。当值为 255(默认值)弹出菜单不透明。

    七、Form系统菜单附件
    TsSkinProvider组件具有 SysSubMenu 属性。我们可以在那里定义一个弹出菜单,该菜单将附加到表单的系统菜单中。

    八、替换系统阴影
    TsSkinManager.MenuSupport.SkinnedShadows属性用自定义蒙皮阴影替换系统阴影。

    菜单项通常会自动处理和蒙皮。如果在运行时添加了新菜单项,则应使用 HookPopupMenu 过程(添加后)对其进行初始化。例子:

sSkinManager1.SkinableMenus.HookPopupMenu(PopupMenu1, sSkinManager1.Active);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值