改造TMS的HTMLTreeView

自己的IM工具中需要好友列表的管理控件,使用TMS的HTMLTreeView可以很容易的实现像MSN那样的效果。可惜HTMLTreeView不支持多语言。看看源代码,发现他是从 TCustomTreeView继承下来的,于是很自然的加上 TNTComCtrls, 把父类改称了TTNTCustomTreeView,接下来就是把string类型的变量都改成WideString,把DrawTextEx等相关函数改成DrawTextExW。断断续续的折腾了一天,其中犯了两次错误:一是忘记把TTreeNode给替换成TTNTTreeNode,二是居然漏改了一个String,因为它导致我停顿了1个小时,还是老大站在局外的角度,一个搜索就找出了问题,汗!~~~

目前多语言显示是没有问题了。但仍存在两个不足:
1. 当字符串的长度大于控件的宽度时,鼠标指上去后,不能以Hint的形式自动提示出完整的字符串内容。标准TreeView和TNTTreeView都可以。
2. 当用户指定控件的字体时,比如使用非默认字体大小,将无法正确的获得字体高度,从而自动修改ItemHeight,需要在外部使用时,手工指定一下ItemHeight。我现在是通过DrawText来计算出高度的。估计这仍然是控件内部代码在使用Canvas计算高度时,Canvas.Font没有与控件自己的Font关联上,因为我在外部调用DrawText计算高度时,还需要自己手工将Canvas.Font关联到HTMLTreeView的Font才能得到正确结果。

把JVCL包装上了,看着眼睛花,估计得花不少时间来熟悉。由于我曾经安装过老版本的JCL,所以新版本的JVCL时,总是报错,找不到文件,启动Delphi7,也说找不到bpl。于是Uninstall一遍所有的JCL,然后再Delphi的Install Packages中Remove所有的JCL引用。再安装,正常了。其间还发生了JVCL和Video组件同时引用VFW的冲突,将Video控件卸载,OK了。

接下来的工作又要异常辛苦了,为IM规划新界面,将原来用于测试的IM代码重写,还要集成Sip,期限是三月底!

posted @ 2006-03-10 20:31  monkeyking  阅读(679)  评论(0编辑  收藏  举报