|
|
|
| Здравствуйте Народ!!!
Вопрос и простенький и сложный -
Размещаю на форме компонент OWC10.SpreadSheet (то бишь аналог Excel), усе класно, красиво, но событий у этого компонента на форме всего с гулькин хрен - вошли вышли получили потеряли фокус
Вопрос - как перехватывать в Аксесе события в самом OWC - типа изменили ячейку, выделыли ячейку и т.д.
То есть получить доступ к обработчикам событий содержимого листа Ексел в компоненте???
= С Уважением Л. Владимир | |
|
| |
|
|
|
| К событиям нужно не через форму конструктора ломиться, а через редактор VBA | |
|
| |
|
|
|
| Ну это я догадываюсь, открываю браузер объектов - нахожу там свое OWC на форме - а дальше то как, не пускает, То есть теоретически должна быть возможность подцепить код что то типа - Измение ячейки листа в Excel, причем у него есть входные параметры - активная ячейка и еще че-то.
Но в Excel - этот код цепляется в браузере объектов на Лист, а здесь то я максимум вижу ссылку на имя объекта в форме и усе... | |
|
| |
|
|
|
| найдите описание методов и свойств этого элемента - обращайтесь так как там написано...
если элемент в системе не зарегистрирован - регистрируйте | |
|
| |
|
|
|
| Элемент в системе зарегестрирован,
Уточнение вопроса - Есть ли из Accesa доступ к событиям этого компонента (как я уже говорил - изменение ячейки, выделение, изменение цвета и т.д. - в зависимости от этого должны вноситься изменения в основную БД)?
И если есть, то как я должен написать то, что в коде VB в файле Excele выглядит, например, так:
Sub Worksheet_Change(ByVal Target As Range)
.......................
End Sub /это событие изменение ячейки/
В форме Access с OWC такой код не воспринимаетсгя. Как его сделать доступным в Accesse для правильной обработки?
В Net-программировании - там кажись до него достучаться можно, а можно ли это сделать в Access? | |
|
| |
|
8 Кб. |
|
| Так я так и не понял, Вы пробовали вот так искать события? | |
|
| |
|
|
|
| А как их искать - открываю форму в конструкторе, вешаю на него компонент OWC10, открываю свойства этого компонента - и смотрю на вкладку События - а их там ну очень мало - зайти выйти и по сути все,
Где еще они могут быть или как их открыть/зарегестрировать или как их повесить в программном коде???
Сам компонент зарегестрирован в системе | |
|
| |
|
|
|
| надо объявить для контрола (компонент OWC10) переменную с WithEvents | |
|
| |
|
|
|
| Спасибо, это уже ближе, Вот выдержка текста программного модуля
Option Compare Database
Option Explicit
Private owcSS As OWC10.Spreadsheet
Private Sub Form_Load()
Set owcSS = Me.owcSpreadsheet.Object
End Sub
......................
И где и как это объявление может быть расположено? | |
|
| |
|
|
|
| Сделал так
Option Compare Database
Option Explicit
Private WithEvents owcSS As OWC10.Spreadsheet
Private Sub Form_Load()
Set owcSS = Me.owcSpreadsheet.Object
End Sub
Private Sub owcSS_Workbook_Activate()
MsgBox "Вошли"
End Sub
Увы - не вошло, Workbook_Activate() - событие книги Excel | |
|
| |
|
|
|
| Иногда человек проявляет удивительное упрямство в нежелании проглотить, то что ему разжевали!
Я Вам давно ответил. Неужели так трудно открыть редактор VBA, и посмотреть там, а не на вкладке 'События' формы конструктора?
И незачем эти события самому угадывать! Они уже есть и все прописаны, остается только из списка выбрать! | |
|
| |
|
|
|
| Мужик - ты с Белоруссии (я так понял), а я хохол упертый - все действительно так, как ты сказал,
зашел в редактор, слева вверху выделил свой гребаный owcss, а в правом списке открылись все события и объявленные и необъявленные в конструкторе - и усе заработало! Трахался с этим дня четыре, сделал через таймер формы, но
это было конечно не то, а теперь все стало супер!!! СПАСИБО!!! | |
|
| |
|
|
|
| Ну наконец-то! Уря! Я тоже рад | |
|
| |
|
|
|
| Вообще на сайте MS есть документация по этим контролам с описанием событий.
А еще если поставить сслыку на библиотеку, то в редакторе кода при нажатии F2 можно все увидеть | |
|
| |
|
|
|
|
| То есть суть задачи очень проста -
Создать форму поместить на ней OWC10.SpredSheet
и какой то код, типа:
Sub Измнение ячейки
MsgBox "Изменили"
End Sub
Sub Выделение ячейки или области
MsgBox "Выделили"
End Sub
Открываем форму - вводим в ячейку наприме 1 и получаем сообщение Изменили
Выделяем ячейки - получаем сообщение Выделили
И по сути весь вопрос - как оно должно правильно писаться -
Sub ИЗМЕНЕНИЕ ЯЧЕЙКИ
Sub ВЫДЕЛЕНИЕ ЯЧЕЙКИ ИЛИ ОБЛАСТИ,
если в Accese это вообще возможно | |
|
| |
|
|
|
|
А как их искать - открываю форму в конструкторе, вешаю на него компонент OWC10, открываю свойства этого компонента - и смотрю на вкладку События - а их там ну очень мало - зайти выйти и по сути все,
|
Ну что же Вы так убиваетесь?
Я же гавару:
Нинада через форму свойств конструктора пытаться найти событие для нестандартного контрола!!!
Откройте редактор VBA (Alt+F11) и там, как я показывал ранее (см. скрин неск. пост выше) шукайте события у этого инородного контрола! | |
|
| |