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

How to insert automatic values to an edit component if a checkbox is checked

我在表单中有一个 edit1 和一些 checkbox1 直到 checkbox6。我想在 edit1 组件中插入值,例如单击 checkbox1 时的 1 月,单击 checkbox2 时的 2 月......直到 checkbox6 的 6 月。如果未选中复选框,则 edit1 不应具有相应的值。例如,如果选中了 checkbox1、checkbox2 和 checkbox3,我应该在 edit1 中有像 January february march 这样的值。但是,如果我取消选中 checkbox2,edit1 中的值应该是一月和三月。如果复选框的 none 被选中,则 edit1 不应有任何值。我如何在 Delphi 7 中执行此操作?

为所有 6 个 TCheckBox 控件分配一个 OnClick 事件处理程序,并让它检查所有 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;