有关组件创建时默认值 ( 积分: 50 )

  • 主题发起人 主题发起人 dyxfkj
  • 开始时间 开始时间
D

dyxfkj

Unregistered / Unconfirmed
GUEST, unregistred user!
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

Type
TcyEdit = Class(TEdit)
private
fIsBol: Boolean;
published
property IsBol: Boolean Read fIsBol Write fIsBol Default True;
end;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
cyEdit: TcyEdit;
begin
cyEdit := TcyEdit.Create(Self);
cyEdit.Parent := Form1;
// cyEdit.IsBol := true; 在设计时不能进行设置么?

if cyEdit.fIsBol then
ShowMessage('Yes')
else
ShowMessage('No');

if cyEdit.IsBol then
ShowMessage('Yes')
else
ShowMessage('No');
end;

end.

1、cyEdit的值永远为false
2、设计时不能进行定义么?
 
楼主使用的 Default 关键字并不是用来保存默认值的。
应该在
constructor Create(AOwner: TComponent);
过程里面设置
fIsBol := True
 
啊?

property IsBol: Boolean Read fIsBol Write fIsBol Default True;
这里的 Default 是作什么用的?
 
根据楼主的写法,我没有发现什么问题,不知道会提示什么?是错误?还是你运行的结果不是预想?
根据代码,运行结果应该有两个提示框:“Yes”
 
楼上:
两个运行结果都为 No
 
代码:
      Default指定的默认值,只是用于与属性的当前值进行比较
      以决定是否把属性的值存储到*.dfm文件中.
      至于属性的初始值,与属性的默认值没有必然联系
      尽管有时这两者是相同的,属性的初始值是在类的构造中设定的.
 
后退
顶部