• VCL组件之Name属性


    Name属性

    Name属性在组件中占重要地位。在前面已经讨论了,在窗体上安放组件时会发生什么。当组件被安放在窗体上,同时考虑下一步动作的同时,Delphi就已经在幕后工作了。Delphi做的一件事是建立指向组件的指针,指定Name属性为变量名。例如把Edit组件安放到窗体上,改变Name属性为MyEdit。此时Delphi把下面的句子安放在窗体的类说明中(public),如下图:

    0174

    当应用程序运行时,Delphi建立TEdit类的实例,并指定为MyEdit。可用此指针在运行时存取组件。要设置编辑控件的文本,用

      MyEdit.Text := 'Hello, World';

    Delphi在建立事件处理程序名称时也要用到Name属性。假设要响应Edit组件的OnChange事件。通常情况,在Object Inspector中双击Value栏目,使Delphi紧接着OnChange事件,产生事件处理程序。Delphi基于组件的Name属性,建立缺省函数,事件被处理了。此时Delphi生成了叫做MyEditChange的函数,如下:

    0175

    如果通过Object Inspector改变Name属性,可随时改变它。当在设计阶段改变组件的Name属性时,Delphi遍历它以前生成的代码,并改变指针及所有事件处理函数的名称。

    Note

    Delphi会改变它生成的代码来反映组件的Name属性的新值,但它不会改变用户写的代码。换句话说,Delphi负责改变它写的代码,要由用户自己负责更新并维持自己写的代码。一般来说,在最初安放组件于窗体上时要设置Name属性并保留在那里。后来再改变名称没有问题,只是会增加工作量。

    继续上面的例子,如果将编辑控件的Name属性由MyEdit更改为FirstName后,Delphi会改变指针名为FirstName,OnChange事件会自动改变为FirstNameChange。这都自动完成,不需要做什么。只要改变了Name属性,相信Delphi会做其余的工作。

    Caution

    不要再运行阶段改变Name属性。不要手工改变组件名称(Delphi指定给组件指针的名称)或Code Editor中的事件处理程序的名称。如果执行这些动作之一,Delphi会失去组件的跟踪,至少结果是不好的。甚至会失去装入窗体的能力。改变Name属性的唯一安全方式是通过Object Inspector。

    Delphi对安放在窗体上所有组件赋给Name属性的缺省值。例如安放Edit组件,Delphi会自动把Edit1赋给Name属性。放第二个Edit组件,Delphi把Edit2赋给Name属性等。为了避免混乱和以后额外的工作,应尽可能给组件有意义的名称。

    Note

    如果组件在代码中不会用到,那么就可以用Delphi的缺省名称。例如,有几个标号组件(Label)包含静态文本,可保留其缺省名称,因为在运行阶段不会存取这些组件。

  • 相关阅读:
    这些 Drawable 的小技巧,你都了解吗?
    Android 软键盘的显示和隐藏,这样操作就对了
    在 ReactNative 的 App 中,集成 Bugly 你会遇到的一些坑
    聊聊 Material Design 里,阴影的那些事儿!
    PAT 1069 1070 1071 1072
    PAT1021 Deepest Root
    关于素数:求不超过n的素数,素数的判定(Miller Rabin 测试)
    PAT《数据结构学习与实验指导》实验项目集 2-05 2-06 2-07 2-08
    LeetCode:Gas Station
    LeetCode:Candy
  • 原文地址:https://www.cnblogs.com/pchmonster/p/2325965.html
Copyright © 2020-2023  润新知