Путем создания и дальнейшего использования программы инсталлятора.0xy писал(а):Вроде вчера я уже создавал этот топег и не пойму, куда он делся?
Вопрос следующий. В проэкте VB есть строки "Object=...*.ocx", и после компиляции, прога ищет эти компоненты на целевом компе (не находит их и падает).
Как можно избежать сего неприятного момента?
О. А можно поподробнее, как те ошибки перехватывать? Там код ошибки возвращается или нет?arthur2 писал(а):загружаться из main и обрабатывать ошибку загрузки той формы (тех форм) на которой лежат контролы из .ocx
Viper писал(а):Путем создания и дальнейшего использования программы инсталлятора.
Нормальный инсталлятор все что надо регистрирует в системе.0xy писал(а):Viper писал(а):Путем создания и дальнейшего использования программы инсталлятора.
Достаточно ли просто поместить ocx в папку с прогой, или его обязательно где-то регистрировать?
NeverGone писал(а):О. А можно поподробнее, как те ошибки перехватывать?
arthur2 писал(а):On Error
Хакер писал(а):Какая связь между типом связывания и обработкой ошибок?
0xy писал(а):Save Mode?
Наизусть не знаю А самому проверить?0xy писал(а):А какой код ошибки?
0xy писал(а):А что делать дальше? Грузить другую форму--аля Save Mode?
arthur2 писал(а):Я бы на главной форме зарезервировал место под нужный контрол
Фу...Денис писал(а):Хватить вредные советы давать.
+1Денис писал(а):arthur2 писал(а):Я бы на главной форме зарезервировал место под нужный контрол
Хватить вредные советы давать.
Antonariy писал(а):По идее контрол должен исполнять какие-то функции, а если он их не исполняет по причине отсутствия и от него зависят какие-то другие функции, ради которых писалась программа, то какой смысл в этой программе вообще?
Трупу костыли не помогут.
Ты уж определись - такая возможность не нужна вообще, или просто есть более рациональный способ. Ещё раз: функции контрола совсем не обязательно жизненно необходимы.Antonariy писал(а):К тому же делается это по-другому, поздним связыванием через Controls.Add, где и следует обрабатывать ошибку отсутствия контрола..
Лучше ты мне скажи, для чего пихать эту возможность туда, куда не нужно?Ты уж определись - такая возможность не нужна вообще, или просто есть более рациональный способ.
В моём варианте - форма будет обрабатывать события контрола, если конечно сможет загрузиться.
Лучше ты объясни, как в твоём варианте обрабатывать события добавленного контролаAntonariy писал(а):Ну и нафига этот вариант?
Или я не понял, или связывание всё же раннее? Ведь позднее связывание предполагает as object, а значит ни каких WithEvents, не говоря уже о прочих издержкахAntonariy писал(а):К тому же делается это по-другому, поздним связыванием через Controls.Add
По сравнению с моим способом - уже теряем по меньшей мере массивы элементов.Хакер писал(а):Как обычно — WithEvents
Если нужны события, то можно оставить ссылку на библиотеку. Но массивы контролов все равно пролетают, да и пусть, невелика потеря.arthur2 писал(а):Или я не понял, или связывание всё же раннее? Ведь позднее связывание предполагает as object, а значит ни каких WithEvents, не говоря уже о прочих издержкахAntonariy писал(а):К тому же делается это по-другому, поздним связыванием через Controls.Add
arthur2 писал(а): функции контрола совсем не обязательно жизненно необходимы.
arthur2 писал(а):Я бы на главной форме зарезервировал место под нужный контрол, и если он доступен, тогда уже перенес бы его на это место ( .Container или даже просто SetParent )
Всё-таки, не понимаю, чем мой способ хуже, если в нём нет этой невеликой потери?Antonariy писал(а):Но массивы контролов все равно пролетают, да и пусть, невелика потеря
Пример реализации чего? Грузишь форму с контролом. Если ошибки нет, то контрол доступен. Свойству контрола .Container присваиваешь то, на чём твой контрол должен лежать. Собственно, всё0xy писал(а):А можно привести пример реализации?
Форму загрузит любое обращение к этой форме Так что можешь сразу брать нужный контрол, а если он не взялся, то это и значит, что он недоступен.0xy писал(а):Походу: а какой метод грузит форму?
А как ты через controls.add создашь массив? Index устанавливается только в дизайне. Как задашь обработчик событий массива?Хакер писал(а):Почему массивы-то пролетают?
Тем, что ты его лишь только что внятно сформулировал. А так же необходимостью таскать мусорные формы, нужные лишь для обработки ошибок их загрузки. При этом обработчик событий массива контролов может существовать лишь в такой форме.arthur2 писал(а):Всё-таки, не понимаю, чем мой способ хуже, если в нём нет этой невеликой потери?
Что за тема? Вероятно там была речь о чем-то другом, нежели мы тут обсуждаем.arthur2 писал(а):А массивы - всё равно можно организовать (ты же сам меня и научил - в теме про таймеры)
А как ты через controls.add создашь массив? Index устанавливается только в дизайне. Как задашь обработчик событий массива?
Собственно, это классический способ, но он не называется "массив контролов".Хакер писал(а):А как ты через controls.add создашь массив? Index устанавливается только в дизайне. Как задашь обработчик событий массива?
Ну массив контролов является коллекцией. Ничего не мешает создать свою коллекцию со своими индексами, в которую подабавлять ссылки на созданные контролы. Групповая обработка событий делается как обычно в таких случаях — через объект-посредник.
Сейчас этот форум просматривают: Google-бот и гости: 78