正确答案: B
题目:假定一个表单里有一个文本框Text1和一个命令按钮组CommandGroup1。命令按钮组是一个容器对象,其中包含Command1和Command2两个命令按钮。如果要在Command1命令按钮的某个方法中访问文本框的Value属性值,正确的表达式是( )。
解析:VFP中的对象一般可分为两种:容器对象和控件对象。容器可以包容其他的控件或容器,通常把容器对象称为那些被包容对象的父对象,这样就形成了对象的嵌套层次关系。在这种层次关系中,要引用其中的某个对象,就需要指明对象在嵌套层次中的位置。这时一般会用到一些引用属性或关键字,如PARENT是对象的一个属性,属性值为对象引用,指向该对象的直接容器对象;THIS、THISFORM和THISFORMSET是3个关键字,分别表示当前对象、当前表单和当前表单集。在所给题目中,共给出了5个对象,我们首先要清楚哪些是容器哪些是控件,以及它们之间的包容层次关系。表单是最外层的容器,其中有一个文本框控件Text1和一个容器命令按钮组CommandGroup1,而CommandGroup1中又有两个命令按钮控件Command1和Command2,故CommandGroup1是Command1和Command2的父对象,表单是CommandGroup1和Text1的父对象。现在要在Command1的方法中访问文本框Text1对象,即Command1当前对象,但由于Conmmnd1和Text1没有包容关系,故必须由Command1找到跟Text1有包容关系的对象来引用,也就是Text1的父对象表单。This代表当前的Command1,This.Parent指向父对象CommandGroup1, This.Parent.Parent则指向CornmandGmup1的父对象表单, This.Parent.Parent.Text1通过父对象表单引用了文本框Text1。
举一反三的答案和解析:
下列程序的运行结果是 #inClUdeiostream.h> class Location{ private: int X,Y; pubhc: void init(int=0,int=0) ; void valueX(int val) {X=val;} int valueX( ) {retum X;} void valueY(int val) {Y=val;} int valueY( ) {retum Y;}};void Location: :init(int initX,int initY) { X=initX; Y=initY;} Void main( ) { Location A,B; A.init( ) ; A.valueX(5) ; cout A.valueX( ) endl A.valueY( ) endl; B.init(6,2) ; B.valueY(4) ; cout B.valueX( ) endl B.valueY( ) endl;}