Сделать форму вариантов в Delphi - PullRequest
1 голос
/ 20 марта 2009

Я хочу, чтобы на моей Форме1 была кнопка Опции, открывающая Форму2. В Form2 будет 3 радиокнопки. Когда радио-кнопка нажата, мне нужно проверить одну из моих процедур, используя:

if (RadioButton1.Pushed) then begin

для продолжения с одной частью кода, или, если Radiobutton2 нажата, другой частью и т. Д. Дело в том, что я понятия не имею, с чего начать. Есть предложения?

Ответы [ 3 ]

5 голосов
/ 20 марта 2009

Может быть проще использовать RadioGroup. Затем вы можете просто установить параметры, добавив их в список элементов в Инспекторе объектов. Вы можете узнать, какая кнопка была установлена, посмотрев на ItemIndex как:

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

Вам не нужно использовать RadioGroup. Все кнопки в любом оконном элементе управления будут иметь свойство взаимного исключения, которое, как вы ожидаете, будет иметь набор RadioButton.

Jack

3 голосов
/ 20 марта 2009

Вы можете использовать этот фрагмент:

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 uration, чтобы сохранить настройки на диск и перезагрузить их при следующем запуске приложения.

Другие предлагали использовать RadioGroup , но лично мне они не нравятся в качестве долгосрочного решения, потому что я считаю, что их сложно адаптировать к моим личным потребностям пользовательского интерфейса. (В основном, границы и расстояния). Они также могут стать проблематичными, если однажды вы захотите изменить порядок элементов или вставить новый элемент в любое место, кроме конца: внезапно ItemIndex 2 означает что-то совершенно другое :) Но как быстрое и грязное решение они действительно полезны.

2 голосов
/ 20 марта 2009

Итак, чтобы немного перефразировать ваш вопрос, вы говорите, что

Нажатие переключателя переводит мое приложение в определенное состояние. Позже, основываясь на этом состоянии, я хочу запустить какой-то конкретный код.

Когда сформулировано так, это становится очень просто. В случае ответа Джека он предлагает (совершенно справедливо), что простой способ (для запроса состояния) состоит в использовании группы радиосвязи. Свойство ItemIndex сообщает вам о состоянии кнопок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...