首页 > 编程语言 >PowerBuilder编程新思维6:装饰(用最简单的方式做框架)

PowerBuilder编程新思维6:装饰(用最简单的方式做框架)

时间:2022-12-05 16:58:06浏览次数:39  
标签:控件 界面 框架 Duilib PowerBuilder 编程 新思维 窗口 PB

 

To be, or not to be - that is the question.

 

PowerBuilder编程新思维6:装饰(用最简单的方式做框架)

 

问题

这一章,是写得最艰难的一章,原因有四:

一、WUI的范畴实在太大了

第二部分Outside原计划写两部分内容Dui和Wui,但是发现如果写下去,这一章的内容太多,需要的工作量也大大超出预期。

所以把Wui改为第四部分,不再放在本章中讲述。

二、Duilib开源库本身的问题

最开始是发现,Duilib不支持class表达,作皮肤框架使用很别扭,但如果要换库,也没有非常好的选择。

DuiLib_Ultimate还在维护但内容少,REDM和DuiVision不再维护,NIM_Duilib就只更新了一个版本,Soui的许可证太过奇葩。

三、Dui部分不能跨平台

如果Dui仅仅是作为PB皮肤使用当然没问题,但是随着开发的深入,跨平台成了很迫切的预期,深入还是放弃一直是在徘徊中。

四、PB代码会编译成别的语言

如果编译成别的语言,界面库就没有太大的意义了,即使要移植,也肯定是选择新语言的界面库,而非Duilib。

 

基于以上四个问题,选择duilib库,开发界面框架,就成了一个非常困难的决定

其实这两年,我都在更新PB的博客,但是没有发表,因为我一直在调整框架的内核。

希望以后能有一个合适的选择项,但是现在暂时放弃这一章的技术开发。以下内容仅供参考。

 

前言

在前两节,我们已经分析了很多界面技术,但最被大家关注的界面技术一定是框架。

然而,框架也是侵入性最高的,更换框架的代价过高,所以我的目标一直是做一款更换成本最低的框架。

 

什么是框架,其实就是软件的主界面。以经典的Kodigo框架为例,除了红框内的内容,其它的都是框架。

 

 

软件的主界面是软件的核心界面,主界面的形象,直接决定了用户对软件的印象。

所以,不管什么技术,有框架的技术才是好技术。下面我们就来分析一下如何做个好框架。

 

框架

其实要实现一个界面框架的思路很简单:

就是把原生控件都放在dui控件之下,在dui控件上重新绘制就行了。

不管界面有多复杂,除了DataWindow所有控件全部都在dui控件上自绘。

这样不仅能控制主题和风格,而且可以新增很多效果,至于DW也可以通过其它手段实现主题切换。

 

大多数的PB界面,无非是一个主界面框架,菜单、工具条、状态栏 、还有窗口TAB。

框架用DUI控件显示,红框内的窗口区域用一个普通TEXT控件覆盖,然后把所有子窗口的父窗口都修改为TEXT控件。

这样看起来很正常的界面,实际上由两都完全不同的控件组成。两种不同类型的窗口一起工作,谁也无法分辨,和谐统一。

 

 

 实现

 

其实整个框架不太复杂,只要把一些细节做到位,界面是没有破绽的。

比如标题栏的消息处理,比如OnSize的事件处理。

可惜当初选择了Duilib,换库需要重写,自己却没有那时候的激情和动力了。

有空再来填坑吧。

  

(第二部分 《Outside 哭泣的小丑》完)

 

标签:控件,界面,框架,Duilib,PowerBuilder,编程,新思维,窗口,PB
From: https://www.cnblogs.com/windfic/p/14738586.html

相关文章

  • Java 编程入门第一课:HelloWorld
    在之前的文章中,壹哥带大家搭建出了Java的开发环境,配置了JDK环境变量,并且我们也熟悉了dos命令行的操作。那么从这篇文章开始,壹哥就开始带各位真正地学习Java代码该......
  • 用NetCore + ReactJS 实现一个前后端分离的网站 (5) 日志 - log4net & AOP切面编程
    用NetCore+ReactJS实现一个前后端分离的网站(5)日志-log4net&AOP切面编程1.前言日志始终是跟踪与调试程序的最佳手段,因为调试难以溯及既往,而日志则能忠实地记......
  • C#摄像头编程
    这段时间搞视频采集方面的程序,在国外网站上找到一个用C#写的驱动摄像头的程序。经改造和调试,如下:(1)安装摄像头后,一般可以找到一个avicap32.dll文件(2)这是一个关于摄像头的......
  • 论编程的最后期限
    普通编程与专业编程之间有很多差别,而最为显著的就是截止日期。截止日期/最后期限当你给自己写程序的时候,只要你愿意,就可以用很多(或者很少)的时间来完成,但是当你给别人写程序......
  • NVIDIA-CUDA编程初探
    CUDA的全称是ComputeUnifiedDeviceArchitecture,是显卡厂商NVIDIA推出的运算平台,开发者可以使用C语言来编写CUDA代码,使用NVCC编译器可以在支持CUDA的GPU处理器上以高速运......
  • OpenCL编程之二
    白嫖来的C端代码:matrix.c:#include<stdio.h>#include<stdlib.h>#include<alloca.h>#include<CL/cl.h>#pragmawarning(disable:4996)intmain(){cl_interror;......
  • 异步编程
    一、什么是回调函数?回调函数有什么缺点?如何解决回调地狱问题?回调函数概念回调函数是一个作为变量传递给另一个函数的函数,它在主体函数执行完之后再执行回调函数特......
  • 《不用编程,不用遍历》 回复
    《不用编程,不用遍历》     https://tieba.baidu.com/p/8172829227     4楼一个可喜的前景是,未来,望闻问切可以和磁共振x光心电图水平仪经纬仪听......
  • Flutter 陈航 10-状态 State 编程范式 构建过程
    本文地址目录目录目录10|Widget中的State到底是什么?UI编程范式命令式声明式总结StatelessWidget构建过程适用场景StatefulWidget构建过程总结StatefulWidget可能......
  • [转]C#并行编程系列-文章导航 - 释迦苦僧 - 博客园
    菜鸟初步学习,不对的地方请大神指教,参考《C#并行编程高级教程.pdf》目录C#并行编程-相关概念C#并行编程-ParallelC#并行编程-TaskC#并行编程-并发集合C#并......