setdefault方法在这里!
procedure TButton.SetDefault(Value: Boolean);
var
Form: TCustomForm;
begin
FDefault := Value;
if HandleAllocated then
begin
Form := GetParentForm(Self);
if Form <> nil then
Form.Perform(CM_FOCUSCHANGED, 0, Longint(Form.ActiveControl));
end;
end;
procedure TButton.SetDefault(Value: Boolean);
var
Form: TCustomForm;
begin
FDefault := Value;
if HandleAllocated then
begin
Form := GetParentForm(Self);
if Form <> nil then
Form.Perform(CM_FOCUSCHANGED, 0, Longint(Form.ActiveControl));
end;
end;
解决方案 »
- SQL语句如何生成库存表
- 有2个List。分别是字段名和想对应的值。怎么用循环存入数据库啊
- 数据库软件,想在xml数据库中记录操作员对数据库进行增加、删除的时间,怎么做?
- 辽宁沈阳程序员请进?
- 高分求解delphi/c++builder问题,谢谢
- 各位程序员大家好,大家一起来谈谈自己理想中的女朋友应该是怎样的
- 求助,如何将delphi应用程序设成运行时图标显示在右下角任务栏上?
- 急需InstallShield Express 3.45的序列号
- 键盘响应一问
- 初始化代码书写位置的问题
- 如何更换位图按钮的图片?--Keeper2000
- 近日,有关于偶的信誉问题,争议颇多,现在偶打算申请个人主页,公布哪些源代码资源,让大家任意下在,不过,偶申请的网易个人主页,使用ftp迟迟不能连上服务器,请问哪里有既时开通的个人主页??//牛虻
read和write都是属性default值的来源
default false是指property Default的默认值为false。
能否说的清楚点,具体点!
fdefault,setdefault具体什么作用?
缺省值是false
setdefault过程的功能是对fdefault域赋值,default属性实际上并不包含任何的数据。default是fdefault域的辅助域,当想得到default中的值的时候,它就从fdefault中读取;当
视图对default属性设置值的时候,default就调用setdefault对fdefault设置值。 这样做的好处包括:
1。通过一个简单的变量就使得外部代码可以访问对象的数据,而不需要知道对象的实现细节;
2。在派生类中可以覆盖象setdefault方法以实现多态性
我的理解和你一样!
但为什么要用函数来读写类的私有变量呢?比如我这个例子的写函数是:
procedure TButton.SetDefault(Value: Boolean);
var
Form: TCustomForm;
begin
FDefault := Value;
if HandleAllocated then
begin
Form := GetParentForm(Self);
if Form <> nil then
Form.Perform(CM_FOCUSCHANGED, 0, Longint(Form.ActiveControl));
end;
end; 这里的这段代码有什么用?
if HandleAllocated then
begin
Form := GetParentForm(Self);
if Form <> nil then
Form.Perform(CM_FOCUSCHANGED, 0, Longint(Form.ActiveControl));
end;
Form.Perform(CM_FOCUSCHANGED, 0, Longint(Form.ActiveControl));焦点在form的转移
是我写的话,我那还用问你有什么作用!!!
跟在property关键字之后的default指示字所指示的值,并不会成为constuructor运行期间该属性的默认值。default不具有任何运行时语义,它的作用在于使Delphi的内部机制清楚,当该属性的取值于default指示字所指示的值相等时,不必将该属性写入窗体存储文件(.dfm)之中。同理,当Delphi载入dfm存储时,会对没有写入记录的该属性赋default指示字所指示的值。
如果想要使某一属性具有默认值,必须在constructor中明确指定。
非常感谢!!!!!
if HandleAllocated then
begin
Form := GetParentForm(Self);
if Form <> nil then
Form.Perform(CM_FOCUSCHANGED, 0, Longint(Form.ActiveControl));
end;
这段代码,向Botton所在的Form传递CM_FOCUSCHANGED消息,改变ActiveControl。这就达到了既设置属性,又可以进行必要的相关处理的目的,这要比直接存取属性值域方便得多。
To specify a default value for a property, append the default directive to the property抯 declaration (or redeclaration), followed by the default value. For example,
property Cool Boolean read GetCool write SetCool default True;Note:Declaring a default value does not set the property to that value. The component抯 constructor method should initialize property values when appropriate. However, since objects always initialize their fields to 0, it is not strictly necessary for the constructor to set integer properties to 0, string properties to null, or Boolean properties to False.