Создаем диалоговое окно
пункт &Порог с названием PUnit (свойство Name в Инспекторе объектов). Для него не надо создавать вложенного подменю.
Дважды щелкните на этом пункте — C++Builder автоматически создаст метод реакции на его выбор, а уже из этого метода будет вызываться форма InputForm.
Логическое отрицание
Однако игровому порогу желательно задавать новое значение не в процессе партии, а только после ее окончания. Этот момент отслеживался в методах обработки броска кубика и передачи хода (помните оператор return?) Новая проверка будет похожей, однако показывать вторую форму надо, только если игра закончена, в противном случае (партия продолжается) следует сообщить об этом игроку и завершить работу метода.
Проверку завершения игры мы выполняли методом Referee.GameFinish(). Но теперь б,лок условного оператора должен быть выполнен, только если игра не завершена. Как это записать?
В Си++ помимо логических операций «&&» и «¦¦», для каждой из которых требуются два операнда, имеется также операция логического отрицания «!» (НЕ), которая записывается всегда слева от единственного операнда, то есть она работает как стандартная функция с единственным параметром, только не требует скобок. В рассматриваемом случае выражение, значением которого будет true, если игра продолжается, запишется так:
! Referee.GameFinish()
При вычислении такого выражения сначала будет получено значение Referee.GameFinish() (если игра продолжается, это будет false), а затем к нему будет применена операция !, и значение false изменится на противоположное значение true.
Операцию «!» корректно применять только к логическим значениям типа boot. Результатом !true будет false, результатом ifalse — true.
Вызов новой формы
Чтобы вызвать вспомогательную (не главную — она вызывается автоматически) форму создаваемой программы, надо использовать метод этой формы Show():
InputForm->Show() ;
163