如果选中复选框,如何将自动值插入编辑组件
Posted
技术标签:
【中文标题】如果选中复选框,如何将自动值插入编辑组件【英文标题】:How to insert automatic values to an edit component if a checkbox is checked 【发布时间】:2015-10-22 13:46:33 【问题描述】:我在表单中有一个 edit1 和一些 checkbox1 到 checkbox6。我想在edit1组件中插入值,例如单击checkbox1时的一月,单击checkbox2时的二月......直到6月的checkbox6。如果未选中复选框,则 edit1 不应具有相应的值。例如,如果选中复选框 1、复选框 2 和复选框 3,我应该在 edit1 中具有像 January february March 这样的值。但是,如果我取消选中 checkbox2,edit1 中的值应该是一月和三月。如果未选中任何复选框,则 edit1 不应有任何值。我如何在 Delphi 7 中做到这一点?
【问题讨论】:
【参考方案1】:将单个OnClick
事件处理程序分配给所有6 个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;
【讨论】:
感谢您的代码。我已经使用了两个源代码。但是,单击复选框不会在 edit1 中显示任何内容。有什么帮助吗? 您是否将过程分配给TCheckBox
控件的OnClick
事件?
我忘了看第一条指令。我已经这样做了,并且它可以按照我的意愿完美地工作。谢谢雷米。
我怀疑 OP 应该使用无线电组而不是 chckbox,因为编辑一次只能保存一个值。
OP 想要一次在编辑中显示多个项目的列表。 RadioGroup 不适合。以上是关于如果选中复选框,如何将自动值插入编辑组件的主要内容,如果未能解决你的问题,请参考以下文章
使用 AJAX 将复选框值 1 如果选中,如果不是 0 传递给 PHP
如何知道是不是选中了表单中的多个复选框并将值插入数据库表c#