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

深入瑞芯微SDK:手把手解析Uboot、Kernel到Rootfs的镜像生成与烧录

本文深入解析瑞芯微SDK中从Uboot、Kernel到Rootfs的镜像生成与烧录全流程,揭示编译背后的技术细节。通过详细分析SDK架构、镜像生成流水线、分区表定制、Rootfs构建及烧录科学,帮助开发者从会编译进阶到懂原理,掌握系统级开发的关键技术。

weixin_29193359的博客 270

手把手教你用LTspice仿真BUCK-BOOST电路(附波形分析)

本文详细介绍了如何使用LTspice进行BUCK-BOOST电路的仿真与波形分析,涵盖电路原理、CCM与DCM模式特性、效率优化及常见问题解决方案。通过实战案例,帮助工程师快速掌握升降压转换电路的设计与调试技巧,提升电力电子设计能力。

julia4scientist的博客 1047

BS版图形系统 - Ribbon Gallery

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

drgraph的博客 372

manimgl安装

安装manimgl

happytree001的博客 707

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

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

weixin_30561425的博客 341

eNSP中玩转Python自动化——解锁网工新姿势(一)

Python自动化一、安装Paramiko模块二、搭建实验环境1、桥接电脑网卡2、配置交换机IP地址交换机配置测试ensp的交换机与电脑的连通性:交换机配置SSHXshell验证三、Python脚本1、执行python脚本2、同步成功 一、安装Paramiko模块 首先安装Python3 然后安装pip解释器 最后安装Paramiko模块 Windows+R打开Cmd,输入命令: pip3 install paramiko 进入python,导入 paramiko模块: import paramiko

LiBai'S BLOG 2万+

AD-Copilot 论文解读:把“大模型看图”升级为“对照检验”的工业异常检测助手

本文提出AD-Copilot,一个面向工业异常检测的视觉语言助手,通过视觉上下文比较解决现有方法的不足。针对工业场景中多模态大模型表现不佳的问题,作者指出核心原因在于缺乏工业数据和比较能力不足。为此,论文提出三个关键贡献:构建Chat-AD数据集,设计Comparison Encoder显式建模图像差异,以及采用多阶段训练策略。实验表明,该方法在MMAD基准上达到82.29%准确率,定位任务提升3.35倍,并展现出良好的泛化能力。消融实验验证了比较模块的有效性,表明其成功源于高质量比较数据与显式比较模块的协

blanokvaffy的博客 331

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

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

gitblog_00754的博客 874

地平线旭日X3 安装xfce桌面+VNC查看USB摄像头

VNC是Virtual Network Computing的缩写,它是一种使用RFB(Remote Frame Buffer)协议的用于控制远程电脑的图形桌面分享系统。xfce桌面相比于GNOME桌面更加轻量,占用的资源更少,在没有GPU的设备上也可以运行(旭日的Desktop版本从外观上好像就是xfce桌面,具体没有尝试)。可以使用专用的VNC客户端连接到开发板,例如vnc viewer。板子默认带有openssh-server,因此,WiFi热点连接成功后,就可以使用ssh登录开发板了。

bingdund的博客 509

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

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

weixin_30875157的博客 323

可编程逻辑控制器(PLC)系列:Mitsubishi MELSEC-Q_(8).MELSEC-Q系列PLC故障诊断与维护

MELSEC-Q系列PLC的故障诊断与维护是一个系统性的过程,需要工程师具备扎实的理论基础和丰富的实践经验。通过了解故障类型、使用诊断工具、遵循诊断步骤,可以有效地定位和解决故障问题。同时,定期的检查与保养、备份与恢复、优化程序和配置,以及提供良好的运行环境,可以减少故障的发生,提高系统的可靠性。希望本文能够帮助工程师在故障诊断与维护过程中更加得心应手,确保MELSEC-Q系列PLC的稳定运行。

2401_87715305的博客 1247

【Network Management】DCM模块唤醒网络是主动唤醒还是被动唤醒

DCM模块唤醒网络是主动唤醒还是被动唤醒

qq_36056498的博客 1539

BS系统经验总结

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

李双喆 4414

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

android 蓝牙通讯demo

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

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

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

mansai的专栏 1万+

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

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

如何通过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、付费专栏及课程。

余额充值