我在表单中有一个edit1和一些checkbox1到checkbox6。我想在edit1组件中插入值,例如单击checkbox1时的1月,单击checkbox2时的2月...截至复选框6的6月。如果未选中复选框,则edit1不应具有相应的值。如果例如checkbox1,checkbox2和checkbox3被选中,我应该在edit1中拥有像March 2月3月那样的值。但是,如果我取消选中checkbox2,则edit1中的值应为1月和3月。如果未选中任何复选框,则edit1不应具有任何值。我如何在Delphi 7中做到这一点?
答案 0 :(得分:0)
为所有6个OnClick
控件分配一个TCheckBox
事件处理程序,并让它检查所有6个TCheckBox
状态并相应地更新TEdit
,例如:
procedure TMyForm.CheckBoxClick(Sender: TObject);
var
S: String;
procedure IncludeMonth(const MonthName: String);
begin
if S <> '' then
S := S + ', ' + MonthName
else
S := MonthName;
end;
begin
if CheckBox1.Checked then IncludeMonth('January');
if CheckBox2.Checked then IncludeMonth('February');
if CheckBox3.Checked then IncludeMonth('March');
if CheckBox4.Checked then IncludeMonth('April');
if CheckBox5.Checked then IncludeMonth('May');
if CheckBox6.Checked then IncludeMonth('June');
Edit1.Text := S;
end;
可替换地:
procedure TMyForm.CheckBoxClick(Sender: TObject);
var
Months: TStringList;
begin
Months := TStringList.Create;
try
if CheckBox1.Checked then Months.Add('January');
if CheckBox2.Checked then Months.Add('February');
if CheckBox3.Checked then Months.Add('March');
if CheckBox4.Checked then Months.Add('April');
if CheckBox5.Checked then Months.Add('May');
if CheckBox6.Checked then Months.Add('June');
Edit1.Text := Months.CommaText;
finally
Months.Free;
end;
end;