
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
20.05.2005, 12:05:12
|
|||
|---|---|---|---|
Передача MSHFlexGrid в ActiveX DLL из Access (c WithEvents) |
|||
|
#18+
Столкнулся с проблемой - делал ActiveX DLL для использования в Access 2000. В DLL предполагается передавать ссылку на объект класса MSHFlexGrid таким образом, чтобы можно было обрабатывать события этого объекта (т.е. c WithEvents). Пишу: В описании ActiveX DLL в классе clsMyClass: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2005, 12:10:56
|
|||
|---|---|---|---|
Передача MSHFlexGrid в ActiveX DLL из Access (c WithEvents) |
|||
|
#18+
а зачем Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2005, 12:15:00
|
|||
|---|---|---|---|
Передача MSHFlexGrid в ActiveX DLL из Access (c WithEvents) |
|||
|
#18+
Konst_Oneа зачем Код: plaintext Код: plaintext тогда будет Type mismatch при использовании в Access ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2005, 12:49:09
|
|||
|---|---|---|---|
|
|||
Передача MSHFlexGrid в ActiveX DLL из Access (c WithEvents) |
|||
|
#18+
по существу вопроса ничего не скажу. а вообще соображения такие 1) Акцесс может и сам установить ссылку на MSHFlexGrid (это, видимо, не то, что Вам надо) 2) В рамках Вашей библиотеки нужно просто инкапсулировать MSHFlexGrid в свой ActiveX контрол. Его и отдавать Акцессу. (Если акцессу нужен именно контрол, стандартными средстами размещаемый на форме Акцесса) В рамках этого контрола Вам придется определить соответствующие MSHFlexGrid события. См. создание ActiveX контролов. 3) Если речь идет о модальной форме в dll и некотором объекте-менеджере, управляющим ею, то в таком менеджере нужные события придется и определить и позаботиться об их распространении. В любом случае Public Property Get [my]FlexGrid() As I[my]FlexGrid Set [my]FlexGrid = mvarFlexGrid End Property превратится либо в метод GlobalmultiUse класса, где mvarFlexGrid реализует один из публично заявленных в dll интерфейсов, либо в нечто типа Implements I[my]FlexGrid ... Public Property Get [my]FlexGrid() As I[my]FlexGrid Set [my]FlexGrid = Me End Property так я думаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2005, 13:00:47
|
|||
|---|---|---|---|
Передача MSHFlexGrid в ActiveX DLL из Access (c WithEvents) |
|||
|
#18+
дддпо существу вопроса ничего не скажу. ... 2) В рамках Вашей библиотеки нужно просто инкапсулировать MSHFlexGrid в свой ActiveX контрол. Его и отдавать Акцессу. (Если акцессу нужен именно контрол, стандартными средстами размещаемый на форме Акцесса) В рамках этого контрола Вам придется определить соответствующие MSHFlexGrid события. См. создание ActiveX контролов. ... Хотелось бы все-таки по существу вопроса - о создании контрола ActiveX я уже думал, но это займет много больше времени, чем я хотел бы уделить этому проекту - сами понимаете, на выходных хочется отдохнуть, а не корпеть над клавиатурой :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2005, 13:09:29
|
|||
|---|---|---|---|
|
|||
Передача MSHFlexGrid в ActiveX DLL из Access (c WithEvents) |
|||
|
#18+
по существу вопроса - ну нету барсика под рукой и по памяти не помню... очень может быть что Public sub TestMetod Set myGrid = mvarFlexGrid ' А также Set myGrid = Me.FlexGrid end sub должен выглядеть так Public sub TestMetod Set myGrid = mvarFlexGrid ' А также Set myGrid = Me.FlexGrid.Object end sub Однако, если у Вас получится номер с перехватом событий в Акцессе (чего я никак не ожидаю), пожалуйста, обязательно сообщите об этом отдельно. ЗЫ про выходные - тут как раз дождь пошел... Может все таки подумать, как провести время? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2005, 13:26:05
|
|||
|---|---|---|---|
Передача MSHFlexGrid в ActiveX DLL из Access (c WithEvents) |
|||
|
#18+
дддпо существу вопроса - ну нету барсика под рукой и по памяти не помню... очень может быть что Public sub TestMetod Set myGrid = mvarFlexGrid ' А также Set myGrid = Me.FlexGrid end sub должен выглядеть так Public sub TestMetod Set myGrid = mvarFlexGrid ' А также Set myGrid = Me.FlexGrid.Object end sub Однако, если у Вас получится номер с перехватом событий в Акцессе (чего я никак не ожидаю), пожалуйста, обязательно сообщите об этом отдельно. Использование свойства .Object не поможет (уже пробовал - так можно выкрутиться, если класс описан в модуле класса Access). Судя по всему дело в различном способе хранения информации о контролах на формах - Access хранит (если ошибаюсь - поправьте) не сам объект, а свободную рамку (читай, изображение) объекта. Так что придется перепланировать выходные... :(( ддд ЗЫ про выходные - тут как раз дождь пошел... Может все таки подумать, как провести время? Читаете мысли, батенька... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2005, 14:02:07
|
|||
|---|---|---|---|
|
|||
Передача MSHFlexGrid в ActiveX DLL из Access (c WithEvents) |
|||
|
#18+
про .Object Вы правы. однако, в чем именно дело, не скажу. Имена классов у Вас там не попутаны часом? настораживает Private WithEvents myGrid As MSHFlexGrid -это иерархический грид а тут? ' А также Set myGrid = Me.FlexGrid редактор форм так назвал бы "обычный" грид... да и то - не так, а как-нибудь Me.FlexGrid1 или Me.FlexGrid(1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2005, 14:17:52
|
|||
|---|---|---|---|
Передача MSHFlexGrid в ActiveX DLL из Access (c WithEvents) |
|||
|
#18+
дддпро .Object Вы правы. однако, в чем именно дело, не скажу. Имена классов у Вас там не попутаны часом? настораживает Private WithEvents myGrid As MSHFlexGrid -это иерархический грид а тут? ' А также Set myGrid = Me.FlexGrid редактор форм так назвал бы "обычный" грид... да и то - не так, а как-нибудь Me.FlexGrid1 или Me.FlexGrid(1) это свойство класса - путанницы тут нет Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2005, 14:33:41
|
|||
|---|---|---|---|
|
|||
Передача MSHFlexGrid в ActiveX DLL из Access (c WithEvents) |
|||
|
#18+
ладно, переспрошу.. :)) Вы уверены что в этот метод Код: plaintext 1. 2. отдаете экземпляр MSHFlexGrid? поставьте что-то такое ( уточните у F1) Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2005, 15:37:27
|
|||
|---|---|---|---|
Передача MSHFlexGrid в ActiveX DLL из Access (c WithEvents) |
|||
|
#18+
Ясно. Надежда спасти выходные еще была, по этому начал тестировать: при Set myProdFace.FlexGrid = myGrid тип контрола равен "CustomContorl" и если в классе использовать переменную типа Object или Variant, то через нее можно работать со свойствами от MSHFlexGrid. При попытке передать ссылку на эту переменную переменной класса MSHFlexGrid - "несоответствие типов" или "объект не поддерживает указанное свойство/метод". при Set myProdFace.FlexGrid = myGrid.Object тип контрола равен "MSHFlexGrid" и при использовании переменных любых типов происходят исключения "несоотв. типов" или "объект не поддерживает...". Член-свойство FlexGrid класса myProdFace объявлялся и через Get Property и (прости, Билли) через Let Prpperty и через Public. Классы выбирались Object, Variant и MSHFlexGrid. Залез в Access'е в F2 и обнаружил, что вообще любые объектные переменные моей библиотеки вне зависимости от того, как они объявлены, в Access предоставляются, как Object. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=60&tablet=1&tid=2167771]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 332ms |

| 0 / 0 |
