мульти выбор - PullRequest
       34

мульти выбор

2 голосов
/ 25 января 2012

Я пытаюсь указать для группы выбора пользователя 8 флажков (CheckBox1, CheckBox2 и т. Д.), Где пользователь может выбрать любую комбинацию из восьми флажков. Для каждого выбора будет разная кодировка Например

If CheckBox1.checked then
Begin
End
Else
If CheckBox1.checked  and CheckBox2 .checked  then
Begin

End 
Else
If….

Пожалуйста, дайте какое-нибудь представление о том, как это сделать, за исключением того, что я делаю утверждения If-else, которые очень вложены в мое дело, и я так запутался спасибо

Обновление

Хорошо, позвольте мне уточнить больше. Я встраиваюсь в процесс контракта на продление контракта с системой управления персоналом. Пользователь может выбрать только продление контракта с сотрудником, либо его продление и ежегодный бонус, либо изменение должности с продлением, либо дополнительный бонус при ежегодном повышении ... это логика, и я понятия не имею, как лучше всего это реализовать.

Ответы [ 2 ]

1 голос
/ 25 января 2012

Группа флажков обычно используется, когда параметры не зависят друг от друга. Это означает, что ваша логика, как правило, не является вложенной. Это будет выглядеть примерно так:

if checkbox1.Checked then
  ....
else
  ....;

if checkbox2.Checked then
  ....
else
  ....;

и т. Д.

Если между значениями ваших флажков существуют сильные взаимодействия, это усложнит ситуацию. Довольно сложно дать вам совет, не зная более подробной информации о вашей конкретной проблеме. Однако хорошие решения таких проблем, как правило, включают в себя поиск путей устранения взаимозависимостей в коде и возможность использования независимой логики, как указано выше.


Ваш обновленный вопрос дает больше информации. Вы говорите:

пользователь может выбрать только продление контракта с сотрудником, либо его продление и предоставление ежегодного бонуса, либо изменение должности с продлением, либо предоставление дополнительного бонуса при ежегодном повышении

Это звучит как взаимоисключающий список опций. В этом случае группа флажков является неправильным элементом пользовательского интерфейса. Вы должны использовать радиогруппу, TRadioGroup. Это группа переключателей, из которых может быть выбрана только одна . Затем это можно сопоставить, скажем, с перечисляемым типом, и ваша логика может стать простым оператором case.

Если вы реализуете этот пользовательский интерфейс с помощью флажков, тогда пользователь сможет выбрать комбинацию опций, которая невозможна. Например, они могут выбрать опцию повышения сотрудника, но не проверять возможность продления контракта!

Конечно, некоторые из ваших опций могут быть взаимоисключающими, а некоторые могут быть независимыми друг от друга. В этом случае вам нужно будет использовать комбинацию радиогруппы и некоторых флажков.

0 голосов
/ 26 января 2012

Я бы разделил логику на несколько групп.На основном GroupBox есть только один флажок Renew CheckBox (и любые другие необновленные параметры, которые вам нужны).Затем возьмите второй GroupBox, в котором есть опции для предоставления ежегодного бонуса, изменения названия должности и дополнительного бонуса с повышением.Когда флажок Renew CheckBox установлен, покажите второй GroupBox.Если флажок Renew CheckBox снят, скрыть второй GroupBox.Это предоставит пользователю меньше возможностей и обеспечит возможность выбора только тех комбинаций, которые соответствуют вашим требованиям.

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