Delphi面向对象的编程方法(七)
2008-02-23 07:17:34来源:互联网 阅读 ()
2.2.5 访问对象的域和方法
当您想要改变一个窗体对象的一个域的某个属性,或是调用它的一个方法时,您必须在这个属性名称或调用方法之前加上这个对象的名称。例如,如果您的窗体上有一个编辑框部件,而您需要在运行中改变它的Text属性,需要编写下列的代码:
Edit1.Text := 'Welcome to Delphi';
同样,清除编辑框部件中选中的文本,可以调用TEdit部件的相应方法:
Edit1.ClearSelection;
如果您想改变一个窗体对象中一个对象域的多个属性或调用多个方法时,使用with语句可以简化您的程序。with语句在对象中可以和在记录中一样方便地使用。下面的事件处理过程在响应OnClick事件时,会对一个列表框作多个调整:
procedure TForm1.Button1Click(Sender:TObject);
begin
ListBox1.Clear;
ListBox1.MultiSelect :=True;
ListBox1.Item.Add('One');
ListBox1.Item.Add('Two');
ListBox1.Item.Add('Three');
ListBox1.Sorted :=Ture;
ListBox1.FontStyle :=[fsBold];
ListBox1.Font.Color :=clPurple;
ListBox1.Font.Name :='Times New Roman';
ListBox1.ScaleBy(125,100);
end;
如果使用了With语句,则程序如下:
procedure TForm1.Button1Click(Sender:TObject);
begin
with (ListBox1) do
begin
Clear;
MultiSelect :=True;
Item.Add('One');
Item.Add('Two');
Item.Add('Three');
Sorted :=Ture;
FontStyle :=[fsBold];
Font.Color :=clPurple;
Font.Name :='Times New Roman';
ScaleBy(125,100);
end;
end;
使用with语句,您不必在每一个属性或方法前加上ListBox1标识符,在With语句之内,所有的属性或调用方法对于ListBox这个对象而言都是在它的范围内的。
2.2.6 对象变量的赋值
如果两个变量类型相同或兼容,您可以把其中一个对象变量赋给另一个对象变量。例如,对象TForm1和TForm2都是从TForm继承下来的类型,而且Form1和Form2已被说明过,那么您可以把Form1赋给Form2:
Form2 :=Form1;
只要赋值的对象变量是被赋值的对象变量的祖先类型,您就可以将一个对象变量赋给另一个对象变量。例如,下面是一个TDataForm的类型说明,在变量说明部分一共说明了两个变量:AForm和DataForm。
type
TDataForm = class(TForm)
Button1:TButton;
Edit1:TEdit;
DataGrid1:TDataGrid;
Database1:TDatabase;
TableSet1:TTableSet;
VisibleSession1:TVisibleSession;
private
{私有域说明}
public
{公有域说明}
end;
var
AForm:TForm;
DataForm:TDataForm;
因为TDataForm是TForm类型的后代,所以Dataform是AForm的后代,因此下面的赋值语句是合法的:
AForm :=DataForm;
这一点在Delphi中是极为重要的。让我们来看一下应用程序调用事件处理过程的过程,下面是一个按钮部件的OnClick事件处理过程:
procedure TForm1.Button1Click(Sender:TObject);
begin
end;
您可以看到TObject类在Delphi的Visual Component Library的顶部,这就意味着所有的Delphi对象都是TObject的后代。因为Sender是TObject类型,所以任何对象都可以赋值给它。虽然您没有看见赋值的程序代码,但事实上发生事件的部件或控制部件已经赋给Sender了,这就是说Sender的值是响应发生事件的部件或控制部件的。
您可以使用保留字is来测试Sender以便找到调用这个事件处理过程的部件或控制部件的类型。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash