Borland 基础与应用开发课程认证试题整理集三
- 摘要:试题61下列代码执行后,其正确的输出结果序列为:[考题]typeTA=classprocedureOne;virtual;procedureTwo;end;TAA=class(TA)procedureOne;override;procedureTwo;end;procedureTA.One;beginShowMessage('基类One');end;procedureTA.Two;beginShowMessage('基类Two');end;procedureTAA.One
- 标签:应用 开发 Borland 应用开发
试题61 下列代码执行后,其正确的输出结果序列为:[考题]
type
TA = class
procedure One; virtual;
procedure Two;
end;
TAA = class(TA)
procedure One; override;
procedure Two;
end;
procedure TA.One;
begin
ShowMessage('基类One');
end;
procedure TA.Two;
begin
ShowMessage('基类Two');
end;
procedure TAA.One;
begin
ShowMessage('派生类One');
end;
procedure TAA.Two;
begin
ShowMessage('派生类Two');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
fa: TA;
ca: TAA;
begin
Memo1.Clear;
fa := TA.Create;
ca := TAA.Create;
fa.One;
ca.One;
fa.Free;
ca.Free;
fa := TAA.Create;
fa.One; //重点考这里
fa.Two;
fa.Free;
end;
试题62 三大数据模块和公司(Corba:OMG组织;
DCOM:MS微软公司,RMI(Remote Mothod Invocation):SUN公司
试题63 试题:exception主体结构
Exception = class(TObject)
private
FMessage: string;
public
constructor Create(const Msg: string);
property Message: string read FMessage write FMessage;
end;
试题64 销毁一个窗口的事件发生的顺序OnCloseQuery OnClose OnDestroy
试题65 创建一个窗口的事件发生的顺序OnCreate OnShow OnActivate OnResize OnPaint
按键发生的系列事件顺序如下:OnKeyDown OnKeyPress OnKeyUp
鼠标单击的时间顺序onMouseDown OnClick OnMouseUp
双击鼠标 OnMouseDown OnClick OnMouseUp OnDblClick OnMouseDown OnMouseUp
注意:OnEnter和OnExit事件 如果没有焦点则在单/双击多发生一个事件OnEnter
试题66 Polygon(const Points:array of TPoint); //封闭图形,用当前的画刷填充,边框用Pen
PolyLine(const Points:array of TPoint); //画多边形,用当前的Pen
试题67 Arc,Ellipse,LineTo,MoveTo,Pie, Rectangle方法的使用以及参数
试题68 类层次结构图,从Tobject 开始的整个VCL类图,有考类之间的继承关系
TObject->TPersistent->TComponent->TControl->{TGraphicControl/TWinControl}
TObject->Exception->
TObject->TInterfaceObject
试题69 TWinControl即窗口控件的三大特征:句柄、焦点、部分可以为父
TGraphicControl即图形控件的三大特征:无句柄、无焦点,全部不可以为父
试题70 TControl类中,控件为了显示出来要指定父parent,但是为父的一定是TwinControl 窗口控件
Enabled visible parent 属性进来了
试题71 控件关系Tcontrol->TgraphicControl->Speedbutton
Tbutton->BitBtn
因为没有多继承,所以先确定一个主类加以继承,然后把另一个类作为一个属性
试题72 Sizeof(self) //4
Sizeof(sender) //4
类的函数 instancesize(real size) 返回实例空间
试题73 祖先类的选择原则:
非可视组件最好的基类:TComponent
作图形控件最好的基类:TgraphicControl
作窗口控件最好的基类:TcustomControl,因为它引入了Canvas属性
组件命名问题:在组件名称之前加一些个性化东西如TLSLPerson
试题74 procedure Register;
begin
RegisterComponents('Wujispace', [TLSLPerson]);
end;
Register的大小写不能改变,参数含义:(组件面板页名称,组件类名字-〉开放数组)
试题75 在设计组件时候,属性如果为字符串则不能有缺省值 即不能使用 default
试题76 为组件建立位图图标
默认使用父类图标,父类没有则使用缺省的Delphi位图
用Image Editor建立DCR文件,并在其中建立24*24位图,保存时候位图名应与
组件类名完全相同并大写,DCR名字同组件包名相同这时候在包文件中编写{$R *.dcr}。
如果dcr文件不同于组件包名的话,需要在包文件中指定{$R 文件所在路径}
注意:左下角的颜色决定了透明色。这个*号表示:名字相同的情况下缺省。
试题77 定义定制的事件
1.通过添加事件属性在发布部分建立事件句柄
property OnPersonClick:TnotifyEvent read FpersonClick write FpersonClick;
2.在保护部分添加事件调度程序
procedure PersonClick;dynamic;
3.在私有部分定义消息处理过程,访问调度程序
FOnPersonClick:TnotifyEvent;
procedure WMLButtonClick(var Msg:TWMMouse);message WM_LBUTTONDOWN;
试题78 属性中的default作用:属性的值如果在设计器改变且不同于default的值则该属性要保存
在dfm文件中,如果相同则不保存。如果去掉default则属性都会保存在dfm文件中。
如果保留default部分,删除create中的属性赋值,结果同上,这个来自Tpersistent.
注意:有没有default都不会对属性初始化,初始化只在构造方法中。如果构造方法中
没有对属性初始化则所有属性初始值为0或者空。
试题79 组件拖放到窗体上由IDE自动实现组件的Owner和Parent的设置
创建组件对象的时候指定Owner需要注意:Owner必须比被拥有者存活的时间长
试题80 测试组件对象,注意:1. 事件的赋值和处理方式
2. 顺序 * 创建组件对象 * 测试组件对象 *释放对象
试题81 异常处理注意:中四个关键字和两套结构[异常共2题]
try 决定一个代码保护块的起始
except 有异常才执行
finally 有没有异常都执行
raise 抛出一个异常
1)如何处理在程序中出现的异常
2)当程序中出现错误时候,如何引发异常 raise 异常实例初始化
3)异常处理它处理的是异常而不是错误,其实错误还没有发生
4)多个异常如何处理
试题82 要想IDE环境直接显示异常消息对话框,而不是进入异常调试状态请在
Tools中的Debugger Options中的Language Exceptions页中
不勾选 Stop On Delphi Exception
试题83 分析下面的代码中调用了那个异常处理
try
i := StrToInt('Sam');
ShowMessage(IntToStr(i));
except
on A: EDatabaseError do ShowMessage(A.message);
on B: EDivByZero do ShowMessage(B.Message);
on C: Exception do ShowMessage('Exception: ' + C.Message);
on D: EConvertError do ShowMessage('EConvertError: ' + D.Message);
end;
只执行了:On C:Exception do 这一条,实际上应该由On D: 来处理的!
试题84 异常机制做了这样两件奇妙的事
(1)错误消息自动包含在异常类的message属性中出现;
(2)异常帮助你避免发生错误之后意外地执行任何敏感的代码。
试题85 自定义异常类,为创建自己的异常,需要声明一个异常类:
type
ESillySpellingError = class(Exception);
试题86 异常处理完后,还可以在把这个异常继续抛出
此时就没有必要再实例化和初始化一个异常对象,直接使用 Raise 即可。
因为此时异常处理中已经知道这个异常是属于哪个异常类了。
试题87 如何使下面代码中光标在处理完计算后保持crDefault,可以使用处理异常保护
try
try
for I := 1000 downto 0 do
J := J + J div I;
MessageDlg('Total: ' + IntToStr(J), mtInformation, [mbOK], 0);
finally
Screen.Cursor := crDefault;
end;
except
on E: EDivByZero do ShowMessage('Error in Algorithm');
end;
试题88 包是被Delphi