Tangram与软件的组合构造

2024-01-17 14:58
文章标签 组合 软件 构造 tangram

本文主要是介绍Tangram与软件的组合构造,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2005年04月06日 09:59:00
Tangram 与软件的组合构造
Tangram是中文"七巧板"的英文对应物,大概老外们认为"七巧板"是唐朝人的睿智游戏,而海外唐朝就象征着中国。"七巧板"表现出明显的朴素的构造化思想,以7个元素为基,尽情的造你能所造。最早开发Tangram的时候,这个系统取个什么名字,颇费一番脑筋,好的创意一定得有相配的名字。七巧板的想法就是给一个软件系统一个充分大的"基",在这个"基"的基础上允许你进行符合规则的构造。软件功能的组合构造是一个十分有趣的问题,首先你必须提供组合构造的基础,其次你必须制定组合构造的规则,然后你必须给出参与组合的成员元素之间的调度、交互方案。
HTML模型是一个很有趣的例子,通过提供一组控件,你就可以构造多彩的页面了,最早我就是通过驱动HTML的扩展接口来实现HTML模型与MFC、ATL等框架对接的,典型的做法是,设计一个IDispatch对象IExtDisp,这个对象能够访问你的对象模型,然后再想办法将这个对象与HTML模型绑定,MSHTML库提供了这个机制。通过如上的处理,你可以在你的HTML页面中调用你的对象指令系统,一个典型的例子就是Visual Studio .NET的代码向导(Wizard)的实现。尽管HTML指令可以扩展,但却不是一个好的选择,我最终将HTML作为一个更大的"基"的一个成员来对待,之所以如此,是因为HTML的表现力还嫌不足,因为毕竟这些东西不是程序或者不像程序。早期使用Delphi时,VCL中有一类Frame对象给我留下很好的印象,从形式上看,一个CFrameWnd与Delphi的Frame很像,但不是。一般来说,Delphi的对象是编译前的,也就是说,(绝大多数)Delphi等系统的对象要经过编译后才能使用,因此选择Delphi为Tangram主体构造的可行性被排除了(事实上Delphi一样可行,因为Delphi支持RTTI)。构造Tangram的时候,就想到要支持Delphi的Frame对象(现在实现的Tangram系统可以支持Delphi/BCB的ActiveForm)。最终选定MFC作为Tangram的底层基础是因为MFC更好的支持RTTI(运行时类信息),以及MFC有灵活的存储机制(MFC的存储机制简陋但不失为强大!)。
让我们看一个较为复杂的Frame窗体:
(一个合成的Frame窗口)
上面的窗体是由一个.NET Control、二个UserForm以及一个MFC View合成,Frame框架是由二个Splitter以及一个Excel风格的TabWnd构成。软件的组合系指:先完成Frame框架,然后将上述对象(一个.NET Control、二个UserForm以及一个MFC View)"安装"上去,构架的格局可能有多种,如果一个程序没有内置设计引擎,程序员就辛苦了,用户的定制能力也就极大地被限制了,Tangram的设计目标就是保证这一切可以"可视化"地完成!而且完成得足够专业。一般来说,HTML不能满足程序员的要求,而程序员又无法或很难具备HTML的灵活性,在这方面,Tangram给出一个折中的方案:具备HTML的可设计、编辑性,有具有程序界面的视觉。传统的程序,由于被操作的对象大多驻留在程序内部,因此,可设计性被极大地限制了,Tangram立足于提供一个足够广泛的"软件对象基",使得可设计性成为事实,如果MFC View、ActiveX Ctrl/ActiveX Document、.NET Control、HTML、Flash等类型的元素成为一个超级"七巧板"中的原子成分,等待你的将是一个巨大无比、色彩斑斓的对象世界,掌握Tangram,你就控制了Microsoft的组件世界,你就拥有无限的连接能力..
(内置VBA后的Form对象)
(二次开发)
(Form设计)


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=337997


这篇关于Tangram与软件的组合构造的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/616400

相关文章

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

hdu4869(逆元+求组合数)

//输入n,m,n表示翻牌的次数,m表示牌的数目,求经过n次操作后共有几种状态#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#includ

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

免费也能高质量!2024年免费录屏软件深度对比评测

我公司因为客户覆盖面广的原因经常会开远程会议,有时候说的内容比较广需要引用多份的数据,我记录起来有一定难度,所以一般都用录屏工具来记录会议内容。这次我们来一起探索有什么免费录屏工具可以提高我们的工作效率吧。 1.福晰录屏大师 链接直达:https://www.foxitsoftware.cn/REC/  录屏软件录屏功能就是本职,这款录屏工具在录屏模式上提供了多种选项,可以选择屏幕录制、窗口

leetcode105 从前序与中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3/ \9 20/ \15 7   class Solution {public TreeNode buildTree(int[] pr

HomeBank:开源免费的个人财务管理软件

在个人财务管理领域,找到一个既免费又开源的解决方案并非易事。HomeBank&nbsp;正是这样一个项目,它不仅提供了强大的功能,还拥有一个活跃的社区,不断推动其发展和完善。 开源免费:HomeBank 是一个完全开源的项目,用户可以自由地使用、修改和分发。用户友好的界面:提供直观的图形用户界面,使得非技术用户也能轻松上手。数据导入支持:支持从 Quicken、Microsoft Money