大多数grunt工作可以通过替换DFM文件中的文本(组件类型和属性)来完成 – 保存为文本当然。
我已经搜索Stackoverflow和谷歌和我现在调整Felix Colibri DFM解析器从http://www.felix-colibri.com/papers/colibri_utilities/dfm_parser/dfm_parser.html
我在DFM文件中遇到了解析器阻塞的“特性”:[number] s在类型规范之后,如下所示:
inherited DialoogEditAgenda: TDialoogEditAgenda ActiveControl = PlanCalendar Caption = 'Agenda' [snip] inherited Panelbuttons: TRzPanel top = 537 [snip] inherited buttonCancel: TRzBitBtn [0] <== *here* left = 852 [snip] end object CheckBoxBeschikbaarheID: TRzCheckBox [1] <== *here* left = 8 [snip] end inherited buttonOK: TRzBitBtn [2] <== *here* left = 900 [snip] end end inherited PageControl: TRzPageControl left = 444 [snip] end object PanelBeschikbaarheID: TRzSizePanel [2] <== *here* left = 967 [snip] end object PanelScheduler: TRzPanel [3] <== *here* left = 23 top = 22 [...]
许多这些DFM是严重继承的(我不得不改编Colibri的代码已经),但一个小的测试应用程序继承无法生成DFM中的[数字]。
我的问题之前不必扩展解析器代码:有谁知道这些[数字]从哪里来,因此,我可以在解析DFM文件之前删除它们吗?
谢谢
Jan
解决方法 这些数字并不完全无用。假设你有TA,TB和TC类,TB和TC都来自TA。 DFM看起来像:object A: TA object X: TX endendinherited B: TB object Y: TY endendinherited C: TC object Y: TY [0] end inherited X: TX [1] endend
B和C的不同之处在于它们的X和Y子组分的顺序相反。子组件顺序的确切含义取决于组件(见下文),但最显着的是,如果它们是TWinControl后代,或者它们都是不是从TWinControl派生的TControl后代,这意味着它们在X是否显示在Y ,或Y在X上。
删除这些数字可能会改变形式,所以你不应该盲目地做。但是,根据您的目标,您可以修改解析器(源代码似乎可用),以便跳过数字。
组件的相对顺序通常通常不重要,但是有一些例外。更详细地解释:
对于正常控件,子组件开始于(1)不从TWinControl派生的TControl子体,然后(2)TWinControl子体,最后(3)任何非TControl组件。在每个组件中,组件的相对顺序是可调的:对于控件,“Bring to front”和“Send to back”尽可能远地移动控件,限制是非TWinControl永远不能放在TWinControl。对于非控件,(略有误称)“创建订单”选项允许您更改订单。所以,假设你有两个标签(A和B),两个编辑控件(C和D),一个数据集和数据源(E和F),你可以得到的顺序是例如ABCDEF,BACDEF,ABDCFE ,但不是ACBDEF。
保存到DFM文件时保留该顺序:当不使用可视继承时,组件只是按顺序保存和重新加载。当你使用继承时,DFM文件得到处理基地派生,所以在上面的情况下,当创建TC时,它的X成员总是在它的Y成员之前创建。需要[0]和[1]来告诉Delphi RTL修正顺序,在那些组件顺序很重要的情况下。
组件顺序实际上取决于组件类型。由于“带到前面”/“发送回”名称建议,控件使用组件顺序指定Z顺序。对于其他组件类型,它意味着组件想要的意思。例如,菜单可以使用组件顺序来指定其菜单项的顺序(从上到下)。工具栏控件可以使用组件顺序来指定工具栏按钮的顺序,即使这些工具栏按钮本身不是控件。数据集使用组件顺序来指定字段顺序,从而也指定TDBGrID中列的默认顺序。
总结以上是内存溢出为你收集整理的Delphi DFM文件中的奇怪[数字] – 起源和必要性?全部内容,希望文章能够帮你解决Delphi DFM文件中的奇怪[数字] – 起源和必要性?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)