提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:王香|2016-11-14 10:55:53.000|阅读 562 次
概述:从版本8.2开始,Add-in Express开始打开其内部基础架构,允许开发人员自定义高级Excel、Wor、PowerPoint任务窗格和Outlook的某些区域。在新版本中,可以自定义标题、控件以及分隔符和边框。我们还可以修改最小化区域的外观,控制标题可见性,更改填充,获取HitTest信息等。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
在嵌入表单中以Office和.net为基础结构实现的Add-in Express,对于所有Office应用程序都是相同的(区别仅在于类名),以Excel任务窗格为例,检查其主要元素,看看怎么根据自己的喜好自定义它们。例如,采用高级Excel任务窗格的默认设计:
..并把它变成这一个:
简单地更改表单颜色,即将BackColor设置为绿色,并将UseOfficeThemeForBackGround属性设置为false将不够,因为这将只绘制所需颜色的窗体,而窗格的其他部分将根据Excel的颜色主题绘制:
为了理解下一步做什么,我使用了一个图形编辑器,并概述了组成窗格的区域。
上面的屏幕截图显示了展开状态下的窗格,它由三个主要区域组成:窗体、标题和分割区。为了更好的感知,我们管这些区域从窗格的边缘偏移距离叫填充。表单区域没有什么特别的意义,因为它可以适应设计创建的内容。但是Header和Splitter以及Padding区域一样可以改变成你想要的方式。
什么是高级任务窗格?
在加载项Express中,任务窗格是您的窗体所在的特定控件(ADXContainerControl)。当窗格上有多个窗体时,它们将它们存储在列表中。
重新绘制任务窗格时,首先以某种颜色绘制其背景,然后绘制标题和分割符。窗体下面的区域没有标识,当用户悬停在标题或分割器上的某个按钮上时,窗格将会被完全重绘。
如何修改任务窗格外观?
Add-in Express在AddinExpress.Extensions.ADXContainerControl类中可以实现任务窗格的基本功能。从该类继承以下类:ADXContainerControlOL,ADXContainerControlXL,ADXContainerControlPP,ADXContainerControlWD,它们分别支持Outlook,Excel,Power Point和Word特有的行为和绘图。
要更改任务窗格的标准设计时,我们需要创建一个可以继承上述类之一的新类,并覆盖所需的虚拟方法和属性。在本例中,我们继承了ADXContainerControlXL类。
public class MyContainerControl : ADXContainerControlXL { }
此外,我们需要指定应使用新类而不是默认类,所有需要覆盖ADXExcelTaskPane类中的GetContainerControlType方法,并返回新类的类型。
protected override Type GetContainerControlType() { return typeof(MyContainerControl); }
现在,我们需要覆盖并实现新的MyContainerControl类的属性和方法。 在这里,我将只描述最重要的,但是我们也可以通过以下链接下载这个例子的完整代码。如果要使用所需的颜色填充任务窗格的整个绘图区域,请覆盖BackColor属性:
public override Color BackColor { get { return Color.FromArgb(0x21, 0x73, 0x46); } }
对于窗格边框的内部间距,我们也可以覆盖Padding属性以调整Header、Splitter和Form区域例如:
public override Padding Padding { get { Padding offsets = base.Padding; if (owner.RegionState == AddinExpress.XL.ADXRegionState.Hidden) offsets = new Padding(1, 2, 1, 2); return offsets; } }
想要正确地绘制按钮上的图标,我们需要知道窗格的布局和位置(垂直或水平)。因此我们可以使用覆盖OnInitialized方法并将这些值存储在内部变量中。该方法将在窗格初始化时被调用,比如在显示窗格、更改其布局或切换到另一个Office主题之后。
protected override void OnInitialized() { base.OnInitialized(); owner = Owner as ExcelTaskPane1; layout = owner.Item.Position; isVertical = false; switch (layout) { case AddinExpress.XL.ADXExcelTaskPanePosition.Left: case AddinExpress.XL.ADXExcelTaskPanePosition.Right: isVertical = true; break; } }
下面为大家介绍在绘制各种窗格控件时直接涉及的方法。考虑到背景是较暗的,我们使用白色文字颜色:
protected override void OnDrawText(DrawTextArgs e) { e.ForeColor = Color.White; base.OnDrawText(e); } protected override void OnDrawHeader(DrawArgs e) { //base.OnDrawHeader(e); e.DrawControls(); }
请注意,对于OnDrawHeader方法,我们只绘制子控件(通过调用e.DrawControls()方法),不需要调用基本方法,因为选择了任务:在自定义背景上绘制子控件,调用基本方法一般使用在一些Excel版本中的渐变绘制背景(例如Excel 2010)。
我们要覆盖的下一个方法是OnDrawControl(DrawControlArgs e),当显示ADXDrawControlType中列出的任何控件时,将调用此方法。
protected override void OnDrawControl(DrawControlArgs e) { if (e.ControlType == ADXDrawControlType.Separator) // Excel 2010 and below return; // Draw any control except for splitter button if (e.ControlType != ADXDrawControlType.Splitter) { // Determine whether the button is available or not. bool disabled = false; switch (e.ControlType) { case ADXDrawControlType.Previous: disabled = !IsScrollButtonPresent(false); break; case ADXDrawControlType.Next: disabled = !IsScrollButtonPresent(true); break; } // If the button is available and has been clicked, or the mouse cursor hovers // over it, fill the background color corresponding to the button state. if (!disabled && e.State != ADXDrawControlState.Up) { SolidBrush br = new SolidBrush(e.State == ADXDrawControlState.Focused ? btnBackColor : btnPressedColor); e.Graphics.FillRectangle(br, e.Bounds); br.Dispose(); } // Take the button image from the resources // and draw it using the DrawImage method. Image image = GetSkinImage(e.ControlType); if (image != null) { Size imgSize = image.Size; Rectangle destRect = new Rectangle( e.Bounds.Left + (e.Bounds.Width - imgSize.Width) / 2, e.Bounds.Top + (e.Bounds.Height - imgSize.Height) / 2, imgSize.Width, imgSize.Height); // If the button is disabled, draw it with 50% transparency. float alpha = disabled ? 0.5f : 1.0f; DrawImage(e.Graphics, image, destRect, new Rectangle(Point.Empty, imgSize), alpha); } e.DrawControls(); } else base.OnDrawControl(e); }
本文翻译自://www.add-in-express.com/
转载请注明慧都控件网
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn
通过提供强大的3D CAD数据访问工具并适用于桌面、移动和Web的高级环境3D可视化发动机,HOOPS在提升造船设计和制造流程的效率方面发挥了重要作用。
HOOPS Luminate在汽车行业中的应用具有广泛的潜力和深远的影响。它通过提供高效的3D可视化、虚拟装配与拆解、性能分析、客户定制等功能,帮助汽车制造商在设计、生产和销售过程中提升效率、降低成本并提高产品质量。
在不断发展的软件开发世界中,使工具和框架与最新的平台版本保持同步至关重要,欢迎查阅~
全球航运业对国际贸易至关重要,全球 90% 以上的商品通过海运运输。准确监控和控制这些集装箱的移动对于维持高效的供应链至关重要。手动输入集装箱号码是这一程序的关键部分,它带来了相当大的挑战,例如人为错误和效率低下。
开发商业类微软Office扩展的一体化框架,如Office COM Add-in、Outlook插件
Add-in Express for Office and Delphi VCLAdd-in Express VCL 是一个可用来编写 Borland Delphi 组件对象模型(COM)插件、智能标记(Smart Tag)以及实时数据服务器(RTD Server)的可视化工具。
Add-in Express for Internet Explorer and .netAdd-in Express for Internet Explore 是第一个适用于开发 IE 附件的可视化工具. 它完全支持IE 扩展 API,并且使得 add-on 开发和配置更方便。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@capbkgr.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢