Ju (BB is the future, The future is BB)

知荣知辱牢缄口,谁是谁非暗点头,代码丛里且淹留,闲袖手,贫煞也风流。

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  9 随笔 :: 0 文章 :: 72 评论 :: 0 引用

贴了两个截图在下面

不打算做成象Bindows那样整个成体系的

打算做成一套东西,但可以根据需要有选择性地组合,
毕竟WEB开发的界面需求太复杂,估计很少会有象ProcessBuilder那样的应用
因此XHTC里的ToolBar,Menu,TreeView,ListView等等都是可以单独使用的
会定义一些事件,可以选择事件触发时使用自定义的处理方式

XHTC的宗旨应该是:效率优先,力求方便,不失界面效果

目前核心的那个JS文件有15K,不过使用时可以去掉没有使用的组件对应的代码
各个HTC文件都很小,一般都在2-3K左右

可能有人会问,为什么HTC文件这么小,是因为在一般做法中放在HTC中的很多代码都移到了核心JS中

为什么要这么做呢,有两个原因:

第一个原因是最重要的,因为当页面中使用了同一类型的多个HTC时,会装载多次,
尤其象ProcessBuilder这样的应用,会有很多菜单,这样一来很多其实都是同样的代码
也会装载多次,效率不行。因此HTC中基本上只保留必须的方法、属性和事件定义,
公共代码部分都移到了核心JS中,JS只需要装载一次

第二个原因是考虑到可能的版本问题,虽然目前没有考虑IE5.5以下版本,但如果考虑的话,
当使用非Viewlink方式的element behavior或者attached behavior时,也可以使用这些代码
这个原因不重要,估计以后用户都会是IE6.0以上吧

HTC还是不适合完全按照类似Delphi的VCL那样进行设计,比如ToolButton,MenuItem之类的
绝对不能设计成一个HTC,因为HTC不能象JS那样只装载一次,同类型的也不行,不知道MS
这么做是处于什么考虑?是为了支持动态改变HTC的内容?

不知道有没有朋友知道如何让同一页面中多个同类型的HTC只装载一次,有的话一定要告诉我一生

如果这个特性可以被支持,那可就爽了,就和写VCL组件差不多了,会方便和好用很多的

为了可以方便地在运行期间使用JS来动态维护各组件的数据内容,
目前只能是HTC结合JS对象来做,不过还算方便

JS真是个好东西,可千万别因为只是个WEB中的脚本语言而小看了他
以前我用的不深的时候也觉得没什么,最近越来越觉得JS不简单了
尤其是prototype和call,apply,eval等方法

举个例子,大家知道如何在JS中实现对象继承吗?
我以前还以为做不到,以前看的讲JS的书上都说是不支持的,
最近看Bindows那接近100K的JS代码才搞明白

不过private,protected这些是不支持的,HTC倒算支持private



这两图的效果是通过点击“工具”下面的那个按钮实现Theme切换的
页面的布局是由使用者自行设计的,不象Bindows那样定义left,top,width,height,right,bottom之类的
现在XHTC还不考虑Bindows那样的方式
posted on 2004-11-19 06:58 Ju 阅读(876) 评论(9)  编辑 收藏 网摘 所属分类: 技术

评论

#1楼 [楼主] 2004-11-19 07:21 Ju      
TreeView正在整理
原来用的是DIV,发现用DIV不好,数据层次深了以后显示有问题
在我的浏览器里超出41层后就显示不出来了,而且层次一深后
节点的展开/缩回的时候效率不行

会改成用UL,LI的,测试过了,100多层都没问题,无论是显示和
效率都没问题

不过是不是太苛求了?
什么系统的数据会到41层吗?

记得原先最早的时候做HTML TreeView时图片用的背景图方式
代码比较好写,可展开缩回的时候总会沙漏图标闪一下,
虽然这应该是背景图的正常反应,可觉得不爽,
后来改成直接用IMG了

还有SPAN这个东西,也不好用,和图片放在一起的时候
对齐总有问题,5.5行了就6.0不对,6.0对了就5.5不行
那个vertical-align不知道IE是怎么实现的

还有disabled这个属性,IMG设置了以后如果图片显示能变灰并反相多好,
可就是不变,连鼠标事件还照样可用,那还叫disabled吗

还有那个popup,非得用popup中创建popup才能实现多个popup
共存,hide()的时候还没有事件通知,刚显示后鼠标不释放移上去
就只触发mouseover和mouseout,可就是不触发mouseup,
真是不爽

还有那个VML,那个group明明是就个元素了,可就算设置了block也
是自动更新width和height的,就算你设置了width和height为固定值
也没有用,总是根据group中的元素决定width和height,
移动内部元素时,只要超出原先的width或height,就自动计算,
然后就造成效率问题

不知道MS怎么搞的,总有地方让你不舒服

发了不少牢骚,舒服多了,哈哈

  回复  引用  查看    

那个右键快捷菜单可以伸出窗体外是如何实现的??不会是用popup吧?
有没计划做页框控件,让它可以随意居左居右居上居下的很酷啊!而且还要让页框里还可以包容其他控件!
  回复  引用    

#3楼  2004-11-19 08:55       
好东西,楼主加油,js的确是好东西。
  回复  引用  查看    

#4楼  2004-11-19 08:58 jiezhi [未注册用户]
一般用javascript,没有用jscript。

很期待你的htc
  回复  引用    

#5楼 [楼主] 2004-11-19 09:10 Ju      
to: 乱发吹风

菜单是popup做的
你说的页框控件应该也不难,到时候做一个

to: 阮

谢谢


to: jiezhi

我都不是搞得很清楚Javascript和JScript到底区别在哪里,呵呵
有时候我写成type是javascript,有时候是jscript,运行都一样
没有仔细去看到底哪些不同。
嗯,好像try catch(err)的时候有不同


其实我说的JS指的JavaScript多些




  回复  引用  查看    

#6楼  2004-11-19 12:19 宝玉 [未注册用户]
非常支持搂主的工作,我以前也有和搂主类似的想法,只是一直没行动,在这方面也有过一些思考,我也觉得用htc要比bindows这样的js类库要简洁的多!

据我的了解:即使是同类型的HTC,每次调用肯定会“加载”,但是不会每次都“下载”,而你把代码放在js中只是会在“下载”方面有所提高。
  回复  引用    

#7楼  2004-11-19 12:56 小李菜刀      
HTC只装载一次的问题在HTC中加入<PUBLIC:COMPONENT lightWeight="true">试试。
  回复  引用  查看    

#8楼 [楼主] 2004-11-20 13:02 Ju      
to 宝玉:

也许你说的是对的 :)
不过我发现把代码放在js后“加载”也快了一些
总之这样做了以后效果好多了

to 小李菜刀:

lightWeight只是指示浏览器HTC中的标记内容不需要render,
是会快一些,可很多HTC就是需要render HTC中的标记的,
因此这个属性是不能设置的

  回复  引用  查看    

#9楼  2006-01-27 07:50 nameless [未注册用户]
不错的东西.
总觉得做这种东西很烦琐,做出来了是感觉很好,很有成就感,做不出来就越做越烦,不想做下去了.
而些现成的功能方面又总是不太如意......
  回复  引用    





标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》

相关文章:

相关链接: