我有一个具有一些属性的对象:
Obj.Big
Obj.Rotate
Obj.Paint
Obj.Lines
等等。它们都是布尔类型的属性。
在我的主程序中,我调用了另一个程序:
procedure TMainForm.Create(Sender:TObject);
begin
SetParameter(BigCheckBox, Obj.Big);
SetParameter(RotateCheckBox, Obj.Rotate);
SetParameter(PaintCheckBox, Obj.Paint);
SetParameter(LinesCheckBox, Obj.Lines);
end;
SetParameter
程序是这样的:
procedure TMainForm.SetParameter(ACheckBox : TCheckBox; ABoolOption : Boolean);
begin
if(ACheckBox.Checked) and (ACheckBox.Enabled) then begin
ABoolOption := true;
end
else if(not ACheckBox.Checked) and (ACheckBox.Enabled) then begin
ABoolOption := false;
end;
end;
它接受复选框对象和传递对象的布尔属性的属性为ABoolOption
. 我不能简单地做LinesCheckBox.Checked := Obj.Lines
,因为当复选框被填满时我需要一个“什么都不做”的动作(它们都是三态的)。当我运行它时,这些对象的参数都没有改变。为什么是这样?