|
Работа с динамической UserForm (VBA/Excel)
|
|||
---|---|---|---|
#18+
Всем доброго времени суток! Собственно есть код: Код: 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.
Форма с ListView отображается отлично. Все заданные свойства и поля отрабатывают на "ура", но когда я пытаюсь заполнить ListView, мне выдается сообщение: "Run-time error '394' Property is write-only" . Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Как я понимаю, frmData.Designer.Controls.Add("MSComCtlLib.ListViewCtrl") (что-то вроде макета дизайнера), добавляет контрол на форму и позволяет изменять только часть свойств, но не дает вносить содержимое. frmData.Controls.Add("MSComCtlLib.ListViewCtrl") выдает ошибку, как я понимаю, в виду того что frmData на момент обращения еще не сгенерированна и поэтому мы не можем добавить на нее контрол. Попробовал обойти данную ситуацию добавив следующий код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Но он так же не отрабатывает, хотя никаких ошибок не выдает. В связи с этим появилось несколько вопросов: 1. Есть ли возможность заполнить содержимое ListView на динамически созданной форме? 2. Почему не отрабатывает Call LWDActivate, а в частности ilwData.BackColor = RGB (20, 20, 20)? 3. Где можно более подробно почитать о работе с динамически создаваемыми объектами? __________________ С уважением, Lepaj ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2010, 15:30 |
|
Работа с динамической UserForm (VBA/Excel)
|
|||
---|---|---|---|
#18+
LepajВсе заданные свойства и поля отрабатывают на "ура", но когда я пытаюсь заполнить ListView, мне выдается сообщение: "Run-time error '394' Property is write-only". Показали бы конкретную строчку что ли. 1) Да, иначе какой смысл? 2) Науке неизвестно что такое LWDActivate 3) Работа с ними не отличается ничем от работы со статическими контролами. Jah loves you. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2010, 17:31 |
|
Работа с динамической UserForm (VBA/Excel)
|
|||
---|---|---|---|
#18+
AntonariyПоказали бы конкретную строчку что ли. Если мы добавим вот эти строки, то выскакивает ошибка: "Run-time error '394' Property is write-only". Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Если допишем динамически создаваемый код для формы, в моем случае frmData код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Т.е. для динамически созданного модуля формы UserForm1 код будет выглядеть так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
В принципе если код в процедуре LWDActivate модуля frmData вставить MsgBox, то сообщение отрабатывает, а если пытаться изменить ListView или добавить строку, код как будто игнорируется. Надеюсь, это хоть немного внесло ясность :( __________________ С уважением, Lepaj ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2010, 18:48 |
|
Работа с динамической UserForm (VBA/Excel)
|
|||
---|---|---|---|
#18+
К сожалению оригинал на работе, с компа у знакомых попытался воссоздать ситуацию)))) __________________ С уважением, Lepaj ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2010, 19:20 |
|
Работа с динамической UserForm (VBA/Excel)
|
|||
---|---|---|---|
#18+
Все проблему решил! Может кому пригодится... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
С уважением, Lepaj ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2010, 08:54 |
|
Работа с динамической UserForm (VBA/Excel)
|
|||
---|---|---|---|
#18+
Antonariy 3) Работа с ними не отличается ничем от работы со статическими контролами. Я думаю, что все же различия есть. Когда мы работаем с динамическими контролами, мы сначала создаем их при помощи дизайнера frmData.Designer.Controls.Add("MSComCtlLib.ListViewCtrl") , который позволяет задать свойства контрола, но не дает возможность работать с самим контентом, поэтому заполнять сам контент приходится на вновь созданной форме. В случае если мы работаем со статическими контролами, то используем frmData.Controls.Add("MSComCtlLib.ListViewCtrl") , пропуская режим дизайнера и можем сразу начать работать с контентом, т.е. сразу добавляем контрол на форму. В моем случае с ListView. Может кто нибудь сталкивался с тем, где можно поподробней про это почитать? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2010, 09:39 |
|
Работа с динамической UserForm (VBA/Excel)
|
|||
---|---|---|---|
#18+
В любой книге по VBA этому вопросу уделено гораздо меньше подробностей, чем уже написали вы :) Единственное отличие — как контрол создается, в дизайнере или кодом. После создания никаких отличий нет. Только названия констант нужно заменить их значениями, если ссылки на контрол нет. В VB6 есть еще одно отличие, которого нет в VBA — массив контролов. Jah loves you. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2010, 10:49 |
|
Работа с динамической UserForm (VBA/Excel)
|
|||
---|---|---|---|
#18+
AntonariyВ любой книге по VBA этому вопросу уделено гораздо меньше подробностей, чем уже написали вы :) Да, Вы правы, уже столкнулся с такой проблемой :) __________________ С уважением, Lepaj ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2010, 11:03 |
|
Работа с динамической UserForm (VBA/Excel)
|
|||
---|---|---|---|
#18+
Было бы неплохо выложить файл с примером. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2010, 12:10 |
|
|
start [/forum/topic.php?fid=60&msg=37013112&tid=2159155]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
116ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 225ms |
0 / 0 |