Кент Рейсдорф. 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. Давайте его используем. Отредактируйте функцию еще раз, пока она не будет выглядеть так, как здесь:

Web-дизайн (с) 2010 All rights reserved