воскресенье, 27 июня 2010 г.

Визуальные компоненты ActiveX

Визуальные компоненты ActiveX
Если вам не хватает стандартных визуальных компонентов HiAsm, а делать их вы не умеете и ждать не хочется, то можно воспользоваться сторонними разработками в формате ActiveX. Компоненты ActiveX находятся в отдельных файлах *.ocx и могут быть использованы в программе.

Эти компоненты выложил на форуме один из участников в этой теме. Но это не обычные компоненты для HiAsm, которые можно установить и использовать, а это отдельные файлы ActiveX. В HiAsm есть компонент для работы с ActiveX, однако в предложенном на форуме архиве файлы ActiveX ещё отыскать надо. Там находятся примеры (не для HiAsm, а для Delphi), xml-файлы, справка, много других файлов, но сами ActiveX извлекаются из установочного exe-файла. Чтобы вам так не мучиться, я выбрал самые важные файлы и поместил их сюда. Вам надо будет только распаковать архив, а дальше читать эту статью.

Сами файлы ActiveX находятся во внутренней папке «ActiveX». Каждый из них содержит несколько визуальных элементов. Чтобы эти компоненты можно было использовать в программе, ActiveX должны быть зарегистрированы в системе. Там есть bat-файл для регистрации всех компонентов сразу, но вы можете открыть его в Блокноте и оставить только те, которые вам будут нужны. На другом компьютере тоже понадобится регистрация ActiveX и, естественно, сам файл *.ocx, иначе компоненты не будут отображаться в программе. Поэтому при распространении программы заботьтесь об этом.


Какие же компоненты можно увидеть? В архиве есть файл справки, зайдите в раздел «Iocomp Components» и в «Components by category». На любой странице там вы найдёте картинки возможных компонентов. Нажав на компоненте, можно посмотреть более подробное его описание, правда, только на английском. Компонентов достаточно много, и если они вам нужны, читайте дальше и узнавайте, как их подключать.

Итак, надеюсь, ActiveX вы уже зарегистрировали. Тогда открывайте HiAsm и на вкладке «Контролы» берите компонент UseActiveX. В редакторе формы он отображается как простая кнопка без надписи. Это естественно, ведь на этом этапе ещё неизвестно, какой компонент вы подключите. Точки для взаимодействия с Activex у компонента уже есть, а другие общие точки прячутся на вкладке «Точки». Они необязательны.

Для подключения того или иного компонента используется параметр CLSID. Вообще, CLSID - это универсальный идентификатор, у каждого ActiveX он свой. Этот идентификатор генерируется на этапе разработки компонента и становится константой. Однако есть ещё вариант подключения: в том же параметре указать prog.name, которые легко нам узнать из справки. Их мы и будем использовать.

Выберем какой-либо компонент. Например, на странице справки «Knob and Slider Components» я выбрал Single Turn. Правда, Mutli-Turn и другие - это тот же самый компонент, но с другим оформлением, поэтому о них написано на одной странице.

Чтобы подключить этот компонент, надо знать название компонента ActiveX. Вверху вы можете видеть: «isAnalogLibrary». Это соответствует одному из ocx-файлов, который и содержит этот элемент. А его имя написано в самом верху - «iKnobX». Точно так же называется и страница справки. Поэтому в параметр CLSID записываем isAnalogLibrary.iKnobX. Запускаете программу и видите регулятор.



В той же справке страницей выше есть виртуальная клавиатура. Она уже находится в библиотеке «iProfessionalLibrary», называется «iKeyBoardX», поэтому в CLSID будет iProfessionalLibrary.iKeyBoardX .

Но остановимся на предыдущем регуляторе. Ведь без взаимодействия с другими компонентами он бесполезен. А для взаимодействия необходимы методы, свойства, события. В UseActiveX есть три метода: первый вызывает метод ActiveX, второй считывает свойство, третий устанавливает свойство. А также есть события для получения события от ActiveX и получения значения указанного свойства. Это немного необычно для тех, кто привык работать только с компонентами HiAsm, но всё же ради таких компонентов стоит привыкнуть. Тем более что это универсально для всех ActiveX, а их много, вы сможете использовать в программе практически любой.

Самое главное - узнать названия методов, свойств и событий данного ActiveX, а точнее - используемого элемента. Ведь в UseActiveX дана только одна точка, например, для вызова всех методов. А названия легко узнать из той же справки: в самом верху страницы элемента есть ссылки «Properties», «Methods», «Events», то есть свойства, методы и события. Зайдём, например, в Properties нашего регулятора. Там есть свойство «IndicatorStyle». Зайдите в него, и вы увидите, что возможны 6 значений: от 0 до 5.

Но как это подать в UseActiveX? Делается это через MT-потоки. Первым элементом указывается имя свойства, затем - значение.



Очень важно не перепутать точки и значения. Как видите, используется обычный компонент UpDown, чтобы менять значения. Только в его параметре Max установлено 5, потому что для IndicatorStyle это максимум.

Теперь попробуем вызвать метод у iKnobX. Для этого вернёмся на страницу назад и выберем «Methods». Вот, например, «SavePropertiesToFile». Этот метод сохраняет свойства компонента в файл. Вместе с именем метода нужно передать также имя файла, куда сохранять свойства.



Разумеется, можно потом загружать свойства из файла другим методом.



Наконец, события. Без события, происходящего после изменения положения, компонент практически бесполезен. Возвращаемся на страницу компонента, заходим в «Events». Подходящее событие - «OnPositionChangeUser». Но, зайдя в него, видим, что оно ничего не выдаёт (т.к. в скобках после называния события пусто). То есть, позицию это событие получить не позволит. Но это не беда. Ведь есть же свойство «Position», которое можно как установить, так и просто прочитать. Второе мы и будем делать тогда, когда произойдёт нужное событие.



Здесь я убрал всё лишнее, чтобы не мешало. Как только происходит событие, мы сразу проверяем, называется ли оно «OnPositionChangeUser». Если так, то происходит OnTrue у компонент Case, которое выдаёт строку «Position» (она прописана в параметре «DataOnTrue»). Эта строка передаётся на doGetProp, что означает считывание свойства с заданным именем. На OnGetProp возвращается прочитанное значение.

Как видите, всё не так просто, как с обычными компонентами HiAsm. Но преимущество ActiveX состоит в том, что их можно использовать не только в HiAsm, а практически в любой среде программирования. И конечно, после освоения компонента UseActiveX вы сможете уже использовать любые ActiveX-компоненты.

А напоследок посмотрите, как выглядит текст на матрице.



И в заключение. Чтобы отменить регистрацию компонентов ActiveX, просто запустите bat-файл отмены. Можете также посмотреть его текст в Блокноте, при необходимости - изменить. В Интернете достаточно сведений об этом формате.



55 комментариев:

  1. Почему то я не нашел в архиве файлов с расширением bat. Какие у них имена: установочного и отмены и как они устанавливаются это же не exe'шник? И еще Вы пишите: {но сами ActiveX извлекаются из установочного exe-файла}. В архиве я не нашел ни одного файла с расширением exe.

    ОтветитьУдалить
  2. Вот ссылка на файлы регистрации с расширением bat

    http://hiasm.com/xf/attach/share/AnalogLibrary.rar

    ОтветитьУдалить
  3. Извеняюсь он регистрирует только компонент AnalogLibrary. Где же взять полный список?

    ОтветитьУдалить
  4. Архив поправлен, качайте. Bat-файлы вложены.

    В том архиве, который сформировал я, нет файлов exe. Я уже извлёк из exe все нужные файлы и выложил, чтоб всем было проще. Оригинальный архив находится в теме на форуме HiAsm, ссылка в статье на неё есть.

    ОтветитьУдалить
  5. Вообще, bat - это скрипт. А exe - программа. Скрипты бывают разные, не только bat. Подробней в гугле.

    ОтветитьУдалить
  6. Это мне известно. EXE-файлы были в оригинальном архиве, их них я извлёк ActiveX и поместил в новый архив, чтобы людям было проще. А bat-файлы я создал сам и поместил их в новый архив, они нужны для регистрации ActiveX в системе.

    ОтветитьУдалить
    Ответы
    1. ааа можете скинуть архив с EXE файлами пожалуйста а-то у меня .Bat не работает

      Удалить
  7. Хотелось бы спросить в очередной раз про видеоуроки. Несколько месяцев назад Вы говорили, что неготово еще несколько уроков но на днях они все же будут выложены. До сих пор видеоуроки так и не появились. Сколько еще ждать по Вашим прогнозам? Может лучше не создовать пока новые блоги, а закончить видеоуроки?

    ОтветитьУдалить
  8. Завтра постараюсь дописать ещё несколько и выложить.

    ОтветитьУдалить
  9. А за 2010 год видеоуроки будут?

    ОтветитьУдалить
  10. Первый уже появился. Другие тоже будут.

    ОтветитьУдалить
  11. У меня такой вопрос:
    Возможно ли в HiAsm'e сделать программу которая будет спрашивать пароль при обращении пользователя к файлу ехе или папки, выбраного мной ранее и при совпадении пароля предоставлять доступ к этому файлу?
    Если возможно то какие компоненты следует использовать?

    ОтветитьУдалить
  12. Честно говоря, никогда не задумывался над подобным вопросом. Возможно, это реализуется как-то с помощью прав доступа к файлу и папке, но лучше всего вам будет спросить об этом на форуме. На всякий случай: в HiAsm есть группа "Безопасность" на вкладке "Файлы".

    ОтветитьУдалить
  13. пример события не работает

    ОтветитьУдалить
  14. Cпасибо, отличная статья. ActiveX - Rulez

    ОтветитьУдалить
  15. Хочется сказать Вам огромное приогромное спасибо, за видеоуроки, Ваш труд и отзывчевость! Каждый раз когда буду заходить на Ваш сайт буду обязательно тыкать по рекламе дабы к Вам упала копеечка!
    Еще раз спасибо!!!

    ОтветитьУдалить
  16. И вам спасибо за добрые слова!

    ОтветитьУдалить
  17. Пожалуйста, выложите еще парочку примерчиков компонентов ActiveX, а то получается не то, что нужно или вообще не получается! Пожалуйста...

    ОтветитьУдалить
  18. Пример можно, но вы бы лучше написали, что не получается и какие действия вы делаете.

    ОтветитьУдалить
  19. Просто не могу ясно себе представить на какую точку свойств компонента ActiveX подавать данные (и в каком случае на ту или иную точку). Какие свойства передовать в МТ потоке и их последовательность, согласен что в справке они есть, но как они называются, в каком разделе справки находятся и какова их последовательность вот это вопрос.

    ОтветитьУдалить
  20. Нужно смотреть справку по компонентам ActiveX, которая находится в архиве (http://hi-asm.narod.ru/compact.rar0). У каждого компонента есть Methods, Properties и Events. Так вот методы Methods вызываются через току doExecute, свойства Properties - устанавливаются через doSetProp, извлекаются через doGetProp. Извлечённые значению выходят с точки onGetProp. События выходят на onEvents.

    Первым элементом в потоке должно стоять имя меотда или свойства, затем - значения параметров по порядку, которые есть в справке. На onEvents выдаётся первым элементом MT-потока имя события, остальными элементами - параметры события компонента ActiveX.

    ОтветитьУдалить
  21. здрасте.. у меня компонент ActiveX. не выбирается а ваши примеры при компиляции выдает ошибку(компоненты зарегил в винде запустив батник) ....в чем причина? что надо зделать.
    заранее спасибо

    ОтветитьУдалить
  22. Какая ОС? Что значит "не выбирается"? Что писали в CLSID?

    ОтветитьУдалить
  23. здравствуйте...операционка ХР сп2... с этой проблемой разобрался, элемент активеХ неактивен если установлен компилятор FPC...при установки галочки на компиляторе дельфи и перегрузке хиасма элемент активех можно "вытащить" на рабочее поле.....
    ...спасибо за ответ и помощь...

    ОтветитьУдалить
  24. здравствуйте...покажите пожалуйста на примере как работать с компонентом iOdometerX(одометр)во вкладке CSLID компонента активеХ была выбрана его библиотека и сам компонент(isAnalogLibrary.iOdometerX)...посредством компонента мемори вкладка STRING(iOdometerX.Value) вызываю прорертис и пытался загнать туда значение..значение высчитывается компонетом MATH прибавлял 0.05 результат тип реал на выходе.. по срабатыванию таймера и выдаю его в поток МТ параметром DATA2...все это выдавал на компонент активеХ в точку doSetProp...хотел посмотреть изменение значения одометра не получается...

    ОтветитьУдалить
  25. Я разобрался но я так понял что всего работает 10 минут а потом начинает выскакивать типа лицензия нужна как можно это убрать.

    ОтветитьУдалить
  26. ВаУ!!!Огромное Спасибо за примерчик!!! Все кул и прекрасно работает..

    ОтветитьУдалить
  27. К сожалению да, компоненты это ознакомительные. Правда, не знал, что они требуют ещё и лицензию через некоторое время. В Интернете не удалось найти кряк. Поищу ещё, но в Интернете можно найти немало компонентов ActiveX, которые бесплатны и функциональны, поэтому вы можете поискать ещё и другие компоненты взамен этих.

    Я в свою очередь буду публиковать данные о найденных новых компонентах ActiveX с примерами и ссылками на скачивание бесплатных версий.

    ОтветитьУдалить
  28. Я поискал но подобных не нашел может я конечно не так искал. Но все же здорово что есть человек который развевает HIASM спасибо огромное.

    ОтветитьУдалить
  29. http://softsearch.ru/ - вот тут можно по запросу "ActiveX" поискать. Правда, там старые есть, даже с 2004 года, но всё же.

    ОтветитьУдалить
  30. Админ а где новые уроки:)????????

    ОтветитьУдалить
  31. Здравствуйте! А для HiAsm ActiveX можно скачивать только с сайта HiAsm, или можно с какого угодно сайта?

    ОтветитьУдалить
  32. Можно скачивать с любого сайта. Главное, чтобы были известны методы, события, свойства ActiveX.

    ОтветитьУдалить
  33. Привет Админ..
    у меня два вопроса первий по ActiveX:
    Всьо делал как Ви написали сдесь + смотрел в ютубе Ваш видеоурок.И не работает зараза нажимаю на "запустить" або "запустить отлатку" и некак на на жатие не реагирует не запускается вообще как только удалю елемен ActiveX начинает работать (запускатся)
    ОС у меня Windows SP2
    А сам Hiasm весия 4.0..
    в чом может бить проблема?

    И второй вопрос связаний вот стакой прогой http://www.youtube.com/watch?v=21w2nt-NE6M&feature=related
    Нашол схему в интернете но оно почемуто не работает так как на видео (думаю нужно настроивать какеру да и рисовать может нужно както правильно вопшем я ещо ето не доконца понял....может Ви делали такую штуку???? если да то опишите или бросте схемку плиссс очень нужно для моей проги как дополнение....ну или посоветуйте как можно доратпотать уже ту схему которая у меня имеется ??? пишите мне на почту я Вам сразу брошу схемку если нужно. bigggi@mail.ru
    Спасибо..
    Суважением,Игорь

    ОтветитьУдалить
  34. Насчёт ActiveX:
    Какой конкретно пример или компонент не работает? Может, не зарегистрированы компоненты (через bat-файл, как написано в статье)?
    А запускается, когда удаляется компонент UseActiveX?

    Насчёт видео:
    Я даже не понял, как происходит определение номер кнопки. Эти кнопки - они просто на бумаге нарисованы, что ли? Хотелось бы увидеть пример (hi-asm@yandex.ru).

    ОтветитьУдалить
  35. Компонент тот что Ви показивали в видео .батник запускал и в конце вибило несколько сообжений все писали что успешно установлени.....да всьо делал строго по статье...
    да когда удаляю UseActiveX прога запускается ...вот только скачал версию Hiasma 4.04 так в нем вообже немогу витащить UseActiveX на поле.... не реагирует никак

    ОтветитьУдалить
    Ответы
    1. У меня вытащился после добавления в новую панель, с помощью правой кнопки ))) но ошибка такая же.

      Удалить
  36. Уважаемый, Админ!
    Как можно в компоненте Plot выбрать желаемое число каналов?
    Спасибо.

    ОтветитьУдалить
  37. Ну а всё таки, как победить не работающим UseActiveX ?
    В отладке 25 ошибок, в конце в скобках написано normal if you did not specify a source file to be completed

    ОтветитьУдалить
    Ответы
    1. Компилятор должен быть delphi, а не fpc.

      Удалить
    2. Хм, а где же его взять?

      Удалить
    3. Обратитесь на форум hiasm.com. В сборке hiasm_altBuild он вроде бы уже есть.

      Удалить
  38. Спасибо, уже установил )))

    ОтветитьУдалить
  39. Здравствуйте! а можно попросить урок с использованием компонента webcam? перерыл весь интернет и не нашел.

    ОтветитьУдалить
  40. Вопрос по ActiveX, я так понимаю в архиве демо? Через десять минут прекращает работать.

    ОтветитьУдалить
  41. ты думал тебе англосаксы так их подарят 8-)

    ОтветитьУдалить
  42. Помогите пожалуйста, У меня Windows 10 я запускаю файл Регистрации (от имени администратора) и у меня выскакивает ошибка "не удалось загрузить модуль isAnalogLibrary.ocx" причём HiAsm переустанавливал он свежий в чем проблема? Скажите пожалуйста

    ОтветитьУдалить
  43. ребят у вас .ocx файлы не регаются потому-что их надо скопировать в папки System32 и в sysWOW64 или sysWow64

    ОтветитьУдалить
    Ответы
    1. Пасиб я уже давно понял

      Удалить
    2. я засунул файлы куда надо и ОШИБКА регистрации почему!? раньше они работали почему!?

      Удалить
    3. крч я дурак надо было от имени админа запускать
      XD

      Удалить
  44. Доброго времени суток. - Огромное вам спасибо!!! Укажу ещё сразу, ОС Вин10. Получилось подключить в Hiasm VLC ActiveX через соответствующий компонент, указав ключ из реестра... На форме после компиляции и запуска появляется окно VLC с панелькой управления, которая сама прячется через некоторое время, как в браузере при просмотре видио(в общем то что надо)... - Вопрос в том, как мне прикрутить управление, как передать ссылку на файл который нужно проиграть и тд. и тп. - Помогите кто знает???? Автору огромное ещё раз спасибо за труды!!! Суть моей проблемы в том, что мне нужно проигрывать видио онлайн, так как браузеры в Хиасм подохли, ищу варианты и может быть есть ещё что-то на подобии VLC? Плеер способный воспроизводить видио из интернета онлайн, может быть есть у кого компонент такой для хиасм???

    ОтветитьУдалить