Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lesson_9.doc
Скачиваний:
3
Добавлен:
28.09.2019
Размер:
524.29 Кб
Скачать

Отключение входного контроля

Когда выбран пункт меню Limits> Upper, Вам нужно предотвратить ввод нижнего предела, а когда пункт меню Limits > Lower выбран, Вам нужно запретить ввод значения для верхнего предела.

Вы можете добавить несколько функций-элементов к классу EuroLimitsDialog, чтобы реализовать это:

public:

// Disables controls for selecting upper limits

void SetLowerEnabled(void)

{

upperValuesLimits->Enabled = false;

upperStarsLimits->Enabled = false;

lowerValuesLimits->Enabled = true;

lowerStarsLimits->Enabled = true;

}

// Disables controls for selecting lower limits

void SetUpperEnabled(void)

{

upperValuesLimits->Enabled = true;

upperStarsLimits->Enabled = true;

lowerValuesLimits->Enabled = false;

lowerStarsLimits->Enabled = false;

}

Значение свойства Enabled для компоненты определяет доступно ли взаимодействие. Значение true разрешает взаимодействие, а значение false - нет, так что пользователь не может взаимодействовать с объектом.

Функция SetLowerEnabled () функция запрещает ввод верхнего предела и разрешает ввод нижних пределов. Функция SetUpperEnabled() делает обратное.

Модернизация обработчиков пунктов меню Limits

Последний шаг, который завершит поддержку ввода пределов для закладки Euromillions, должен модернизировать обработчики для события Click в классе Form1 для пунктов меню Limits.

Обработчик пункта меню Upper должен быть изменен следующим образом:

System::Void upperMenuItem_Click(System::Object^ sender, System::EventArgs^ e)

{

::DialogResult result;

if(lottoTab->Visible)

{

lottoLimitsDialog->SetUpperEnabled();

result = lottoLimitsDialog->ShowDialog(this);

if(result == ::DialogResult::OK)

{

lottoUserMaximum = lottoLimitsDialog->UpperLimit;

lottoUserMinimum = lottoLimitsDialog->LowerLimit;

}

}

else if(euroTab->Visible)

{

euroLimitsDialog->SetUpperEnabled();

result = euroLimitsDialog->ShowDialog(this);

if(result == ::DialogResult::OK)

{

euroUserMaximum = euroLimitsDialog->UpperValuesLimit;

euroUserMinimum = euroLimitsDialog->LowerValuesLimit;

euroStarsUserMaximum = euroLimitsDialog->UpperStarsLimit;

euroStarsUserMinimum = euroLimitsDialog->LowerStarsLimit;

}

}

}

Локальная переменная result используется в обоих операторах if, поэтому

теперь она объявляется в начале функции.

После предоставления возможности контроля в диалоговом окне с помощью функции SetUpperEnabled () Вы выводите диалоговое окно как модальное.

Если пользователь закрывает диалоговое окно, щелкая кнопкой OK, Вы сохраняете результаты доступными с помощью свойств диалогового объекта.

Изменения обработчика для события Click пункта меню Lower аналогичны:

System::Void lowerMenuItem_Click(System::Object^ sender, System::EventArgs^ e)

{

::DialogResult result;

if(lottoTab->Visible)

{

lottoLimitsDialog->SetLowerEnabled();

result = lottoLimitsDialog->ShowDialog(this);

if(result == ::DialogResult::OK)

{

lottoUserMaximum = lottoLimitsDialog->UpperLimit;

lottoUserMinimum = lottoLimitsDialog->LowerLimit;

}

}

else if(euroTab->Visible)

{

euroLimitsDialog->SetLowerEnabled();

result = euroLimitsDialog->ShowDialog(this);

if(result == ::DialogResult::OK)

{

euroUserMaximum = euroLimitsDialog->UpperValuesLimit;

euroUserMinimum = euroLimitsDialog->LowerValuesLimit;

euroStarsUserMaximum = euroLimitsDialog->UpperStarsLimit;

euroStarsUserMinimum = euroLimitsDialog->LowerStarsLimit;

}

}

}

Логика здесь та же, что и в предыдущей функции-обработчике.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]