U9的UI插件开发Card功能区上客开的按钮不能正常显示

做一个客开的测试过程中,碰到一个长期没有解决掉的问题,U9客开的按钮可以在3个地方开放出来,分别是1, 工具栏上添加,2,功能区添加,3,功能区下拉列表上添加 。功能区上的添加的按钮一直不能正常显示出来,分析了很久。为此手上的一个项目迟缓了一周没有进度。

用友对外公布的资料中有说到是一行中允许的按钮数量有限制。需要后台修改UIModel才可以。UBF去上修改标准的元数据方法没有找到合理的方法。于是想利用AI工具是否可以给一个破解限制的方案。以下是元宝给出的"答案"。

在 U9 的 UI 插件开发中,Card 上的按钮"加进去却不显示",通常不是系统有硬性按钮数量上限 ,而是布局容器(GridLayout)的网格列数不够 或插入位置冲突导致的。不存在官方公开的"按钮数量限制",也不需要(也无法)去"破解"。

核心原因:GridLayout 的列数瓶颈

U9 的 Card 容器默认使用 GridLayout(网格布局)。你在代码里调用的 CommonFunction.Layout(container, ctrl, x, y),本质是把控件放到第 x列、第 y行。

  • 问题点 :Card 在元数据设计时有固定的网格列集合(Grid Column Definitions)。比如默认可能只有 7 列(0~6)。

  • 现象 :当你用 CommonFunction.Layout(card, btn, 28, 0)这样的代码时,列索引 28远远超出了 Card 预设的列数。控件其实已经被 Add到 Controls集合里了,但因为超出了布局网格的范围,渲染时被截断或不显示。

为什么会有"数量限制"的传言

这其实是列数限制带来的错觉:

  • 假设一行只有 7 列,每列放 1 个按钮,你最多"看得到"7 个。

  • 你加第 8 个按钮时,如果还放在合法列范围内(比如覆盖原有位置),可能会显示但把旧的挤掉或重叠;如果放在非法列(如列 28),就直接看不到。

  • 社区不少案例提到 Layout(card, btn, 8, 0)这类写法(列索引 = 按钮个数 × 2),一旦超过设计器预设列数,按钮就会消失

因为没有找到UBF编辑U9元数据的方法,几乎是要绝望放弃在Card功能区上放按钮方案时,柳暗花明又一村的事情发生了!...

措施:在【修改部件】的操作中,将客开按钮位置移动下位置,如图所示,实际上改变的SQL数据表中的按钮的位置记录,神奇的是按钮出来了!

最终效果如下

相关推荐
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读2 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁3 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超3 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int3 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++
CoderYanger3 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法
伞伞悦读3 天前
【第37期】Python JSON 与配置详解:序列化、反序列化、嵌套结构和配置文件
开发语言·python·json
CCCCCCCCharlie3 天前
Linux进程控制四大核心操作
linux·开发语言
Brilliantwxx3 天前
【STM32】 SPI Flash 驱动开发实战:阻塞模式驱动 W25Q64(含工程代码)
开发语言·stm32·单片机·嵌入式硬件