⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 009.htm

📁 Delphi基础知识讲座
💻 HTM
📖 第 1 页 / 共 3 页
字号:
face="宋体" lang="ZH-CN">的后代。</font></p>
<p><font face="宋体" lang="ZH-CN">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用</font>F1<font
face="宋体" lang="ZH-CN">查阅窗体的在线帮助时,您会发现</font>TForm<font
face="宋体" lang="ZH-CN">被称为</font>component(<font face="宋体" lang="ZH-CN">部件</font>)<font
face="宋体" lang="ZH-CN">。这是因为所有的部件都是对象。</font></p>
<p><font face="宋体" lang="ZH-CN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在这个结构中所有的部件都是对象。部件类型</font>TComponent<font
face="宋体" lang="ZH-CN">从</font>TObject<font face="宋体" lang="ZH-CN">类型中继承数据和程序代码,并具有额外的可以用作特殊用途的属性、方法、事件,所以部件可以直接和用户打交道,记录它的状态并存贮到文件中等等。控制类型</font>TControl<font
face="宋体" lang="ZH-CN">从</font>TComponent<font face="宋体" lang="ZH-CN">中继承而来,又增加了新的功能,如它可以显示一个对象。在上图中,虽然</font>TCheckBox<font
face="宋体" lang="ZH-CN">不是直接由</font>TObject<font face="宋体" lang="ZH-CN">继承来的,但是它仍然有任何对象所拥有的属性,因为在</font>VCL<font
face="宋体" lang="ZH-CN">结构中,</font>TCheckBox<font face="宋体" lang="ZH-CN">终究还是从</font>TObject
<font face="宋体" lang="ZH-CN">中继承了所有功能的特殊对象,但它还有些自行定义的独到的功能,如可以选择记录状态等。 </p>
</font><p>2.2.3 <font face="宋体" lang="ZH-CN">对象的范围 </p>
</font><p>2.2.3.1 <font face="宋体" lang="ZH-CN">关于对象的范围 </p>
</font><p><font face="宋体" lang="ZH-CN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个对象的范围决定了它的数据域、属性值、方法的活动范围和访问范围。在一个对象的说明部分说明的数据域、属性值、方法都只是在这个对象的范围中,而且只有这个对象和它的后代才能拥有它们。虽然这些方法的实际程序代码可能是在这个对象之外的程序库单元中,但这些方法仍然在这个对象的范围内,因为它们是在这个对象的说明部分中说明的。</font></p>
<p><font face="宋体" lang="ZH-CN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当您在一个对象的事件处理过程中编写程序代码来访问这个对象的属性值、方法或域时,您不需要在这些标识符之前加上这个对象变量的名称。例如,如果您在一个新窗体上加入一个按钮和一个编辑框,并为这个按钮编写</font>OnClick<font
face="宋体" lang="ZH-CN">事件处理过程: </font></p>
<p>procedure TForm1.Button1Click(Sender:Tobject);</p>
<p>begin</p>
<p>Color :=clFuchsia;</p>
<p>Edit1.Color :=clLime;</p>
<p>end;  </p>
<p><font face="宋体" lang="ZH-CN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其中的第一行语句是为整个窗体</font>Form1<font
face="宋体" lang="ZH-CN">着色。您也可以编写如下:</p>
<p> </font></p>
<p>Form1.Color :=clFuchsia; </p>
<p><font face="宋体" lang="ZH-CN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但您可以不必加上</font>Form1.<font
face="宋体" lang="ZH-CN">,因为</font>Button1Click<font face="宋体" lang="ZH-CN">方法是在</font>TForm1<font
face="宋体" lang="ZH-CN">对象的范围里。当您在一个对象的范围中时,您可以省略所有这个对象中的属性值、方法、域之前的对象标识符。但是当您编写第二个语句改变编辑框的底色时,因为此时您想访问的是</font>TEdit1<font
face="宋体" lang="ZH-CN">对象的</font>Color<font face="宋体" lang="ZH-CN">属性,而不是</font>TForm1<font
face="宋体" lang="ZH-CN">类型的,所以您需要通过在属性前面加上编辑框的名称来指明</font>Color<font
face="宋体" lang="ZH-CN">属性值的范围。如果不指明,</font>Delphi<font
face="宋体" lang="ZH-CN">会象第一个语句一样,将窗体的颜色变成绿色。因为</font>Edit1<font
face="宋体" lang="ZH-CN">部件是在窗体中的,它是窗体的一个数据域,所以您同样不必指明其从属关系。</font></p>
<p><font face="宋体" lang="ZH-CN">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果</font>Edit1<font
face="宋体" lang="ZH-CN">是在其他窗体中,那么您需要在编辑框之前加上这个船体对象的名称了。例如,如果</font>Edit1<font
face="宋体" lang="ZH-CN">是在</font>Form2<font face="宋体" lang="ZH-CN">之中,那它是</font>Form2<font
face="宋体" lang="ZH-CN">说明的一个数据域,并位于</font>Form2<font
face="宋体" lang="ZH-CN">的范围中,那么您需要将第二句改为: </p>
</font><p>Form2.Edit1.Color := clLime; </p>
<p><font face="宋体" lang="ZH-CN">而且需要把</font>Unit2<font face="宋体"
lang="ZH-CN">加入</font>Unit1<font face="宋体" lang="ZH-CN">的</font>uses<font
face="宋体" lang="ZH-CN">子句中。</font></p>
<p><font face="宋体" lang="ZH-CN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个对象的范围扩展到这个对象的所有后代。</font>TForm<font
face="宋体" lang="ZH-CN">的所有属性值、方法和事件都在</font>TForm1<font
face="宋体" lang="ZH-CN">的范围中,因为</font>TForm1<font face="宋体"
lang="ZH-CN">是</font>TForm<font face="宋体" lang="ZH-CN">的后代。您的应用程序不能说明和祖先的数据域重名的类型、变量等。如果</font>Delphi<font
face="宋体" lang="ZH-CN">显示了一个标识符被重复定义的信息,就有可能是一个数据域和其祖先对象</font>(<font
face="宋体" lang="ZH-CN">例如</font>TForm)<font face="宋体" lang="ZH-CN">的一个数据域有了相同的名称。可以尝试改变这个标识符的名称。 </p>
</font><p>2.2.3.2 <font face="宋体" lang="ZH-CN">重载一个方法 </p>
</font><p><font face="宋体" lang="ZH-CN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 您可以重载</font>(Override)<font
face="宋体" lang="ZH-CN">一个方法。通过在后代对象中说明一个与祖先对象重名的方法,就可以重载一个方法。如果想使这个方法在后代对象中作和祖先对象中一样的工作但是使用不同的方式时,您就可以重载这个方法。</font>Delphi<font
face="宋体" lang="ZH-CN">不推荐您经常重载方法,除非您想建立一个新的部件。重载一个方法,</font>Delphi<font
face="宋体" lang="ZH-CN">编译器不会给出错误或警告提示信息。</p>
</font><p>2.2.4 <font face="宋体" lang="ZH-CN">对象公有域和私有域的说明 </p>
</font><p><font face="宋体" lang="ZH-CN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当使用</font>Delphi<font face="宋体"
lang="ZH-CN">的环境来建立应用程序时,您可以在一个</font>TForm<font
face="宋体" lang="ZH-CN">的后代对象中加入数据域和方法,也可以通过直接修改对象类型说明的方法来为一个对象加上域和方法,而不是把一个部件加入窗体或事件处理过程中。</font></p>
<p><font face="宋体" lang="ZH-CN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 您可以在对象的</font>Public<font
face="宋体" lang="ZH-CN">或</font>Private<font face="宋体" lang="ZH-CN">部分加入新的数据域和方法。</font>Public<font
face="宋体" lang="ZH-CN">和</font>Private<font face="宋体" lang="ZH-CN">是</font>Object
Pascal<font face="宋体" lang="ZH-CN">的保留字。当您在工程中加入新的窗体时,</font>Delphi<font
face="宋体" lang="ZH-CN">开始建立这个新窗体对象。每一个新的对象都包含</font>public<font
face="宋体" lang="ZH-CN">和</font>private<font face="宋体" lang="ZH-CN">指示,以便您在代码中加入数据域和方法。在</font>public<font
face="宋体" lang="ZH-CN">部分中说明其它库单元中对象的方法也可以访问的数据域或方法。在</font>private<font
face="宋体" lang="ZH-CN">部分的说明有访问的限制。如果您在</font>private<font
face="宋体" lang="ZH-CN">中说明域和方法,那么它在说明这个对象的库单元外是不透明的,而且不能被访问。</font>private<font
face="宋体" lang="ZH-CN">中可以说明只能被本库单元方法访问的数据域和本库单元对象访问的方法。过程或函数的程序代码可以放在库单元的</font>implementation<font
face="宋体" lang="ZH-CN">部分。 </p>
</font><p>2.2.5 <font face="宋体" lang="ZH-CN">访问对象的域和方法 </p>
</font><p><font face="宋体" lang="ZH-CN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当您想要改变一个窗体对象的一个域的某个属性,或是调用它的一个方法时,您必须在这个属性名称或调用方法之前加上这个对象的名称。例如,如果您的窗体上有一个编辑框部件,而您需要在运行中改变它的</font>Text<font
face="宋体" lang="ZH-CN">属性,需要编写下列的代码: </p>
</font><p>Edit1.Text := 'Welcome to Delphi'; </p>
<p><font face="宋体" lang="ZH-CN">同样,清除编辑框部件中选中的文本,可以调用</font>TEdit<font
face="宋体" lang="ZH-CN">部件的相应方法: </p>
</font><p>Edit1.ClearSelection; </p>
<p><font face="宋体" lang="ZH-CN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果您想改变一个窗体对象中一个对象域的多个属性或调用多个方法时,使用</font>with<font
face="宋体" lang="ZH-CN">语句可以简化您的程序。</font>with<font face="宋体"
lang="ZH-CN">语句在对象中可以和在记录中一样方便地使用。下面的事件处理过程在响应</font>OnClick<font
face="宋体" lang="ZH-CN">事件时,会对一个列表框作多个调整: </p>
</font><p>procedure TForm1.Button1Click(Sender:TObject); </p>
<p>begin</p>
<p>ListBox1.Clear;</p>
<p>ListBox1.MultiSelect :=True;</p>
<p>ListBox1.Item.Add('One');</p>
<p>ListBox1.Item.Add('Two');</p>
<p>ListBox1.Item.Add('Three');</p>
<p>ListBox1.Sorted :=Ture;</p>
<p>ListBox1.FontStyle :=[fsBold];</p>
<p>ListBox1.Font.Color :=clPurple;</p>
<p>ListBox1.Font.Name :='Times New Roman';</p>
<p>ListBox1.ScaleBy(125,100);</p>
<p>end; </p>
<p><font face="宋体" lang="ZH-CN">如果使用了</font>With<font face="宋体"
lang="ZH-CN">语句,则程序如下: </p>
</font><p>procedure TForm1.Button1Click(Sender:TObject); </p>
<p>begin</p>
<p>with (ListBox1) do</p>
<p>begin</p>
<p>Clear;</p>
<p>MultiSelect :=True;</p>
<p>Item.Add('One');</p>
<p>Item.Add('Two');</p>
<p>Item.Add('Three');</p>
<p>Sorted :=Ture;</p>
<p>FontStyle :=[fsBold];</p>
<p>Font.Color :=clPurple;</p>
<p>Font.Name :='Times New Roman';</p>
<p>ScaleBy(125,100);</p>
<p>end;</p>
<p>end; </p>
<p><font face="宋体" lang="ZH-CN">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用</font>with<font
face="宋体" lang="ZH-CN">语句,您不必在每一个属性或方法前加上</font>ListBox1<font
face="宋体" lang="ZH-CN">标识符,在</font>With<font face="宋体" lang="ZH-CN">语句之内,所有的属性或调用方法对于</font>ListBox<font
face="宋体" lang="ZH-CN">这个对象而言都是在它的范围内的。 </p>
</font><p>2.2.6 <font face="宋体" lang="ZH-CN">对象变量的赋值 </p>
</font><p><font face="宋体" lang="ZH-CN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果两个变量类型相同或兼容,您可以把其中一个对象变量赋给另一个对象变量。例如,对象</font>TForm1<font
face="宋体" lang="ZH-CN">和</font>TForm2<font face="宋体" lang="ZH-CN">都是从</font>TForm<font
face="宋体" lang="ZH-CN">继承下来的类型,而且</font>Form1<font face="宋体"
lang="ZH-CN">和</font>Form2<font face="宋体" lang="ZH-CN">已被说明过,那么您可以把</font>Form1<font
face="宋体" lang="ZH-CN">赋给</font>Form2:</p>
<p>Form2 :=Form1;</p>
<p><font face="宋体" lang="ZH-CN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 只要赋值的对象变量是被赋值的对象变量的祖先类型,您就可以将一个对象变量赋给另一个对象变量。例如,下面是一个</font>TDataForm<font
face="宋体" lang="ZH-CN">的类型说明,在变量说明部分一共说明了两个变量:</font>AForm<font
face="宋体" lang="ZH-CN">和</font>DataForm<font face="宋体" lang="ZH-CN">。 </p>
</font><p>type</p>
<p>TDataForm = class(TForm)</p>
<p>Button1:TButton;</p>
<p>Edit1:TEdit;</p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -