当前位置: 首页 > news >正文

【ArcGIS Pro二次开发】(5):UI管理_自定义控件的位置

新增的自定义控件一般放在默认的【加载项】选项卡下,但是根据需求,我们可能需要将控件放在新的自定义选项卡下,在自定义选项卡添加系统自带的控件,将自定义的按钮等控件放在右键菜单栏里以方便使用,等等。

下面就以一个小例子来具体做一下。

新建一个项目,命名为【UIManager2】,再添加1个ArcGIS Pro 按钮【UIManager2_Button1】作为示例按钮。


一、新建自定义选项卡、自定义组,添加自定义按钮

ArcGIS Pro工具栏的层级关系为【选项卡Tab、组Group、控件Control】。

新建选项卡【UIManager2_Tab】,再新建组【UIManager2_Group1】放置于选项卡【UIManager2_Tab】之下,再把上一步中添加的按钮【UIManager2_Button1】放在组【UIManager2_Group1】之下。

更新Config.daml文件中的</insertModule>模块即可实现以上功能。

    <insertModule id="UIManager2_Module" className="Module1" autoLoad="false" caption="Module1"><tabs><tab id="UIManager2_Tab" caption="UI管理器"><!--添加自定义的组--><group refID="UIManager2_Group1" /></tab></tabs><groups><group id="UIManager2_Group1" caption="示例组" appearsOnAddInTab="false"><!-- 添加自定义按钮 --><button refID="UIManager2_Button1" size="large" /></group></groups><controls><button id="UIManager2_Button1" caption="示例按钮" className="Button1" loadOnClick="true" smallImage="pack://application:,,,/ArcGIS.Desktop.Resources;component/Images/GenericButtonBlue16.png" largeImage="pack://application:,,,/ArcGIS.Desktop.Resources;component/Images/GenericButtonBlue32.png"><tooltip heading="Tooltip Heading">Tooltip text<disabledText /></tooltip></button></controls></insertModule>

实现结果如下:


二、在自定义选项卡中添加系统自带的组

在新建选项卡【UIManager2_Tab】下添加一个系统自带的组【esri_geoprocessing_analysisTools】,即【地理处理】。

更新Config.daml文件中的</tab>模块。

        <tab id="UIManager2_Tab" caption="UI管理器"><!--添加自定义的组--><group refID="UIManager2_Group1" /><!--添加系统自带的组--><group refID="esri_geoprocessing_analysisTools" /></tab>

实现结果如下:

每个系统自带选项卡、组、菜单、控件都有专有的ID。具体可以查看官方文档。

DAML-ID查询https://github.com/Esri/arcgis-pro-sdk/wiki/DAML-ID-Reference-ADCore.daml另外还有一种方便的方法可以查询控件的ID。打开ArcGIS Pro,点击菜单【工程】—【选项】—【自定义功能区】,勾选【在屏幕提示中显示命令ID】。

设置后,把鼠标放在工具栏或是右键菜单里的控件上时,提示信息会显示这个控件的ID。这样查找起来就更有目的性了。

至于选项卡、组、菜单我没有找到更好的查找方法,只能啃文档了,如果有大神知道更好的方法,望留言告知!


三、在自定义组中添加系统自带的控件

在自定义组中同样可以添加系统自带的按钮、动态菜单、小型组等各种控件。

更新Config.daml文件中的</groups>模块。

      <groups><group id="UIManager2_Group1" caption="示例组" appearsOnAddInTab="false"><!-- 添加自定义按钮 --><button refID="UIManager2_Button1" size="large" /><!-- 添加系统自带的按钮、动态菜单、小型组等控件 --><button refID="esri_core_previewZoomFullButton" size="large" /><dynamicMenu refID="esri_dockPaneSetDynamicMenu" size="large" /><subgroup refID="esri_core_WindowControls" /></group></groups>

实现结果如下:


四、添加按钮至系统自带的右键菜单

将自定义的按钮【UIManager2_Button1】添加到要素类的右键菜单里。

在</insertModule>模块下,新写一段</updateModule>代码块,用于更新系统自带的右键菜单。

	<!--更新系统自带的工具菜单、工具栏等--><updateModule refID="esri_mapping"><menus><!--将自定义的工具添加到要素类的右键菜单--><updateMenu refID="esri_mapping_layerContextMenu"><insertButton refID="UIManager2_Button1" placeWith="esri_mapping_copySelectedLayersButton"/></updateMenu></menus></updateModule>

这里的placeWith参数决定添加进去的控件所在的位置,如果不填,默认放在菜单的最后。我这里放在复制按钮【esri_mapping_copySelectedLayersButton】后面。(这里用上面介绍的第二种查找按钮控件ID的方法就方便很多了)

实现结果如下:


五、工程文件分享

最后,放上工程文件的链接:

UIManager2https://pan.baidu.com/s/1DDv02ZaQo217mMQgkV3m2g?pwd=o157

相关文章:

【ArcGIS Pro二次开发】(5):UI管理_自定义控件的位置

新增的自定义控件一般放在默认的【加载项】选项卡下&#xff0c;但是根据需求&#xff0c;我们可能需要将控件放在新的自定义选项卡下&#xff0c;在自定义选项卡添加系统自带的控件&#xff0c;将自定义的按钮等控件放在右键菜单栏里以方便使用&#xff0c;等等。 下面就以一…...

学习OpenGL图形2D/3D编程

环境&#xff1a;WindowsVisual Studio 2019最流行的几个库&#xff1a;GLUT&#xff0c;SDL&#xff0c;SFML和GLFWGLFWGLAD库查看显卡OPENGL支持情况VS2019glfwgladopenGL3.3顶点着色器片段着色器VAO-VBO-(EBO)->渲染VAO-VBO-EBO->texture纹理矩阵matrix对图形transfor…...

2023美赛思路 | A题时间序列预测任务的模型选择总结

2023美赛思路 | A题时间序列预测任务的模型选择总结 目录 2023美赛思路 | A题时间序列预测任务的模型选择总结基本介绍数据描述任务介绍时序模型基本介绍 这道题分析植被就行,主要涉及不同植被间的相互作用,有竞争有相互促进,我查了下“植物科学数据中心”和“中国迁地保护植…...

PHP教材管理系统设计(源代码+毕业论文)

【P003】PHP教材管理系统设计&#xff08;源代码论文&#xff09; 设计方案 本系统采用B/S结构&#xff0c;所有的程序及数据都放在服务器上&#xff0c;终端在取得相应的权限后使用Web页面浏览&#xff0c;录入&#xff0c;修改等功能。在语言方面使用PHP语言&#xff0c;在…...

nps内网穿透工具

一、准备一台有公网ip的服务器 https://github.com/ehang-io/nps/releases 在这个地址下载服务端的安装包&#xff0c;centos的下载这个 上传到服务器上。 二、然后解压&#xff0c;安装&#xff0c;启动 [rootadministrator ~]# tar xzvf linux_amd64_server.tar.gz [roo…...

webpack打包时的热模块替代配置以及source-map

1.HMR 在devServer当中添加hot:true 热模块化功能 含义:当其中有一个文件发生变化的时候&#xff0c;那么就会被重新打包一次&#xff0c;极大的提高了构建速度 A.样式文件:可以使用HMR功能&#xff0c;因为在style-loader当中实现了 B.js文件:默认不能使用HMR功能&#xf…...

Seata架构篇 - TCC模式

TCC 模式 概述 TCC 是分布式事务中的两阶段提交协议&#xff0c;它的全称为 Try-Confirm-Cancel&#xff0c;即资源预留&#xff08;Try&#xff09;、确认操作&#xff08;Confirm&#xff09;、取消操作&#xff08;Cancel&#xff09;。Try&#xff1a;对业务资源的检查并…...

前端最全面试题整理

前端基础 一、 HTTP/HTML/浏览器 1、说一下 http 和 https https 的 SSL 加密是在传输层实现的。 (1) http 和 https 的基本概念 http: 超文本传输协议&#xff0c;是互联网上应用最为广泛的一种网络协议&#xff0c;是一个客户端和服务器端请求和应答的标准&#xff08;T…...

大数据之-Nifi-监控nifi数据流信息_监控数据来源_bub轻松复现---大数据之Nifi工作笔记0011

通过数据流功能可以轻松复现,数据的流向在某个时间点数据是怎么流动的,出现了什么问题,太强大了.. 真的是,可以看到通过右键,处理器,打开view data province就可以看到, 上面是处理器处理数据的详细信息 点击左侧的详情图标可以查看详情信息,details是这个事件处理的内容详情,…...

CUDA编程接口

编程接口 文章目录编程接口3.1利用NVCC编译3.1.1编译流程3.1.1.1 离线编译3.1.1.2 即时编译3.1.2 Binary 兼容性注意&#xff1a;仅桌面支持二进制兼容性。 Tegra 不支持它。 此外&#xff0c;不支持桌面和 Tegra 之间的二进制兼容性。3.1.3 PTX 兼容性3.1.4 应用程序兼容性3.1…...

惠普打印机使用

https://support.hp.com/cn-zh/product/hp-officejet-4500-all-in-one-printer-series-g510/3919445/document/c02076511HP 打印机 - 无法打印校准页本文适用于 HP 喷墨打印机。安装新墨盒后&#xff0c;打印机无法按预期打印校准页。步骤 1&#xff1a;确保打印机可以开始打印…...

Ubuntu升级cmake

目录 1、下载cmake安装包 2、开始安装 3、查看cmake版本 参考链接&#xff1a; https://blog.csdn.net/qq_27350133/article/details/121994229 1、下载cmake安装包 cmake安装包下载&#xff1a;download | cmake 我们根据自身需求下载所需版本的cmake安装包&#xff0c;这…...

CCNP350-401学习笔记(101-150题)

101、Refer to the exhibit SwitchC connects HR and Sales to the Core switch However, business needs require that no traffic from the Finance VLAN traverse this switch. Which command meets this requirement? A. SwitchC(config)#vtp pruning B. SwitchC(config)#…...

分享112个HTML娱乐休闲模板,总有一款适合您

分享112个HTML娱乐休闲模板&#xff0c;总有一款适合您 112个HTML娱乐休闲模板下载链接&#xff1a;https://pan.baidu.com/s/15uBy1SVSckPPMM55fiudeQ?pwdkqfz 提取码&#xff1a;kqfz Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 Bootstrap视频网站模板 …...

k8s快速入门

文章目录一、Kubernetes&#xff08;K8S&#xff09;简介1、概念1.1 Kubernetes (K8S) 是什么1.2 核心特性1.3 部署方案2、Kubernetes 集群架构2.1 架构2.2 重要概念 Pod2.3 Kubernetes 组件二、Kubernetes集群安装1、安装方式介绍2、minikubute安装3、裸机搭建&#xff08;Bar…...

NG ZORRO知识点总结

NG ZORRO的常用属性,包括但不限于,结合代码 <button nz-button [nzType]"primary" [nzSize]"large" [nzLoading]"loading" [nzDisabled]"disabled" (click)"onClick()">点击我</button>nz-button是一个按钮组件…...

go中的值方法和指针方法

go中的值方法和指针方法1前言2 不同类型的对象调用不同类型的方法2.1 值对象可以调用值方法和指针方法3 指针对象可以调用值方法和指针方法4 &#xff01;注意&#xff1a;结构体对象实现接口方法1前言 golang中在给结构体对象添加方法时&#xff0c;接收者参数类型可以有两种…...

OKR常见挑战以及应对方法探讨

背景 OKR是大家经常听到的一个词&#xff0c;也有不少团队说自己实行过&#xff0c;但每个实行过的团队都遇到过挑战。很多团队都感觉OKR有些空&#xff0c;很难落地&#xff0c;普通团队成员更是时常感觉无所适从&#xff0c;感觉就像看电影。2022年我们在更大的范围落地了OK…...

SpringAMQP消息队列(SpringBoot集成RabbitMQ)

一、初始配置1、导入maven坐标<!--rabbitmq--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>2、yml配置spring:rabbitmq:host: 你的rabbitmq的ipport: …...

DIDL5_数值稳定性和模型初始化

数值稳定性和模型初始化数值稳定性梯度不稳定的影响推导什么是梯度消失&#xff1f;什么是梯度爆炸&#xff1f;如何解决数值不稳定问题&#xff1f;——参数初始化参数初始化的几种方法默认初始化Xavier初始化小结当神经网络变得很深的时候&#xff0c;数值特别容易不稳定。我…...

从零到一:在Windows Server上快速部署OpenLDAP服务与客户端连接实战

1. 为什么选择OpenLDAP&#xff1f; 如果你正在管理一个中小型企业的IT基础设施&#xff0c;用户账号管理可能会让你头疼。每次有新员工入职&#xff0c;都要在每台电脑上创建账号&#xff1b;员工离职时又要逐个删除权限。这种重复劳动不仅效率低下&#xff0c;还容易出错。Op…...

【Claude Kubernetes配置终极指南】:20年SRE亲授生产环境零失误部署的7大黄金法则

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Claude Kubernetes配置的核心理念与演进脉络 Claude 并非原生 Kubernetes 组件&#xff0c;而是 Anthropic 推出的大型语言模型系列&#xff1b;当将其部署于 Kubernetes 集群时&#xff0c;“Claude K…...

解锁网络音视频传输:DistroAV插件从零构建高效工作流

解锁网络音视频传输&#xff1a;DistroAV插件从零构建高效工作流 【免费下载链接】obs-ndi DistroAV (formerly OBS-NDI): NDI integration for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-ndi 在现代直播制作和视频协作场景中&#xff0c;跨设备高质…...

Serverless平台为何总让人“又爱又恨”?揭秘Lovable设计的3层情感化架构(开发者体验×运维韧性×业务敏捷)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Serverless平台为何总让人“又爱又恨”&#xff1f; Serverless 架构在现代云原生开发中已成为主流选择&#xff0c;它承诺“无需管理服务器”&#xff0c;让开发者专注业务逻辑。然而&#xff0c;在真…...

基于Helm Chart在Kubernetes中部署docker-mailserver邮件服务器

1. 项目概述与核心价值最近在折腾自建邮件服务器&#xff0c;发现了一个宝藏项目&#xff1a;docker-mailserver。它把邮件服务里那些复杂的组件&#xff0c;比如 Postfix、Dovecot、SpamAssassin、ClamAV 这些&#xff0c;全都打包进了一个 Docker 镜像里&#xff0c;开箱即用…...

不止于水:用MS动力学模拟和RDF分析,探究任意离子/分子在溶液中的溶剂化结构

从水到多元溶液&#xff1a;MS动力学模拟与RDF分析的高级应用指南 当我们需要理解溶液中离子或分子的行为时&#xff0c;径向分布函数(RDF)分析提供了一个强有力的工具。传统的纯水体系研究固然重要&#xff0c;但现实中的溶液系统往往更为复杂——电解液中的锂离子、蛋白质溶液…...

别再手动点选了!用C#写个SolidWorks插件,一键智能识别并拉伸草图里的特定轮廓

用C#开发SolidWorks智能插件&#xff1a;一键识别并拉伸特定草图轮廓的工程实践 在机械设计领域&#xff0c;SolidWorks作为主流三维CAD软件&#xff0c;其草图绘制与特征创建是产品开发的基础环节。工程师们经常遇到这样的场景&#xff1a;复杂草图中包含多个相交轮廓&#xf…...

从零构建开发者效率工具:CLI脚手架与自动化工作流实践

1. 项目概述与核心价值最近在开源社区里&#xff0c;一个名为smouj/smouj的项目引起了我的注意。乍一看这个标题&#xff0c;可能会让人有些摸不着头脑&#xff0c;它不像常见的vue/vue或tensorflow/tensorflow那样直白地揭示了其技术栈。但恰恰是这种看似“神秘”的命名&#…...

对比了8款测试管理平台,最适合中小团队的居然是它

在软件研发的生命周期中&#xff0c;测试用例管理早已不是简单的“记录-执行-通过”的线性流程。随着敏捷开发、DevOps乃至AI辅助测试的全面渗透&#xff0c;测试管理平台承载的职责已扩展至需求追溯、缺陷闭环、自动化集成和质量度量等多个维度。然而&#xff0c;对于中小型测…...

200+ 发音人怎么缩小范围:先定风格再试听

&#x1f3af; 200 发音人怎么缩小范围&#xff1a;先定风格再试听面对顶伯文字转语音工具中超过 200 种发音人&#xff0c;选择困难症难免发作。&#x1f635; 别急&#xff0c;掌握 「先定风格再试听」 的筛选逻辑&#xff0c;就能快速锁定目标。 本文从风格分类、筛选技巧到…...