ЖУРНАЛ «СТА» №3/2002
86 СТА 3/2002 www.cta.ru В З АПИС Н УЮ К НИЖК У ИНЖЕ Н Е РА / ВОП Р ОСЫ - О Т В Е Т Ы Нетрудно сделать так, чтобы пользователь не мог слу- чайно закрыть это окошко, убрав галочку System Menu в настройках формата экранной формы. В ОПРОС Как убрать кнопку закрытия окна [Х] с обычной экранной формы — понятно, а как можно убрать эту кнопку с формы VBA, которая открывается, например, по какому-нибудь со- бытию и должна иметь возможность быть закрытой не опе- ратором, а только из VBA? О ТВЕТ Да, в отличие от обычного Visual Basic, напрямую запре- тить кнопку [X] в своих формах VBA не позволяет. Для этого придется воспользоваться функциями API операци- онной системы Windows, такими как GetSystemMenu(...) и RemoveMenu(...). Для того чтобы удалить часть меню лю- бого окна в Windows, необходимо получить указатель на это окно. Для этого существует APIфункция FindWindow(...). Таким образом, создав нужную нам форму VBA, мы прежде всего обязаны сами позаботиться о том, чтобы за- крыть эту форму, например, добавив в неё кнопку с привя- занным к ней скриптом: Private Sub cmdExit_Click() ' Событие, приводящее к закрытию формы Unload Me End Sub Кроме того, в разделе Initialize нашей формы мы долж- ны написать код, запрещающий в ней кнопку [X], напри- мер так: Private Sub UserForm_Initialize() Dim lRes As Long ' Получаем указатель окна для нашей формы lRes = FindWindow(vbNullString, Me.Caption) ' Вызываем подпрограмму удаления кнопки для нашего окна DisableCloseButton (lRes) End Sub После чего останется только оформить собственно под- программу DisableCloseButton () и декларации APIфунк- ций в виде отдельного модуля: ' Декларация стандартной APIфункции GetSystemMenu Declare Function GetSystemMenu Lib "user32" _ (ByVal hwnd As Long, ByVal bRevert As Integer) _ As Integer НОВАТОР В МИРЕ КЛЕММНЫХ СОЕДИНЕНИЙ МОСКВА Телефон: (095) 234-0636, факс: (095) 234-0640 E-mail: info@prosoft.ru Web: www.prosoft.ru С.-ПЕТЕРБУРГ Телефон: (812) 325-3790, факс: (812) 325-3791 E-mail: root@spb.prosoft.ru Web: www.prosoft.ru ЕКАТЕРИНБУРГ Телефон: (3432) 75-1871, 49-3459 E-mail: gleb@prosoft.ural.ru Web: www.prosoft.ural.ru ПРУЖИННЫЕ КЛЕММЫ ФИРМЫ WAGO ● автоматически изменяют усилие зажима в зависимости от диаметра провода; ● не боятся вибраций до 2000 Гц и ударов до 109g, так как не содержат винтов; ● гарантируют газонепроницаемость в месте контакта; ● имеют сертификат ISO 9001, сертификат соответствия Общества по сертификации в Европе DIN GOST TU .. V; ● внесены в Морской Регистр России и имеют разрешение для применения на АЭС; ● экономят время монтажа на 75%; ● имеют допуски и разрешения более 30 международных и национальных сертификационных центров. #391 КАТАЛОГ НА CD–ROM МОЖНО ЗАКАЗАТЬ БЕСПЛАТНО В КОМПАНИИ ПРОСОФТ БОЛЕЕ 7 000 ТИПОВ КЛЕММНЫХ СОЕДИНИТЕЛЕЙ И ЭЛЕКТРОННЫХ МОДУЛЕЙ ● проходные клеммы для установки на DIN-рельсы; ● клеммы для монтажа на печатные платы; ● клеммы для строительного электромонтажа; ● барьеры для импульсных помех; ● переходники разъём-клеммы; ● клеммы во взрывозащищённом исполнении; ● система мультиштекерных разъёмов; ● релейные модули; ● модули УСО серии WAGO I/O SYSTEM Официальный дистрибьютор — компания ПРОСОФТ
Made with FlippingBook
RkJQdWJsaXNoZXIy MTQ4NjUy