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);
variGlyphSize: integer;function GetSectionTextColor: TColor; // Get text color for colorizing of glyph received from CharImageListvarNdx: integer;beginNdx := sSkinManager1.GetSkinIndex(SkinSection);if Ndx >= 0 thenResult := sSkinProvider1.SkinData.CommonSkinData.gd[Ndx].Props[0].FontColor.ColorelseResult := clBlack;end;beginLineVisible := True;                  // External line is visibleCaption := '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);

AlphaControls 控件 菜单的附加功能相关推荐

  1. AlphaControls 控件 TsFrameBar 创建下拉式多级导航菜单

    AlphaControls 控件 TsFrameBar 创建下拉式多级导航菜单 TsFrameBar控件是创建一个下拉菜单的工具块.     TsFrameBar控件本身,可以通过创建TITEMS,自 ...

  2. AlphaControls 控件 动画

    AlphaControls 控件 动画         AlphaControls 一组支持皮肤 (AlphaSkins) 的常见组件和一些独特组件,以及一些附加功能.所有皮肤元素都可以有自己的属性, ...

  3. AlphaControls 控件Delphi使用

    AlphaControls 控件Delphi使用 一.AlphaControls初始化(MainFrm加入AlphaControls) 1.制定ini文件 procedure WriteIni_Ski ...

  4. AlphaControls 控件 TsMagnifier 放大镜

    AlphaControls 控件 TsMagnifier 放大镜 AlphaControls 控件 TsMagnifier组件,是一个窗口放大镜,放大镜的位置默认在窗口的中心,通过鼠标可以移动放大镜的 ...

  5. android点击隐藏控件,Android编程实现点击EditText之外的控件隐藏软键盘功能

    本文实例讲述了Android编程实现点击EditText之外的控件隐藏软键盘功能.分享给大家供大家参考,具体如下: 工具类 ... public static void hideKeyboard(Co ...

  6. SAP UI5 应用开发教程之六十六 - 基于 OData V4 的 SAP UI5 表格控件如何实现删除功能试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  7. 露雨资源库三(第一个.net2.0软件)-为控件增加自动完成功能

    前面我写过"露雨资源库"的第一篇和第二篇,分别介绍了界面设计和设计思路. 链接如下: 露雨资源库(第一个.net2.0软件)一 http://luyu.cnblogs.com/ar ...

  8. ehlib的DBGridEh控件中使用过滤功能的方法

     关于在ehlib的DBGridEh控件中使用过滤功能的方法 在ehlib的DBGridEh控件中使用过滤功能很方便,但使用过程中有几个容易被忽略的地方,它曾经困绕了我很长时间,过滤功能就是用不起来. ...

  9. android缩放组件,Android控件实现图片缩放功能

    1 简介 先来一张效果图 TIM图片.gif 上图中灰色的一块是ImageView控件,ImageView中的图片进行左右上下移动,以及双指缩放. 对于android控件的缩放移动,点这里----an ...

最新文章

  1. OpenMP参考链接
  2. 谈“80后”程序员为什么找不到工作? [转]
  3. 中国企业海外人才发展白皮书
  4. vue element menu侧边导航栏 数据渲染
  5. 新房装修,家里WiFi怎么弄?
  6. 菜鸟学做——三层交换综合模拟实验【1】
  7. QGroundControl实现多机控制
  8. [转]《谁让你是飞鸟我是鱼》by(晨曦)
  9. Flutter之Widget构建过程详解
  10. 【iCore4 双核心板_uC/OS-II】例程八:消息邮箱
  11. Four-tuples 山东省赛F题
  12. java xstream json_详解XML,Object,Json转换与Xstream的使用
  13. Java集合分页公式
  14. 沙龙回顾 | 从开发平台到智能供应链,AI技术如何推动企业智能化升级?
  15. 拓嘉辰丰电商:一个营业执照支持开多少家店铺
  16. 汇编idiv带符合除法指令。。。。
  17. 2022夏暑假每日一题(八)
  18. 正在连接到192.168.1.118 不能打开到主机的连接, 在端口 1521: 连接失败
  19. JavaScript最简单的方法实现简易的计算器
  20. 代号海岸线如何用电脑玩 代号海岸线PC电脑版玩法教程

热门文章

  1. 怎样去除口臭?先要了解其形成原因
  2. 采用链接分配方式进行外存分配时,可采用的两种形式及其特点。假定磁盘块大小为4K,对于128G的硬盘,其文件分配表FAT需占用多少存储空间?
  3. 学无止境:了解主流的DBA认证考试
  4. 复旦计算机系本硕连读几年,总算晓得比较好的本硕连读的大学及专业
  5. 如何识别哭泣csdn_网络表情NLP(一)︱颜文字表情实体识别、属性检测、新颜发现
  6. [转] 用友NC二次开发问题汇总【转】
  7. 如何给女朋友买个趁心的笔记本?
  8. 【C++11】右值引用与移动构造、万能引用与完美转发
  9. ESP8266开发之旅 网络篇③ Soft-AP——ESP8266WiFiAP库的使用
  10. [转]乐死我了,怎么样成为一个全栈程序员(Full Stack Developer),附我想专注的语言...