问题清除TTimer程序中的RadioGroup选择

时间:2015-10-16 11:24:08

标签: delphi

尝试清除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;

2 个答案:

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