如果选中复选框,如何将自动值插入编辑组件

时间:2015-07-31 01:27:44

标签: delphi delphi-7

我在表单中有一个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中做到这一点?

1 个答案:

答案 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;