|
|
|
Сохранение значений свойств для ActiveX Control
|
|||
|---|---|---|---|
|
#18+
Всем доброго здоровичка! Прошу помощи!!! Создал элемент управления для доступа и работы с БД. Для сохранения значений свойств его в режиме разработки использую PropertyBag. При однократном использовании *.ocx в проекте все работает нормально. Если же добавлять его на несколько форм одного проекта, то свойства в режиме разработки вроде как сохраняются, но в режиме выполнения используется первое активизированное значение элемента управления. В чем дело не пойму! Помогите кто чем сможет! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 11:28 |
|
||
|
Сохранение значений свойств для ActiveX Control
|
|||
|---|---|---|---|
|
#18+
Все правильно делаете? PropertyChanged вызывается? Вообще хорошо бы код показать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 11:59 |
|
||
|
Сохранение значений свойств для ActiveX Control
|
|||
|---|---|---|---|
|
#18+
Код приложил. Смысл в том, что строка подключения к серверу и путь к sql-файлам читаются из ini-файла, а имена таблиц БД и sql-файлов устанавливаются в режиме разработки. Элемент управления - обычный Дата_Навигатор. На одной форме работает - на нескольких лажа... P.s.: я мог где-то уже "нарушить" алгоритм - эту последняя версия. Заранее благодарен! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 16:30 |
|
||
|
Сохранение значений свойств для ActiveX Control
|
|||
|---|---|---|---|
|
#18+
Доброго понедельника! Возвращаюсь к своей теме. Еще раз "сужаю" свою проблему: 1. при инициализации ActiveX надо считать значение свойства Table (OpenRecordset) - получается, что UserControl_ReadProperties происходит после UserControl_Initialize; 2. при добавлении ActiveX на несколько форм одного проекта свойства в режиме разработки вроде как сохраняются, но в режиме выполнения используется первое активизированное значение элемента управления ActiveX (свойства Table и SQLFileName). Думаю решение связанно с контейнером (у меня это Форма), но в его тексте свойства элемента управления отображаются как надо. Не проходите мимо!!! Еще раз привожу код (укороченный): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. Не забывайте про тег SRC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2007, 09:38 |
|
||
|
Сохранение значений свойств для ActiveX Control
|
|||
|---|---|---|---|
|
#18+
Ответ лежит на поверхности - не открывайте рекордсет в событии UserControl_Initialize. Сохранение строки подключения в свойствах контрола - не самая лучшая практика. Вы что, подключаетесь к БД не через диалог Login? Обращение к файлу на диске в событии Initialize каждого контрола на форме - то же не лучшая практика. В VB6 лучше работать через один коннекшн, а если у вас будут десятки коннекшенов, по числу форм, программа замедлится, СУБД нагрузится. И обратите внимание на замечание модератора, иногда люди попросту не будут изучать длинный неотформатированный программный код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 10:38 |
|
||
|
Сохранение значений свойств для ActiveX Control
|
|||
|---|---|---|---|
|
#18+
Да, и еще, работая через множество коннекшенов вы рискуете Deadlock получить. Так что подумайте о том что бы "ручками" давать коннекшн контролу. А еще лучше чтобы UserControl вообще не открывал рекордсет, тем более коннекшн, более удачное решение - когда userControl умеет привязать свои контролы к готовому рекордсету в рантайме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 10:43 |
|
||
|
Сохранение значений свойств для ActiveX Control
|
|||
|---|---|---|---|
|
#18+
Worobjoff,спасибо за участие! Продумаю ситуацию...Но, в принципе, как быть со свойствами? К своему примеру: при добавлении ActiveX на несколько форм одного проекта свойства в режиме разработки вроде как сохраняются, но в режиме выполнения используется первое активизированное значение элемента управления ActiveX (у меня это свойства Table и SQLFileName). Это на будущее для меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 11:15 |
|
||
|
Сохранение значений свойств для ActiveX Control
|
|||
|---|---|---|---|
|
#18+
Не очень понимаю такой вопрос. В событии UserControl_ReadProperties передается параметр PropBag который и содежрит сохраненные значения свойств. Есть ошибка в вашем коде PropertyChanged ConnectionString надо заменить на PropertyChanged "ConnectionString" Аналогично - остальное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 11:22 |
|
||
|
Сохранение значений свойств для ActiveX Control
|
|||
|---|---|---|---|
|
#18+
Многие программисты находятся в заблуждении относительно информативности кода по сравнению со свойствами элементов на форме. Это происходит потому что на форме нет кода. Но можно освоить такую практику программирования, когда у вас в форме будет мало программного кода, и тогда строки в нем станут более информативны чем свойства контролов в конструкторе форм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 11:27 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=34957934&tid=2163054]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
59ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 397ms |

| 0 / 0 |
