BS版图形系统 - 界面控件配置

UI设计案例,B端后台界面设计教程 股”字号为163、使用圆形工具(O)绘制一个圆,并设置属性:渐变 #5CFF92— #37D9FA,投影:#00D5FF、不透明度45%0、2、8、0,并继续绘制一个小圆,填充白色。1、画板工具(F)绘制一个250^334px的画板,使用文字工具输入文字,属性:思源黑体、粗体、16字号、#25396F并使用 IconPark 插件,搜索“更多”图标,放置在画板中。1、使用画板工具(F)绘制一个1075^64px的画板,使用文字工具输入相应的文字,文字属性:思源黑体、中等、14字号、#25396F。 阅读详情

QQ: 282397369

界面控件考虑

有了属性浏览器,下来就该处理工具栏了。
一个直观感觉,网页留给程序的空间,要比应用程序少。网页在浏览器这个程序中运行,不同的浏览器,提供相应的界面,占据标题、工具栏位置,甚至书签与侧栏。所以做网页程序的时候,尽量能将工作区整大一些。在这里插入图片描述
当然,如何整应该是UI设计的事,技术层面还是关心如何实现的问题。
在属性浏览器的基础上,初步实现了一个VCL的JS框架。但新建控件,还是要写一堆代码来控制新控件的各个属性,比如创建一个ScrollBox

        this.choosePanel = new TScrollBox(this);
        this.choosePanel.Name = "choosePanel";
        this.choosePanel.horzScrollBar.Visible = false;  // 水平滚动条不可见
        this.choosePanel.AddEvent(NControlEvent.OnKillFocus, this.closeChoosePanel, this); // 失去焦点即消失
        this.choosePanel.AddEvent(NControlEvent.OnChange, this.onListPanelChange, this); // 选择新的目标项
        this.choosePanel.Visible = false;   // 先不显示,需要时再弹出显示,并确定其显示区域

觉得在点烦。

资源配置化

那就通过资源来配置界面,感觉应该可以。用XML习惯了,那就用XML来实现。
从使用倒推,应该先写XML配置

XML资源配置

<?xml version='1.0' encoding='gb2312' ?>
<xml desc="UI Control Config by DrGraph">
	<TPanel name="ToolPanel" autoArrange="true" >
		<TButton name="btnOpen" Width="40" Height="40" Transparent="true" onClick="true" icon="icon/close.png" Tag="1" Hint="测试按钮" />
		<TButton name="btnOpen1" Width="40" Height="40" Transparent="true" onClick="true" icon="icon/close.png" Tag="1" Hint="测试按钮1" />
		<TButton name="btnOpen2" Width="40" Height="40" Transparent="true" onClick="true" icon="icon/close.png" Tag="1" Hint="测试按钮2" />
		<TButton name="btnOpen3" Width="40" Height="40" Transparent="true" onClick="true" icon="icon/close.png" Tag="1" Hint="测试按钮3" />
		<TButton name="btnOpen4" Width="40" Height="40" Transparent="true" onClick="true" icon="icon/close.png" Tag="1" Hint="测试按钮4" />
		<TButton name="btnOpen5" Width="40" Height="40" Transparent="true" onClick="true" icon="icon/close.png" Tag="1" Hint="测试按钮5" />
		<TButton name="btnOpen6" Width="40" Height="40" Transparent="true" onClick="true" icon="icon/close.png" Tag="1" Hint="测试按钮6" />
		<TButton name="btnOpen7" Width="40" Height="40" Transparent="true" onClick="true" icon="icon/close.png" Tag="1" Hint="测试按钮" />
		<TButton name="btnOpen8" Width="40" Height="40" Transparent="true" onClick="true" icon="icon/close.png" Tag="1" Hint="测试按钮1" />
		<TButton name="btnOpen9" Width="40" Height="40" Transparent="true" onClick="true" icon="icon/close.png" Tag="1" Hint="测试按钮2" />
		<TButton name="btnOpen10" Width="40" Height="40" Transparent="true" onClick="true" icon="icon/close.png" Tag="1" Hint="测试按钮3" />
		<TButton name="btnOpen11" Width="40" Height="40" Transparent="true" onClick="true" icon="icon/close.png" Tag="1" Hint="测试按钮4" />
		<TButton name="btnOpen12" Width="40" Height="40" Transparent="true" onClick="true" icon="icon/close.png" Tag="1" Hint="测试按钮5" />
		<TButton name="btnOpen13" Width="40" Height="40" Transparent="true" onClick="true" icon="icon/close.png" Tag="1" Hint="测试按钮6" />		
	</item>
</xml>

将该文件保存为服务端的Res目录下的MainTool.xml,希望直接在界面上目标父窗口对象中直接创建这些控件

加载

那得实现相应的解析逻辑。继续倒推,则应该由目标控件载入这个资源:

        this.ToolPanel.loadFromRes(this, DrGraph.PATH_RES + "MainTool.xml", "ToolPanel");

也就是想将以上按钮直接加载到ToolPanel中,需要考虑到从服务端读取文件为异步的,所以调用一个回调函数,以期在载入资源后进行动态解析生成。

loadFromRes(caller: any, xmlUrl: string, nodeName: string = "") {
        this.FSubControls = [];
        this.FAlignControls = [];      

        let xml: CbwXML = new CbwXML(xmlUrl, "DrGraphRes");
        xml.read(function () {            
            let destNode: CbwXmlNode | null = xml.RootNode;
            if (nodeName.length > 0)
                destNode = destNode.NodeByAttribute("name", nodeName);
            if (destNode) 
                this.from(caller, destNode);
            else
                console.log(`未发现目标配置节点 ${nodeName}!!!`)
        }.bind(this));
    }

当然。动态生成就再实现一个from函数,基于VCL类库实现,也算是比较轻松。
基本类:

from(caller: any, node: CbwXmlNode) {
        this.Anchors.Clear();
        node.FAttributes.forEach((value, name) => {
            DrGraph.TRtti.SetPropertyValue(caller, name, value);
        })
    }

窗口类:

from(caller: any, destNode: CbwXmlNode) {
        super.from(caller, destNode);
        destNode.FElements.forEach((node) => {
            let nodeType: string = node.Name;
            let control = DrGraph.BuildControl(nodeType, this);
            if (control != null) 
                control.from(caller, node);            
            else
                console.log(`${nodeType} 类型未实现自动化`);
        })
        this.ReAlign();
    }

正如所想,那些配置的按钮,安静地在那里思考人生。
在这里插入图片描述

下一步任务

目前已支持TEdit、TPanel、TScrollBar、TComboBox、TLabel、TScrollBar、TButton、TPropertyGrid等常用控件,下一步可将其它一些如TCheckBox、TRadioButton、TForm、TMenu等实现,以丰富界面效果。
其次,为这些控件提供更多可以控制的属性,以便进行资源配置时使用。
再其次,将这些控件改造成脚本方式,后续可以支持主题应用。
这些够得做一段时间了。

C语言图形界面开发:从Win32 API到GTK+的底层实现与跨平台实践 图形用户界面(GUI)是软件与用户交互的核心,其底层实现依赖于操作系统提供的图形子系统。理解GUI的工作原理,需要从事件驱动模型和消息循环机制切入,这是所有现代GUI框架的基石。在技术实现上,直接调用系统原生API(如Windows的Win32 API或Linux的Xlib)能提供极致的控制力和性能,尤其适合对执行效率、资源占用有严苛要求的场景,例如嵌入式设备或需要深度定制的应用。通过剖析Win32 API的窗口创建、消息处理与GDI绘制流程,开发者可以透彻掌握窗口管理、事件分发与图形渲染的核心原理。同时, 阅读详情

相关推荐

BS管理系统界面模板

多套非常好的管理系统界面模板,不同风格,满足不同需求

软件架构风格-BS三层架构

BS三层架构(Browser/Server three-tier architecture)是一种常见的软件架构模式,将一个应用程序分为三个主要的逻辑层:表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。每个层有不同的职责和功能,通过清晰的分层结构提高了应用程序的可维护性、可扩展性和可测试性。

一步一个脚印,踏实努力,向着目标前进 6985

一个很好看的BS界面

一份很好看的BS界面,绝对值得拥有。我是来赚积分的。

电子病历控件,电子病历,EMR,unieditor(20100329已停用,请下载升级版本3.1)

http://codechina.net/source/2028817此编辑器为门诊及住院专用设计,可灵活在设计模式与编写模式进行切换,提供数据库直连技术,可以不通过ADO、ODBC、OLEDB等复杂的方式与数据库建立连接,存取效率更高更快,适应WINDOWS开发环境,只需通过动态库函数的调用,即可轻松实现书写病历和设计模板所需的复杂功能。所见即所得,详如压缩文件中之说明。

unieditor的专栏 1655

Web版流程图设计器WorkFlowBS

Web版流程图设计器WorkFlowBS

html5 bs画图工具

bs画图 ,在线绘图 支持html5

bs(二)表单(网格系统、下拉菜单、简单导航)

网格系统 列类.col-md-4 //其中的数字表示占的百分比 注:其中md表示middle,还有es,sm,lg不同型号 在列元素上添加“col-md-offset-4”,表示该列向右移动4个列的宽度 列排序其实就是改变列的方向,就是改变左右浮动,并且设置浮动的距离。在Bootstrap框架的网格系统中是通过添加类名“col-md-push-*”和“col-md-pull-*” (其中星号代表

Jinming Su 2264

电子病历BS控件

开发电子病历BS版的好工具,支持java、c#等语言。

基于ueditor 扩展的电子病历编辑器

技术栈:react ueditor 效果图: EMR-YEDITOR 开发电子病历可以用此控件 author:penghongbao@elt2006.com wx:springjson

PENG15084664504的专栏 9463

FPGA进位链(Carry Chain)实战:从Xilinx CARRY8原语到性能优化全解析

本文深入解析了FPGA进位链(Carry Chain)的原理与应用,重点剖析了Xilinx CARRY8原语的端口功能与内部机制。通过实测数据揭示了进位链的真实延迟特性与温度影响,并详细阐述了如何利用DI和S信号进行动态路径优化、实现减法运算与条件进位选择,从而有效提升设计性能。最后,文章探讨了系统级的流水线拆分、布局约束等实战优化策略与常见陷阱。

weixin_29313817的博客 451

芯片封装、功率密度提升及热管理系统优化三个维度分析高功率芯片散热技术挑战

本文探讨高功率芯片散热技术挑战与创新。随着新能源汽车MOSFET用量增至400颗/车,文章聚焦封装技术创新(双面散热、集成模块)、功率密度提升(SGT-MOSFET优化)和热管理系统协同优化三大方向。通过热仿真案例(如CPO散热优化)展示温升改善方案,强调需协同器件级设计、系统级仿真与先进封装技术(混合键合/玻璃基板)来解决高密度互连与散热矛盾,为功率密度跃升提供技术支撑。

莱歌数字的博客 1473

BS版图形系统 - Ribbon Gallery

BS版图形系统 - Ribbon Gallery先准备相应图标实现资源配置初步效果上下箭头按钮处理下一步工作 今天尝试做一个Ribbon Gallery效果 直接参考PPT效果 当然,感觉在网页里,占用空间少一些好,所以把各图标间距整小一点。 先准备相应图标 实现 export class TRibbonGallery extends TPanel { rightPanel: TPanel; btnUp: TButton; btnMid: TButton; btnDown

drgraph的博客 372

第1章:Zephyr 开发环境搭建与 Hello World

📝【摘要】本文是Zephyr RTOS开发入门指南的第一章,详细介绍了从环境搭建到首个应用运行的完整流程。主要内容包括:1️⃣ Zephyr项目结构解析与west工具链部署;2️⃣ 开发环境配置(Linux/WSL)及SDK安装;3️⃣ 两种实践路径——官方HelloWorld样例与自定义应用开发;4️⃣ 实际硬件部署方法(nRF/STM32)及常用west命令速查;5️⃣ 典型问题解决方案。通过qemu_x86模拟器演示了基础打印功能实现,为后续深度开发奠定基础。

hemoparrot的专栏 1361

Windows GDI画刷完全指南:从纯色到纹理,掌握UI绘制的核心技术

在Windows图形编程中,图形设备接口(GDI)是实现界面绘制的基础框架,其核心原理是通过设备上下文(DC)管理绘图状态。画刷(Brush)作为GDI的关键对象,定义了封闭图形区域的填充样式,直接影响用户界面的视觉呈现和交互体验。从技术价值看,合理使用画刷能显著提升软件界面的美观度与专业性,同时优化绘制性能。在应用场景上,无论是传统桌面应用的对话框背景、控件美化,还是数据可视化图表、游戏UI的纹理填充,都离不开画刷的精准控制。本文聚焦**GDI资源管理**与**双缓冲技术**,深入解析纯色、阴影、位图等各

weixin_30561425的博客 341

KUKA机器人在自动运行时,动作不流畅,每个点位都有停顿的解决办法

KUKA机器人在自动运行时,动作不流畅,每个点位都有停顿的解决办法

Robot_PLC_HMI_Automation 4577

1、硬件工程师笔面试真题汇总(2025版本)

答:按照使用习惯,电源指示灯用红色,信号指示灯用绿色这两种颜色的LED 灯技术最成熟,价格最便宜通孔是贯穿整个PCB 的过孔盲孔是从PCB 表层连接到内层的过孔埋孔是埋在PCB 内层的过孔。大多数PCB厂家的加工能力是这样的:大于等于8mil 的过孔可以做机械孔小于等于6mil 的过孔需要做激光孔对小于等于6mil 的微型孔,在钻孔空间不够时,允许一部分过打在PCB 焊盘上。

XU157303764的博客 2万+

ReactOS ARM移植实战:将Windows兼容系统带入移动设备的完整指南

你是否曾经想过,能否在ARM平板或嵌入式设备上运行一个完全兼容Windows NT架构的操作系统?ReactOS作为一款开源、兼容Windows API的操作系统,正在突破x86架构的限制,向ARM平台迈进。本文将为你详细解析ReactOS在ARM设备上的移植技术,从架构适配到触控优化,提供一套完整的实战指南。 ## 架构适配:跨越x86到ARM的技术鸿沟 ### 背景说明:为什么ARM移植如

gitblog_00754的博客 874

PHM2010刀具磨损预测完整实现

本文介绍了PHM2010刀具磨损预测项目的完整实现方案。项目采用PHM2010公开数据集,包含6个子数据集,记录了铣削加工过程中7个通道的传感器数据(切削力、振动和声发射信号)。技术路线包括数据预处理(截取中间10万点、小波降噪)、特征提取(时域9个、频域4个特征)、特征融合和皮尔逊相关系数筛选,最终使用BiLSTM模型进行训练和评估。环境配置基于Python 3.9,依赖NumPy、Pandas、PyTorch等库。数据加载和预处理阶段重点处理了传感器信号分段和磨损标签对齐问题,为后续建模奠定基础。

huanghm88的专栏 416

BeagleBone Green LCD Cape开发指南:从驱动加载到图形应用实战

在嵌入式Linux开发中,设备树(Device Tree)是描述硬件配置的核心机制,它通过数据文件向内核声明外设信息,实现硬件资源的动态管理。其原理在于将硬件抽象为节点和属性,使同一内核能适配不同硬件平台,极大提升了嵌入式系统的可移植性和模块化程度。这一技术的核心价值在于简化了驱动开发流程,支持硬件热插拔与动态配置,为复杂外设集成提供了标准框架。在应用场景上,设备树广泛用于显示屏、触摸屏、传感器等外设的即插即用支持,例如在BeagleBone开发板生态中,通过Cape扩展板的EEPROM存储设备树覆盖信息,

weixin_30875157的博客 323

嵌入式RTOS实战:uC/OS-III最新版移植指南(附项目源码)

本文提供uC/OS-III实时操作系统的完整移植指南,涵盖源码配置、工程搭建到任务调度的全流程。针对移植中的常见编译错误,给出关键修改方案(如中断重定义、配置使能等),附已验证的工程源码,通过LED任务实验验证稳定性,帮助开发者高效完成移植。适合嵌入式工程师及RTOS学习者参考。

Bit_Dong的博客 2472

基于matlab的图像HOG特征提取算法仿真

方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。需要提醒的是,HOG+SVM进行行人检测的方法是法国研究人员Dalal在2005的CVPR上提出的,而如今虽然有很多行人检测算法不断提出,但基本都是以HOG+SVM的思路为主。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 730

BS系统经验总结

本文章是对刚做完BS系统的总结。主要记录开发过程中遇到的问题,及问题是如何解决的。 1,界面显示    一个系统界面首先要和谐,比如不同页面文本框长度高度要统一,按钮样式要一致,表格显示一样居中都居中靠左都靠左,这也就是所说的全局观,整体上的样式一直,界面才显得和谐。    这里主要解决按钮样式的问题。    系统的框架是直接用别人写好的,我们要做的就是向框架中填东

李双喆 4414

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

BS系统打开无menubar、toolbar

<br />    很多BS系统打开之后没有工具栏和菜单栏,使显示空间更充足,并且更加美观,实现内容很简单,我在整理的时候很想通过object控件中的方法在javascript自动最大化,但是放服务器之后执行无效,一直没找到原因,望哪位能指教。 index.html内容如下: <object id="max" classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"> <br /> <param name="Command" value="Maximize">

申良龙的专栏 352

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

BS架构ERP系统开发全系列之白金教程-主界面设计

1、打开VS2012 新建ERP专案,如图 在ERP解决方案上,右击添加新建项目,新建一个CommonTools共用类库,如图 删除Class1.cs,在CommonTools右击,添加新建类,输入BasePage,结果如图 在ERP专案上右击,打开ERP专案所在文件夹,如下图 添加三个文件夹(WS存放WebService),如图

mansai的专栏 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

如何通过F12的Elements控制页面样式

下面内容都是基于暂时性的,一旦刷新页面,内容就会消失。想让页面中某个字体加粗可以给它加上。

chen的博客 378

BSYBannerScrollview,最简单的Banner轮播图控件

实现这个功能,只需要在工程中拖入BSYScrollView.h 文件和BSYScrollView.m文件,在需要的文件中实现一下代码即可: 源码下载地址:demo

mjbaishiyun的专栏 1315
上一篇: BS版图形系统 - 属性浏览器
下一篇: BS版图形系统 - 中文录入
DrGraph
博客等级 码龄14年 228粉丝 77原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值