|
|
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
Уважаемый All, насколько я понимаю, создать элемент управления на форме можно только в режиме конструктора. А как с помощью VBA создать, к примеру, прямоугольник с определенными свойствами, если пользователь нажмет на кнопку в открытой форме? Или все же делать этот ректангл скрытым до момента нажатия на кнопку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 15:11:18 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
...поясню... Есть задача прорисовывать прямоугольники с заданными в полях шириной и высотой в определенном месте формы при нажатии на кнопку. Как реализовать? Скажите от чего плясать, дальше сам разберусь, плиз... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 15:41:58 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
Был бы Vb6, делалось бы наподобие Dim NewShape as Control (?) Set NewShape = new ИмяУжеИмеющегосяШейпаНаФорме вроде бы так, точно не помню, а проверить не на чем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 15:52:50 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
...попробовал, не хочет создавать нью объект... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 16:10:40 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
А заранее можно наделать (с запасом) этих прямоугольников? Если можно - то лучше менять их свойства (ширину/толщину/координаты) и показывать, чем создавать новые. к тому же создание новых возможно только в mdb - в mde этого сделать не получиться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 16:14:13 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
>Senin Viktor заранее можно, но это будет примерно около 50-ти штук. Всякий раз по разному. Чаще конечно не более 10-ти... Вот и я к тому, что придется наверное играть лефтами да топами, хайтами да вайтами... а все-таки, если это возможно в mdb, то как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 16:19:54 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
...грубо говоря хотят сделать упрощенный вариант компоновочной программы дабы операторам удобно было визуально определять наиболее оптимальный способ расположения изображений на одном листе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 16:23:42 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
...кстати говоря, а про реализацию Drag&Drop с этими прямоугольниками кто может подсказать? Я пытался ловить координаты мыши и тем самым отслеживать какой прямоугольник тащить. Может есть что-то уже реализованное с перетаскиванием? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 16:39:54 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
Для создания контролов см. Функции CreateControl, CreateReportControl ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 16:58:40 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
А нельзя ли (.mdb) открыть экземпляр (as new), при манипуляциях редактировать (в режиме конструктора в скрытом виде)) базовый экземпляр сабформы, а по окончании (текущей манипуляции) - сохранять базовый и заменять открытый экземпляр. Тогда достаточно иметь на форме по одному "запасному" объекту каждого типа, на любой момент времени. (с которыми и манипулировать). Видел кстати проект, где "рабочим" файлом был .mdb (именно для динамического конструирования), а библиотеки хранились в .mde ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 17:00:31 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
>АлексейЕ см. Функции CreateControl, CreateReportControl эти функции работают только в режиме конструктора, в том и петрушка... >All ...то есть я так понял в mdb, в момент необходимости создания объекта, программно переключать форму в режим конструктора, затем создавать нужные контролы с помощью CreateControl и снова переключаться в режим формы? А не слишком ли это муторно и долго в плане ожидания пользователем нежели вариант с уже встроенными скрытыми контролами? P.S: Кстати, а с перетаскиванием как бороться? Мож кто подскажет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 17:51:21 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
ИМХО, наблюдается попытка использования среды Access для несвойственных для нее функций. Только без обид. Для таких задач нужны другие средства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 18:03:34 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
>incold Ни каких обид, я сам это понимаю. Просто не работал с другими "средствами". Так, с Дельфи баловался немножко. Просто здесь необходимо сочетание БД и такой вот фигни. БД в Аксессе, посему и фигню эту тож в Аксессе пыркаюсь сделать. А что метры (читай мЭтры) посоветуют? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 18:19:09 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
incold, И какие же это средства? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 18:26:40 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
Насколько я понял, идет попытка совместить базу данных с каким-то графическим построителем. А Access, прежде всего, предназначен для учета данных. Я не говорил, что знаю какие средства нужно использовать. Я сказал, что Access для этого не очень подходит (а точнее очень не подходит). Может для такой задачи Ексель больше подойдет? Может еще что-нибудь? Тут я затрудняюсь сказать. Конечно на Access многое можно сделать, и потом говорить вот какой я крутой программист, вот только нужно ли все это делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 18:37:02 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
А вообще, программное создание контролов - это вообще разрешимая задача? Ведь, если подумать, мы, конструируя эти контролы через GUI Access или еще чего, все равно создаем какой-то код - что за контрол, какие свойства, какие данные, процедуры обработки,... А потом эта "статическая" информация хранится. А ведь было бы гораздо интереснее создавать их в момент выполнения программы, а затем уничтожать. Тогда бы мы могли задавать лишь алгоритмы обработки (форматирования) форм, а не хранили бы данные - в каком месте формы стоит какой контрол. (Да простят меня спецы, если глупость сморозил) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 18:44:05 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
нет. "работающая форма" - всегда новый экземпляр (Set F = new Form_BASIS). Основной (Form_BASIS - то что хранится в базе) - всегда в режиме конструктора (скрыт). При изменении в "работающем" экземпляре (вызове скрытого контрола) - добавить новый скрытый в основной и сохранить. По завершении манипуляций с "извлеченным контролом" скопировать все свойства контролов с "работающего экземпляра" в скрытый (стандартный двойной цикл по контролам и их свойствам), находящийся в режиме конструктора и сохранить. разрушить "работающий экземпляр" и создать новый работающий из только что сохраненного основного. Опять в нем по одному скрытому объекту каждого вида. Есть и иной подход - попробовать проанализировать предметную область, выделить классы задач. Для каждого класса - свой шаблон с максимально необходимым количеством скрытых контролов (именно под этот класс задач). Методы (обработчики манипуляций) могут быть общими. __ ЗЫ: а чем плохо позаимствовать не аксесовскую форму (как ActiveX) с возможностью (методами) кидать на нее (ее, не аксессовские) контролы в рабочем режиме? Или я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 18:46:54 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
"...грубо говоря хотят сделать упрощенный вариант компоновочной программы дабы операторам удобно было визуально определять наиболее оптимальный способ расположения изображений на одном листе..." 2 G&P Кстати, имеется аналогичная (более или менее) задача. Интересно было бы услышать решение. Хотя бы- куда копать?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 19:52:24 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
К вопросу о визуальном представлении информации в MS Access... Не хочу бить себя пяткой в грудь, но собаку я на этом съел :) Access, конечно же, не та оболочка в которой надо решать поставленную задачу, но другой мы не имели и использовали то что было. Наша задача была следущей: есть музей - поэтажные планы начерченые в AutoCad, есть экспонаты - у каждого инвентарный номер. Требуется: схематично нанести экспонаты на планы (как квадратики) и иметь возможность перетаскивать эти квадратики с места на место, отслеживая, реальное перемещение экспонатов. Берем чертёж, переводим его в формат wmf (Windows Meta File) и кладём его как картинку на backgroung формы. Потом создаём квадратики: Label (надпись) - столько сколько нам может потребоваться (Экспериментально найдено что форма можен "снести" около 750 элементов управления) и делаем их невидимыми. Работает это так: есть таблица с экспонатами (ЭкспонатID, инвентарный номер, описание и т.д.) и таблица которая описывает положение квадратика на плане (КвадратикID, ЭкспонатID, ИмяПлана, КоординатаX, КоординатаY). Специальная процедура берет записи из второй таблицы и расставляет квадратики в соответствии с координатами. При перетаскивании квадратика, на событие MouseUp, новые координаты считываются и заносятся в таблицу. Надо сказать - система работает превосходно: во время очередной инвентаризации, просто распечатывают схему и сличают её с реальной обстановкой. Если кому интересны технические решения - пишите постараюсь ответить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2003, 02:18:37 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
А еще можно создать форму без заголовка, кнопок, и прочих рюшечек, сделать ее всплывающей и не скрываемой (постоянно поверх остальных), вставить в нее ваш прямоугольник и позиционировать ее на экране так, как заблагорассудится. При необходимости можно создать еще одну копию такой формы, настроить ее и опять вывести и спозиционировать там где надо, и еще одну, и еще... Но все это, конечно, имхо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2003, 09:28:55 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
2lobodava: При перетаскивании квадратика, на событие MouseUp, новые координаты считываются и заносятся в таблицу. Если кому интересны технические решения - пишите постараюсь ответить. Интересное решение. Можно поподробней? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2003, 10:59:40 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
http://am.rusimport.ru/MsAccess/f2.aspx?id=2607 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2003, 12:58:07 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
G&P: Интересное решение. Можно поподробней? Да не вопрос :) Для начала надо создать новый модуль класса с именем clsActionLabel и скопировать в него этот код: Код: 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. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. Теперь создаём форму и в разделе Detail рисуем два лэйбла: lblTest1 и lblTest2. А в модуле формы пишем Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. И последний штрих - создаём новый модуль (не модуль класса, а просто модуль), называем его как хотим и пишем код, который будет управлять поведением всех лэйблов: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Теперь осталось всё сохранить, открыть форму и протестировать: наводим мышь на один из лэйблов, жмём левую клавишу и тащим... наводим мышь на край лэйбла (курсор изменяется) жмём левую клавишу и изменяем размеры. Если в Функции OnLabelMouseMove написать: Код: plaintext 1. 2. то лэйбл в горизонтальном направлении будет двигаться только при правой нажатой клавише мыши, а ширину будет менять только если удерживать Ctrl и нажимать левую клавишу мыши. (ну это так, как пример...) А теперь к вопросу "Как этим пользоваться?" Допустим надо считывать позицию только что передвинутого лейбла. В нашем примере лэйблов всего два и можно было бы для каждого написать код на событие MouseUp, но ничего не стоит нарисовать пятьсот лейблов и тогда для каждого писать код (причём одинаковый) - застрелиться. Выход: написать функцию, которую только что отпущеный лэйбл будет вазывать передавая ссылку на себя как аргумент: Код: plaintext 1. 2. 3. 4. !!! Надо только не забыть "раскомментировать" строку в модуле формы: ' albActionLabel.OnMouseUp = "OnLabelMouseUp" Ну, это, я пошёл... Будут вопросы, заходи... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2003, 00:53:04 |
|
||
|
Создание эл-тов управления...
|
|||
|---|---|---|---|
|
#18+
А я вот тут примерчик сделал... Наконец-то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2004, 20:09:46 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32177622&tid=1672288]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 228ms |
| total: | 370ms |

| 0 / 0 |
