CnPack Forum


 
Subject: 我是一名新手程序员!请各位大大多多照顾!
piaolingfeihu
新警察
Rank: 1



UID 21233
Digest Posts 0
Credits 39
Posts 15
点点分 39
Reading Access 10
Registered 2007-7-26
Status Offline
Post at 2007-7-26 14:09  Profile | Blog | P.M. 
我是一名新手程序员!请各位大大多多照顾!

出来乍到,我从网上看到了CnPack这个控件,然后下载并且试用,感觉很好用,而且想得也非常周全。小弟我也试着做了一个多语言的单元,但是很缺乏完善!
1、不能够遍历窗体界面上的所有组件!(因为我写的Writeinifile这个函数中的类的数量还是有限的,致使一些扩展类,当使用控件假如BS控件:我在函数中添加的一般是这样的类:TBsSkinSpeedButton,TBsSkinLabel等),所以我的写Ini文件函数,不能够遍历所有的组件,并且将其Caption或者其他的可显示信息以自己的方式写到ini文件中!
2、读函数和写函数问题类似,也是这样的情况!
请各位大大,指教一下,应该怎么样去添加相应的类,才能做出像CnPack那样能够遍历所有组件包括,第三方控件!
小弟先在这儿谢过了!
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6760
Posts 3556
点点分 6760
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-7-26 15:56  Profile | Blog | P.M. 
遍历的代码在cnpack\Source\MultiLang\CnLangMgr中。
TCnCustomLangManager的几个方法:

TranslateRecurComponent 递归搜索Component和其子Component
TranslateRecurObject 递归搜索其属性中的Object
Top
piaolingfeihu
新警察
Rank: 1



UID 21233
Digest Posts 0
Credits 39
Posts 15
点点分 39
Reading Access 10
Registered 2007-7-26
Status Offline
Post at 2007-7-27 09:53  Profile | Blog | P.M. 
谢谢您

我看了一下那些代码!好多地方我还是不很懂,我才学了不多两个月,有些地方没有接触过!感觉关联性很强,好多的函数定义相互才实现这样的功能?还是有单独的几个函数就能够实现那?
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6760
Posts 3556
点点分 6760
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-7-27 10:28  Profile | Blog | P.M. 
一个类里头的代码本来就是互相关联的。我说的是看这两函数的实现思想,包括循环遍历,防止重复的机制等。
代码要拿来在你的程序里头用自然得稍微改改,不是完全现成的。
Top
piaolingfeihu
新警察
Rank: 1



UID 21233
Digest Posts 0
Credits 39
Posts 15
点点分 39
Reading Access 10
Registered 2007-7-26
Status Offline
Post at 2007-8-20 15:15  Profile | Blog | P.M. 
搞定!

谢谢!
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6760
Posts 3556
点点分 6760
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-8-20 16:16  Profile | Blog | P.M. 
不错,学习能力值得肯定。
Top
piaolingfeihu
新警察
Rank: 1



UID 21233
Digest Posts 0
Credits 39
Posts 15
点点分 39
Reading Access 10
Registered 2007-7-26
Status Offline
Post at 2007-8-21 09:22  Profile | Blog | P.M. 
谢谢

我已经仿照cnpack实现了多语言!
对您表示感谢!
Top
goodcyg
新警察
Rank: 1



UID 29882
Digest Posts 0
Credits 14
Posts 6
点点分 14
Reading Access 10
Registered 2007-10-29
Status Offline
Post at 2007-10-29 14:28  Profile | Blog | P.M. 
我做了个MultiLang咋不行呢?

我看了cnpack多语言设计,觉得设计的很好,想做demo试试,咋不行呢?我也看了它的使用说明?

新增窗体时,窗体必须继承自CnWizTranslate单元中的TCnTranslateForm。然后再生成整个窗体的翻译字符串,添加入Lang目录下的多语文件中。
最好在所有功能完成、窗体控件以及文字都确定以后再来实现多语,免得更新的时候因为可能潜在的bug而发生丢失字符串或错位的情况。:=)
生成翻译字符串的步骤如下:
在控件都放置好后,拖一个CnHashLangFileStorage到窗体上,设置其LanguagePath为一临时目录,用来存放临时生成的多语文件。
拖一CnLangManager到窗体上,把LangStorage属性设置成CnHashLangFileStorage1。
编辑CnHashLangFileStorage1的Languages属性,增加一种语言。因为需要的只是目标字符串,所以一种语言足够,而且LangID随便设置。
拖一CnTranslator到窗体上,双击。在弹出的窗体中左边选中该语言,点击生成按钮,右面会生成字符串,点击复制按钮以生成完整的带翻译值的字符串,点保存按钮。
在LanguagePath的临时目录中找到该语言文件,打开,复制,剩下的工作就是翻译后加入Lang目录下的多语文件中。

新增资源字符串按下列三步走:
第一,在CnWizConst单元里头加入这个字符串变量。
第二,在WizTranslate翻译单元里头加上这个字符串变量的翻译赋值语句。
第三,在各个语言文件里头加上新字符串的翻译条目。
是咋回事?
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6760
Posts 3556
点点分 6760
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-10-29 15:37  Profile | Blog | P.M. 
楼上的问题已新开贴讨论。
Top
 




All times are GMT++8, the time now is 2024-5-5 05:20

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.007792 second(s), 8 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP