【问题标题】:How to set methods when our class is not created?我们的类没有创建时如何设置方法?
【发布时间】:2010-12-17 06:35:45
【问题描述】:

你好 让我为你解释一下。我在一个大项目上工作,它有很多形式。我不希望它使用太多内存,所以我尝试在表单关闭时使用Action:=caFree 销毁表单并使用Application.CreateForm(TFrmX, FrmX) 创建它们,它工作正常。 此应用程序是多语言的,因此它从外部文件加载表单组件标题和文​​本。我别无选择,只能在每次创建表单时将文件加载到内存并替换字符串。如您所知,这会使表单创建速度变慢,但我不知道如何在运行时更改类本身,以便我在应用程序加载时替换标题和文本并简单地创建表单,这样应用程序就没有在创建表单时替换它们;像这样(只是一个例子,它不起作用!): TfrmX.Label1.Caption := 'sth'

我能做什么?

【问题讨论】:

标签: delphi class methods


【解决方案1】:

由于 Delphi 本地化实用程序相当简陋,您可能想看看http://dxgettext.po.dk。我们将它用于多个项目,效果很好!只需为您想要的每个翻译添加一个额外的纯文本文件即可。这也使用户可以非常轻松地进行自己的翻译。

【讨论】:

  • dxgettext 远不如 Delphi 本地化工具强大,而且更具侵入性。
【解决方案2】:

Delphi 支持国际化,我认为您最好看看已经可用的工具和技术,而不是尝试提出自己的机制。

看看 Bruce McGee 对这个问题的回答...这是一个好的开始。

Delphi and i18n

如果您确实想继续推出自己的解决方案,那么我倾向于在创建后简单地在实例上设置您的文本属性。

【讨论】:

    【解决方案3】:

    这是无法做到的。您给出的类似代码只能在实例上运行,而不能在类引用上运行。

    【讨论】:

    • @Javid 创建实例并更改其属性
    • @Javid 或使用适当的国际化
    • @Javid 对不起,术语是错误的,我当然应该说本地化。
    • @Javid 欢迎您。请注意,感谢我(和其他人)的最佳方式是投票选出一些答案并接受最能回答您问题的答案!
    猜你喜欢
    • 2013-05-30
    • 2021-08-20
    • 1970-01-01
    • 2017-05-26
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 2018-05-08
    相关资源
    最近更新 更多