Object= объясните ламеру :)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
0xy
Бывалый
Бывалый
 
Сообщения: 223
Зарегистрирован: 14.06.2006 (Ср) 2:34

Object= объясните ламеру :)

Сообщение 0xy » 19.03.2010 (Пт) 19:53

Вроде вчера я уже создавал этот топег и не пойму, куда он делся?

Вопрос следующий. В проэкте VB есть строки "Object=...*.ocx", и после компиляции, прога ищет эти компоненты на целевом компе (не находит их и падает).
Как можно избежать сего неприятного момента?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Object= объясните ламеру :)

Сообщение Viper » 19.03.2010 (Пт) 20:00

0xy писал(а):Вроде вчера я уже создавал этот топег и не пойму, куда он делся?

Вопрос следующий. В проэкте VB есть строки "Object=...*.ocx", и после компиляции, прога ищет эти компоненты на целевом компе (не находит их и падает).
Как можно избежать сего неприятного момента?
Путем создания и дальнейшего использования программы инсталлятора.
Весь мир матрица, а мы в нем потоки байтов!

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Object= объясните ламеру :)

Сообщение arthur2 » 19.03.2010 (Пт) 20:34

загружаться из main и обрабатывать ошибку загрузки той формы (тех форм) на которой лежат контролы из .ocx
Артур
 
   

NeverGone
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 107
Зарегистрирован: 11.11.2007 (Вс) 21:05
Откуда: Москва

Re: Object= объясните ламеру :)

Сообщение NeverGone » 20.03.2010 (Сб) 0:16

arthur2 писал(а):загружаться из main и обрабатывать ошибку загрузки той формы (тех форм) на которой лежат контролы из .ocx
О. А можно поподробнее, как те ошибки перехватывать? Там код ошибки возвращается или нет?
А то я тоже натыкался на эти грабли… :D

0xy
Бывалый
Бывалый
 
Сообщения: 223
Зарегистрирован: 14.06.2006 (Ср) 2:34

Re: Object= объясните ламеру :)

Сообщение 0xy » 20.03.2010 (Сб) 5:03

Viper писал(а):Путем создания и дальнейшего использования программы инсталлятора.

Достаточно ли просто поместить ocx в папку с прогой, или его обязательно где-то регистрировать?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Object= объясните ламеру :)

Сообщение Viper » 20.03.2010 (Сб) 9:43

0xy писал(а):
Viper писал(а):Путем создания и дальнейшего использования программы инсталлятора.

Достаточно ли просто поместить ocx в папку с прогой, или его обязательно где-то регистрировать?
Нормальный инсталлятор все что надо регистрирует в системе.
Весь мир матрица, а мы в нем потоки байтов!

0xy
Бывалый
Бывалый
 
Сообщения: 223
Зарегистрирован: 14.06.2006 (Ср) 2:34

Re: Object= объясните ламеру :)

Сообщение 0xy » 21.03.2010 (Вс) 1:50

Я в курсе. Но все же хотелось бы получить ответ на мой вопрос ;)

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Object= объясните ламеру :)

Сообщение Antonariy » 21.03.2010 (Вс) 10:55

Иногда достаточно.
Лучший способ понять что-то самому — объяснить это другому.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Object= объясните ламеру :)

Сообщение arthur2 » 21.03.2010 (Вс) 19:53

NeverGone писал(а):О. А можно поподробнее, как те ошибки перехватывать?

On Error :lol: А как же ещё?
Артур
 
   

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Object= объясните ламеру :)

Сообщение Денис » 22.03.2010 (Пн) 8:34

arthur2 писал(а):On Error

Я что-то думал, что так не получится перехватить ошибки при раннем связывании, нэ?
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Object= объясните ламеру :)

Сообщение Хакер » 22.03.2010 (Пн) 10:28

Какая связь между типом связывания и обработкой ошибок?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Object= объясните ламеру :)

Сообщение Денис » 22.03.2010 (Пн) 11:38

Хакер писал(а):Какая связь между типом связывания и обработкой ошибок?



Если Хакер не знает о такой связи, значит такой связи нет. ЧТД.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

0xy
Бывалый
Бывалый
 
Сообщения: 223
Зарегистрирован: 14.06.2006 (Ср) 2:34

Re: Object= объясните ламеру :)

Сообщение 0xy » 23.03.2010 (Вт) 5:07

А какой код ошибки?

PS
А что делать дальше? Грузить другую форму--аля Save Mode?

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Object= объясните ламеру :)

Сообщение Денис » 23.03.2010 (Вт) 8:23

0xy писал(а):Save Mode?

Не сразу допер, что речь шла о Safe mode. :cyclops:
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Object= объясните ламеру :)

Сообщение arthur2 » 23.03.2010 (Вт) 10:01

0xy писал(а):А какой код ошибки?
Наизусть не знаю :oops: А самому проверить?
0xy писал(а):А что делать дальше? Грузить другую форму--аля Save Mode?

Я бы на главной форме зарезервировал место под нужный контрол, и если он доступен, тогда уже перенес бы его на это место ( .Container или даже просто SetParent :D )
Артур
 
   

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Object= объясните ламеру :)

Сообщение Денис » 23.03.2010 (Вт) 10:13

arthur2 писал(а):Я бы на главной форме зарезервировал место под нужный контрол


Хватить вредные советы давать. Автору уже подсказали делать инсталляционный пакет с помощью нормального инсталлятора. Все, вопрос решен: апендицит лечим хирургическим путем. Не надо таблетки советовать.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Object= объясните ламеру :)

Сообщение arthur2 » 23.03.2010 (Вт) 11:31

Денис писал(а):Хватить вредные советы давать.
Фу...

Контрол может быть, например, чужой, и распространять его с программой может быть просто нельзя. Присутствие контрола может быть, например, не обязательным для функционала программы - что же теперь, дохнуть на ровном месте? Диагноз не верен - это не аппендицит, так что нужны как раз таблетки.
Артур
 
   

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Object= объясните ламеру :)

Сообщение Antonariy » 23.03.2010 (Вт) 13:22

Денис писал(а):
arthur2 писал(а):Я бы на главной форме зарезервировал место под нужный контрол


Хватить вредные советы давать.
+1
По идее контрол должен исполнять какие-то функции, а если он их не исполняет по причине отсутствия и от него зависят какие-то другие функции, ради которых писалась программа, то какой смысл в этой программе вообще?
Трупу костыли не помогут.

К тому же делается это по-другому, поздним связыванием через Controls.Add, где и следует обрабатывать ошибку отсутствия контрола..
Лучший способ понять что-то самому — объяснить это другому.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Object= объясните ламеру :)

Сообщение arthur2 » 23.03.2010 (Вт) 14:29

Antonariy писал(а):По идее контрол должен исполнять какие-то функции, а если он их не исполняет по причине отсутствия и от него зависят какие-то другие функции, ради которых писалась программа, то какой смысл в этой программе вообще?
Трупу костыли не помогут.
Antonariy писал(а):К тому же делается это по-другому, поздним связыванием через Controls.Add, где и следует обрабатывать ошибку отсутствия контрола..
Ты уж определись - такая возможность не нужна вообще, или просто есть более рациональный способ. Ещё раз: функции контрола совсем не обязательно жизненно необходимы.

В твоём варианте - сложно сделать контрол с поддержкой событий. По крайней мере, что-то не соображу, как их прицепить к контролу, добавленному таким способом. В моём варианте - форма будет обрабатывать события контрола, если конечно сможет загрузиться.
Артур
 
   

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Object= объясните ламеру :)

Сообщение Antonariy » 23.03.2010 (Вт) 15:40

Ты уж определись - такая возможность не нужна вообще, или просто есть более рациональный способ.
Лучше ты мне скажи, для чего пихать эту возможность туда, куда не нужно?
В моём варианте - форма будет обрабатывать события контрола, если конечно сможет загрузиться.

А загрузиться без контрола она не сможет. Ну и нафига этот вариант?
Лучший способ понять что-то самому — объяснить это другому.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Object= объясните ламеру :)

Сообщение arthur2 » 23.03.2010 (Вт) 19:36

Если контрола нет, то и форма, обрабатывающая его события, не нужна.

Ну, допустим, я хочу встроить в свою программу флеш-ролик. Но если вдруг флеш-контрола на машине нет, то и фиг с ним - запустится программа и без него, а на месте, где должен был быть ролик будет пояснение, почему его там нет и кнопочка для устранения этой проблемы (если пользователь вообще захочет её устранять).

Antonariy писал(а):Ну и нафига этот вариант?
Лучше ты объясни, как в твоём варианте обрабатывать события добавленного контрола
Артур
 
   

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Object= объясните ламеру :)

Сообщение Хакер » 23.03.2010 (Вт) 20:04

Как обычно — WithEvents.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Object= объясните ламеру :)

Сообщение arthur2 » 23.03.2010 (Вт) 20:29

Antonariy писал(а):К тому же делается это по-другому, поздним связыванием через Controls.Add
Или я не понял, или связывание всё же раннее? Ведь позднее связывание предполагает as object, а значит ни каких WithEvents, не говоря уже о прочих издержках :)

Хакер писал(а):Как обычно — WithEvents
По сравнению с моим способом - уже теряем по меньшей мере массивы элементов.
Артур
 
   

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Object= объясните ламеру :)

Сообщение Antonariy » 23.03.2010 (Вт) 20:40

arthur2 писал(а):
Antonariy писал(а):К тому же делается это по-другому, поздним связыванием через Controls.Add
Или я не понял, или связывание всё же раннее? Ведь позднее связывание предполагает as object, а значит ни каких WithEvents, не говоря уже о прочих издержках :)
Если нужны события, то можно оставить ссылку на библиотеку. Но массивы контролов все равно пролетают, да и пусть, невелика потеря.
Лучший способ понять что-то самому — объяснить это другому.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Object= объясните ламеру :)

Сообщение Хакер » 23.03.2010 (Вт) 23:53

Почему массивы-то пролетают?

Да и ActiveX-контролы всегда имеют внутри TLB (иначе они не ActiveX). Невелика проблема и EventSink сгенерировать ручками.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

0xy
Бывалый
Бывалый
 
Сообщения: 223
Зарегистрирован: 14.06.2006 (Ср) 2:34

Re: Object= объясните ламеру :)

Сообщение 0xy » 24.03.2010 (Ср) 0:13

arthur2 писал(а): функции контрола совсем не обязательно жизненно необходимы.

+1
Лично мне контрол понадобился исключительно "для красоты".

arthur2 писал(а):Я бы на главной форме зарезервировал место под нужный контрол, и если он доступен, тогда уже перенес бы его на это место ( .Container или даже просто SetParent :D )

А можно привести пример реализации?
PS
Походу: а какой метод грузит форму?

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Object= объясните ламеру :)

Сообщение arthur2 » 24.03.2010 (Ср) 5:48

Antonariy писал(а):Но массивы контролов все равно пролетают, да и пусть, невелика потеря
Всё-таки, не понимаю, чем мой способ хуже, если в нём нет этой невеликой потери?

А массивы - всё равно можно организовать (ты же сам меня и научил - в теме про таймеры) Но вот только зачем, если с моим способом - изощряться не нужно?

0xy писал(а):А можно привести пример реализации?
Пример реализации чего? Грузишь форму с контролом. Если ошибки нет, то контрол доступен. Свойству контрола .Container присваиваешь то, на чём твой контрол должен лежать. Собственно, всё :D

0xy писал(а):Походу: а какой метод грузит форму?
Форму загрузит любое обращение к этой форме :) Так что можешь сразу брать нужный контрол, а если он не взялся, то это и значит, что он недоступен.
Артур
 
   

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Object= объясните ламеру :)

Сообщение Antonariy » 24.03.2010 (Ср) 8:29

Хакер писал(а):Почему массивы-то пролетают?
А как ты через controls.add создашь массив? Index устанавливается только в дизайне. Как задашь обработчик событий массива?
arthur2 писал(а):Всё-таки, не понимаю, чем мой способ хуже, если в нём нет этой невеликой потери?
Тем, что ты его лишь только что внятно сформулировал. А так же необходимостью таскать мусорные формы, нужные лишь для обработки ошибок их загрузки. При этом обработчик событий массива контролов может существовать лишь в такой форме.
arthur2 писал(а):А массивы - всё равно можно организовать (ты же сам меня и научил - в теме про таймеры)
Что за тема? Вероятно там была речь о чем-то другом, нежели мы тут обсуждаем.
Лучший способ понять что-то самому — объяснить это другому.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Object= объясните ламеру :)

Сообщение Хакер » 24.03.2010 (Ср) 10:46

А как ты через controls.add создашь массив? Index устанавливается только в дизайне. Как задашь обработчик событий массива?

Ну массив контролов является коллекцией. Ничего не мешает создать свою коллекцию со своими индексами, в которую подабавлять ссылки на созданные контролы. Групповая обработка событий делается как обычно в таких случаях — через объект-посредник.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Object= объясните ламеру :)

Сообщение Antonariy » 24.03.2010 (Ср) 10:53

Хакер писал(а):
А как ты через controls.add создашь массив? Index устанавливается только в дизайне. Как задашь обработчик событий массива?

Ну массив контролов является коллекцией. Ничего не мешает создать свою коллекцию со своими индексами, в которую подабавлять ссылки на созданные контролы. Групповая обработка событий делается как обычно в таких случаях — через объект-посредник.
Собственно, это классический способ, но он не называется "массив контролов".
Лучший способ понять что-то самому — объяснить это другому.

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 78

    TopList