各位大哥,您好,希望看到小弟的求助都能够鼎力相助,小弟不胜感激!
     我最近作了一个多语言的小程序,是通过读取ini文件来实现的,但是当语言之间相互转换的时候比如:
1、从中文-english显示信息转化的过程中,由于界面上的组件的长度及宽度都是固定的,但是中文和英文转化是将出现长度不一致的问题,我想求助,能不能够有这方面的第三方控件,或者通过什么样的方式可以解决这样的问题。
2、对于label这样具有 autosize属性的就不用做什么处理,但是当遇到 Button\comboBox\以及其它的没有这个属性的组建应该怎么做处理?
3、我也试过用panel组件,在界面上作调整,但是效果并不理想!请各位指点!小弟先行谢过!

解决方案 »

  1.   

    在ini中每一项增加一个属性:最长字符串,声明combo中可能出现的最宽内容的字符串,在Form初始化的时候,根据字符串计算所需的像素数,用API GetTextExtentPoint32获取显示该字符串所需的宽度与高度,然后动态调整相应的控件。
      

  2.   

    谢谢rodgerkong ,我回头试验一下。
    至于后面两位,其实实现多语言有很多方法:
    1,可以使用第三方控件比如:CnPack,或者Sicomponent。都写有帮助文件,你们可以安装试一下!
    2,可以通过自己写函数,WriteToIni & ReadFromIni,使用reading&writestring函数,将组件的可显示信息以
    TComponent.Caption:=
    TComponent.hint=
    TComponent.text=
    等形式写道Ini文件中,然后再FormCreate的时候通过读ini实现,多语言的替换。从而达到多语言的效果。
    以上两种方法,第一种我试过,但是在牵涉到换行还有针对性地第三方控件有些不是太好使,所以我自己写了函数,我用的是第二种方法,希望能够对你们有所帮助!
    我的问题还在继续!
    如果想要源码,就给我联系,.我可以提供!大家共同提高!
      

  3.   

    作多语言请参考,支持Unicode,支持任意第3方元件。
    http://www.evget.com/zh-CN/products/category/0,107,0,0/default.aspx
    http://blog.csdn.net/acrodelphi/category/86286.aspx