Страница: 1 |
Страница: 1 |
Вопрос: Как создать объект во время выполнения
Добавлено: 06.06.06 18:43
Автор вопроса: Nj | ICQ: 223663115
Я не пойму, как создать объект(хз, может контрол или класс) типа FileListBox или PictureBox во время выполнения - в проекте нет форм, только модуль.
Dim L as PictureBox
L.Pset(x,y) - ругается, что не выбран with-block или объектная переменная...
Попробывал еще всякие Set, As Object, As Control, Load L... и прочую фигню - не выходит. Выручайте!
Ответы
Всего ответов: 14
Номер ответа: 1
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #1
Добавлено: 07.06.06 04:20
а CrateObject не пробовал?
Номер ответа: 2
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #2
Добавлено: 07.06.06 11:14
В смысле, CreateObject? Объект типа ящик, думается, ему ни к чему...
Номер ответа: 3
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #3
Добавлено: 07.06.06 12:23
Dim a As Object
Set a = CreateObject("VB.PictureBox"
429 ActiveX component can't create object
Номер ответа: 4
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #4
Добавлено: 07.06.06 13:47
VBшные контролы никогда не были полноценными COM объектами, это вся хрень из виртуальной машины. Используй MS Forms:
Set a = CreateObject("Forms.TextBox.1"
Номер ответа: 5
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #5
Добавлено: 07.06.06 14:55
А как насчет вообще ничего не создавать? Может есть другие способы решения проблемы? Интересуюсь, как ставится проблема в более широком смысле?
Номер ответа: 6
Автор ответа:
Nj
ICQ: 223663115
Вопросов: 21
Ответов: 285
Профиль | | #6
Добавлено: 08.06.06 22:26
2 LamerOnLine - Большое Спасибо!
а также спасибо всем остальным, кто подумал над этой темой. Кстати, такой вопрос, из области торетических знаний: Это позднее связывание или раннее?
Номер ответа: 7
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #7
Добавлено: 09.06.06 11:18
Ну, если ты объявляешь объектную переменную как Object - уже позднее в принципе. Если подключишь библу в References и объявишь типизировано - будет раннее
Номер ответа: 8
Автор ответа:
Nj
ICQ: 223663115
Вопросов: 21
Ответов: 285
Профиль | | #8
Добавлено: 11.06.06 00:06
Ок. Спасибо. Жаль - позднее говорят медленне...
Номер ответа: 9
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #9
Добавлено: 11.06.06 23:44
Вообще обычно чисто от винта, компонент редко создать надо... Если надо, так это обычно массив компонентов одного типа...
например при отображении картинок, можеть потребоваться массив Image, так вот этот image можно изначально создать массивом (кинуть на форму image и в св-во задать ему Index=0) затем когда надо подгрузить ещё один image, для отображение очередной картинки, то просто "загрузить" ещё один эл. массива (имеджа), типа...
Load Image1 (Image1.Count+1)
затем задать ему нужные свойства...
Image1 (Image1.Count-1).Left, Top, Visible итп...
Номер ответа: 10
Автор ответа:
Nj
ICQ: 223663115
Вопросов: 21
Ответов: 285
Профиль | | #10
Добавлено: 12.06.06 15:15
2 HACKER Спсаибо, но проблема в том, что мне нужны функциональные возможности контрола в модуле...
Номер ответа: 11
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #11
Добавлено: 12.06.06 19:06
Ну и дык когда элемент массива контрола создан, обратится к нему можно откуда угодно, и с модуля в том числе...
Номер ответа: 12
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #12
Добавлено: 13.06.06 10:23
Хак, читаем вопрос:
в проекте нет форм, только модуль.
Номер ответа: 13
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #13
Добавлено: 13.06.06 20:47
а да ой
Номер ответа: 14
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #14
Добавлено: 14.06.06 11:25
Ага, вот и ой Была бы форма - добавлять VBшные контролы проще чем блины лопать - Controls.Add...
Возможно даже это более рациональный метод - раскошелиться на форму, ибо VB - не тот язык где имеет смысл считать лишние килобайты
Жаль - позднее говорят медленне...
МТС - люди говорят Шутка.
Опять же, эти потери IDispath крайне редко дают себя знать в VB, ибо там тормозов и без того хватает. Не будешь использовать этот объект в Time Critical цикле - разницы не заметишь