尝试清除RadioButtonGroup中的所选内容时遇到一个奇怪的问题。我从RadioButton列表中选择我的选项,等待计时器启动和关闭它去调用与该RadioButton相关的过程或函数。选择已清除,但会在一秒钟内重新选择。被调用的过程或函数中没有任何内容可以导致重新选择它,为什么会发生这种情况。现在这只发生在我尝试使用Timer1Timer过程来自动选择时。 (对我来说很容易......我是Delphi Dabbler,自学成才,而不是程序员。)
procedure TMainForm.Timer1Timer(Sender: TObject);
begin
Case BakUpGroup.ItemIndex of
0 : begin
BakUpGroup.ItemIndex := -1; //clear the selection
//call procedure here relating to 1st radiobutton selected
End;
1 : begin
BakUpGroup.ItemIndex := -1; //clear the selection
//call procedure here relating to 2nd radiobutton selected
End;
2 : begin
BakUpGroup.ItemIndex := -1; //clear the selection
//call procedure here relating to 3rd radiobutton selected
End;
3 : begin
BakUpGroup.ItemIndex := -1; //clear the selection
//call procedure here relating to 4th radiobutton selected
End;
// even tried to clear here but once the called procedure exits
// the last selected Radiobutton is ticked again
BakUpGroup.ItemIndex := -1;
end;
答案 0 :(得分:0)
使用此处显示的代码,您所描述的内容不会发生。您实际使用的代码更可能是不同的,或系统中的其他东西,可能是不同的计时器,正在选择无线电组中的项目。要非常清楚,如果问题中的这段代码真的是无线电组中的所有操作,那么你就不会看到你报告的行为。
您需要更仔细地查看代码,了解自己缺少的内容。尝试将代码缩减到最小的再现。我预测,一旦你这样做,错误将是显而易见的。
答案 1 :(得分:0)
我刚刚制作了一个简单的工作示例:
TRadioButtonGroup
,并向广播组添加了5个项目。TTimer
放到表单并将Enabled
属性设置为False
然后我添加并编码了以下事件:
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
Timer1.Enabled := True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
RadioGroup1.ItemIndex := -1;
Timer1.Enabled := False;
end;
要么我在这里遗漏了一些明显的东西,要么你的代码可能与我们看不到的其他地方相冲突。
还可以尝试从以下代码中交换这些行的顺序:
BakUpGroup.ItemIndex := -1; //clear the selection
//call procedure here relating to 1st radiobutton selected
要:
//call procedure here relating to 1st radiobutton selected
BakUpGroup.ItemIndex := -1; //clear the selection