在Delphi中一次只选中一个复选框
问题:我有两个复选框(一次只能选中一个)和一个编辑框。对于选中的两个复选框,编辑框中的值必须更改为“0”,否则原始值将保留在编辑框中。下面是两个复选框的两个onclick事件。当我写入chkfacietoface.checked:=false时,将调用相应的onclick处理程序,并且我无法获得所需的结果。有人能帮我解决这个问题吗在Delphi中一次只选中一个复选框,delphi,checkbox,Delphi,Checkbox,问题:我有两个复选框(一次只能选中一个)和一个编辑框。对于选中的两个复选框,编辑框中的值必须更改为“0”,否则原始值将保留在编辑框中。下面是两个复选框的两个onclick事件。当我写入chkfacietoface.checked:=false时,将调用相应的onclick处理程序,并且我无法获得所需的结果。有人能帮我解决这个问题吗 procedure TForm1.chkFacetoFaceClick(Sender: TObject); begin if chkFacetoFace.Chec
procedure TForm1.chkFacetoFaceClick(Sender: TObject);
begin
if chkFacetoFace.Checked then
begin
edtConvFee.Text := '0.00';
chkWaiveOff.Checked := False;
end
else
begin
edtConvFee.Text := '5.00';
end;
end;
procedure TForm1.chkWaiveOffClick(Sender: TObject);
begin
if chkWaiveOff.Checked then
begin
edtConvFee.Text := '0.00';
chkFacetoFace.Checked := False;
end
else
begin
edtConvFee.Text := '5.00';
end;
end;
您可以暂时取消分配OnClick处理程序
EditBox.Text的值在非预期情况下设置。在更改EditBox.Text
之前,应选中两个复选框的选中状态。请参见此示例:
程序TForm1.chkWaiveOffClick(发送方:TObject);
开始
如果chkWaiveOff,则检查
开始
文本:='0.00';
chkface.Checked:=假;
结束
否则,如果不是chkface.Checked then/@davidheffernan说“这里的复选框是错误的。”
试试这个:
procedure TForm1.chk1Click(Sender: TObject);
begin
inherited;
chk1.OnClick := nil;
chk2.OnClick := nil;
chk2.OnClick := nil;
if TCheckBox(Sender).Name = 'chk1' then
begin
chk2.Checked := False;
chk3.Checked := False;
end
else if TCheckBox(Sender).Name = 'chk2' then
begin
chk1.Checked := False;
chk3.Checked := False;
end
else if TCheckBox(Sender).Name = 'chk3' then
begin
chk1.Checked := False;
chk2.Checked := False;
end;
chk1.OnClick := chk1Click;
chk2.OnClick := chk1Click;
chk3.OnClick := chk1Click;
end;`
您可以暂时取消分配OnClick
处理程序。“我有两个复选框(一次只需选中一个)”。使用单选按钮
instead@ValMarinovIMHO,对于RadioButton用户期望必须检查一个值,完全未检查的RadioGroup会激怒用户。是的,我想到了,但用户可以不选中任何复选框继续。单选按钮没用,对吧?这里的复选框错了。你需要一个有三个选择的广播组。“额外”对应于未选中的复选框。这里有一个众所周知的UI习惯用法。复选框告诉用户可以组合选项。单选按钮告诉用户选项是互斥的。不要以这种方式混淆用户。引用仅代表大卫所说的话。。。我的意思是我同意,但那不是我的话。我应该说:就像@David Heffernan说的“这里的复选框错了。”好的,谢谢。我以为你认为这句话意味着复选框是不可能的,你证明了不是这样。有时,多用几个词会使一个短语更清楚谢谢你,Marisco
procedure TForm1.chk1Click(Sender: TObject);
begin
inherited;
chk1.OnClick := nil;
chk2.OnClick := nil;
chk2.OnClick := nil;
if TCheckBox(Sender).Name = 'chk1' then
begin
chk2.Checked := False;
chk3.Checked := False;
end
else if TCheckBox(Sender).Name = 'chk2' then
begin
chk1.Checked := False;
chk3.Checked := False;
end
else if TCheckBox(Sender).Name = 'chk3' then
begin
chk1.Checked := False;
chk2.Checked := False;
end;
chk1.OnClick := chk1Click;
chk2.OnClick := chk1Click;
chk3.OnClick := chk1Click;
end;`