Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1
Кент Рейсдорф. BORLAND C++BUILDER. Страница 114
В этом коде объявляетсястатическая переменная с именем is Visible.
Статическая переменная (static variable) сохраняет свое значение между вызовами функции.
Статические переменные являются исключением из правила, касающегося неинициализированных переменных — они по умолчанию инициализируются нулем. В данном случае isVisible является булевой переменной и инициализируется значением false.
Вторая строка кода функции меняет значение булевой переменной на противоположное, применяя операцию логического отрицания к текущему значению. Это происходит следующим образом. Изначально статическая переменная установлена в false. При первом выполнении функции переменной присваивается значение NOT false, что, разумеется, есть true. При следующем вызове функции переменной присваивается NOT true, и так далее. В результате каждый раз при выполнении функции переменная isVisible содержит значение, обратное по отношению к значению в предыдущем вызове. Затем с помощью пары if/else вызывается либо Show(), либо Hide(), в зависимости от значения isVisible.
Вот и все! Но работает ли это? Давайте проверим. Щелкните на кнопке Run оперативной панели. После компиляции программа будет запущена и на экране появится ее окно. Вот и настал момент истины. Щелкните на кнопке, и компонент Memo исчезнет. Щелкните на кнопке еще раз, и он снова появится. Ура! Заработало! Наигравшись с программой, закройте ее (с помощью кнопки Close Program в верхнем левом углу строки заголовка). Вы окажетесь снова в редакторе кода.
Однако все эти манипуляции со статической булевой переменной немного сложноваты. Вернемся назад к обсуждению свойств. Не лучше ли было компоненту Memo иметь специальное свойство, которое позволяло бы узнать, является ли он в данный момент видимым? Конечно, такое свойство есть! Как можно было ожидать, оно называется Visible. Давайте его используем. Отредактируйте функцию еще раз, пока она не будет выглядеть так, как здесь: