Совет 302. Используйте элемент управления IE Timer

Андрей Колесов

Отсутствие встроенных элементов управления (на что мы сетовали в предыдущем совете) можно компенсировать возможностью использования дополнительных элементов управления ActiveX. Если у вас имеется VB 5.0 или 6.0, то вы можете самостоятельно сделать, например, на основе встроенного элемента Timer собственный ActiveX-компонент для реализации функции таймера. Такой OCX можно было бы использовать в конструкторе MS Forms 2.0 (VBA-формы). Но прежде чем делать свои компоненты, стоит посмотреть, нет ли уже готового подходящего элемента на Web-сайтах с VB-ресурсами и разными Freeware & Shareware.

Так, очень нужный порой компонент Timer в виде файла IETimer.OCX можно найти по адресу www.visual.2000.ru/develop/vb/source/.

Но здесь мы хотели бы отметить некоторые различия в процедурах подключения OCX к среде VB и VBA.

  1. Обычно OCX-компоненты помещаются в системный каталог Windows/System/. Однако мы рекомендуем размещать такие дополнительные файлы в каком-нибудь специально созданном для этого пользовательском подкаталоге. Это упростит процедуры "чистки мусора" и обновления версий компонентов, так как можно будет четко следить за тем, что вы записали сами, а что автоматически прописали в System операционная система и программы установок разных приложений.
  2. Далее необходимо зарегистрировать OCX-файл. Лучше всего это сделать с помощью утилиты RegSvr32.exe, которая входит в состав VB и Office (проще всего скопировать ее в подкаталог с вашими OCX):

    RegSvr32.exe Your.OCX
    
  3. Подключение к панели Toolbox для VB- и VBA-форм несколько различается.

  4. Не менее интересна процедура отключения дополнительного компонента. Для VB-форм нужно войти в окно Components|Controls и убрать в нем флажок. Для VBA-форм эту же операцию можно сделать в окне Additional Controls. Только проще — щелкнуть правой кнопкой мыши на изображении компонента на панели Toolbox и выбрать команду Delete. Кстати, с помощью этого же меню в данном случае можно изменить название и изображение пиктограммы элемента управления (рис. 302):

    Рис. 302

  5. Еще один вопрос — как убрать имя ненужного компонента из списков в окнах Components|Controls и Additional Controls. Отменить регистрацию OCX (вернее, любого ActiveX-компонента) можно с помощью той же утилиты RegSvr32:

    RegSvr32.exe /u Your.OCX
    

    Но иногда оказывается, что этого недостаточно, и приходится вручную просматривать (искать заданный файл) и чистить Реестр.