在Delphi中创建一个选项表单

时间:2009-03-20 00:37:34

标签: delphi forms

我希望我的Form1有一个打开Form2的选项按钮。在Form2中,将有3个单选按钮。当按下单选按钮时,我需要使用我的一个程序来检查:

if (RadioButton1.Pushed) then begin

继续使用代码的一部分,或者如果推送Radiobutton2,则使用其他部分,依此类推。问题是,我不知道从哪里开始。有什么建议吗?

3 个答案:

答案 0 :(得分:5)

可能更容易使用RadioGroup。然后,您可以通过添加到Object Inspector中的Items列表来设置选项。您可以通过查看ItemIndex来判断设置了哪个按钮,如:

Case MyRadioGroup.ItemIndex of
  1: DoSomething;
  2: DoSomethingElse;
  3: DoAnotherThing;
End;

您不必使用RadioGroup。任何窗口控件中的所有按钮都将具有您期望一组RadioButton具有的互斥属性。

杰克

答案 1 :(得分:3)

您可以使用此代码段:

if Form2.RadioButton1.Checked then
begin
  // Do something
end else
if Form2.RadioButton2.Checked then
begin
  // Do something else
end;

如果这将是一个更大的应用程序,您应该考虑创建一个全局设置对象,可以通过选项屏幕进行更改,并由需要了解某些设置的过程读取

重要提示:直接从您的代码中访问您的表单只会增加耦合。当你的应用程序变得有点大时,维护它将是一场噩梦。

// Form2
Config.DoSomething = RadioButton1.Checked
Config.DoSomethingElse = RadioButton2.Checked

// Form1
if Config.DoSomething then
begin
  // Do something
end else
if Config.DoSomethingElse then
begin
  // Do something else
end;

您还可以向config对象添加方法,将设置保存到磁盘,并在下次启动应用程序时重新加载。

其他人建议使用 RadioGroup ,但我个人不喜欢它们作为长期解决方案,因为我发现它们很难适应我的个人UI需求。 (大多数是边界和距离)如果有一天你想重新排序项目或在结尾处以外的任何地方插入一个新项目它们也可能会成为问题:突然ItemIndex 2意味着完全不同的东西:)但是作为一个快速和 - 他们确定有用的脏解决方案。

答案 2 :(得分:2)

所以要稍微重新说一下你的问题,你就是说

  

按下单选按钮可使我的应用程序进入某种状态。   后来,基于该状态,我想要运行一些特定的代码。

当这样的措辞变得非常简单时。在杰克回答的情况下,他(非常正确地)建议一种简单的方法(查询状态)是使用无线电组。 ItemIndex属性告诉您按钮的状态。