Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при передаче контрола в метод 
V
    Опции темы
Тутанхамец
Дата 10.3.2006, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: 4
Всего: 6



В VB есть какая-нибудь хитрость при передаче контрола в процедуру?

Вот в моем классе есть метод, принимающий TreeView:

Код


Public Sub FillTree(tree As TreeView)

....

End Sub



А из формы идет вызов этого метода:

Код

Private Sub Command1_Click()
Dim Test As CTest
Set Test = New CTest

...

Test.FillTree (TreeView1)
End Sub


При нажатии на command1 выдает ошибку, что "объект не имеет такого метода". Прочие методы, которые без передачи объекта, вызываются нормально.

Пробовал указывать byref перед параметром в объявлении метода. Пробовал описать параметр не как treeview, а как Object или variant. Пробовал dim tmp as variant: set tmp=Treeview1:Test.FillTree(tmp). Результат всё тот же.

Никто часом не знает? smile


PM MAIL   Вверх
Akina
Дата 10.3.2006, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Попробуй в класс ввести мембер - TreeView, его присваивать, а из метода класса работать с мембером.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Тутанхамец
Дата 10.3.2006, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: 4
Всего: 6



Вообще-то я уже так и сделал, спасибо.)

Просто из любопытства хотелось бы понять - глупость ведь какая-то. И помню, главное, что раньше передавал в VB объекты в процедуры. На том компе, где сейчас сижу, моих прог нету старых, к сожалению.
PM MAIL   Вверх
Тутанхамец
Дата 10.3.2006, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: 4
Всего: 6



Всё, вопрос решен.

Объявление (можно без byref):

Код

Public Sub FillTree(ByRef tree As TreeView)

...

End Sub


Вызов(!!!):

Код

Test.FillTree TreeView1



Параметр передается без скобок! А компилер мог бы и прямо об этом говорить. Народ, никогда не попадайте на эту лажу, как я.
PM MAIL   Вверх
Akina
Дата 10.3.2006, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Тутанхамец @ 10.3.2006, 12:22 Найти цитируемый пост)
Параметр передается без скобок! А компилер мог бы и прямо об этом говорить.

А ты в справке поройся - там очень подробно рассказано когда скобки и когда без. Да и тут тема есть с тем же объяснением, и даже по-русски.
Добавлено @ 11:54
Кстати. Если метод принимает объект строго определенного типа - то введение мембера есть более правильное действие. Мало того что это позволяет один раз передать и до разрушения больше этим не заниматься, так еще и появляется возможность работать с контролом оттуда, откуда он не виден (скажем из прогрессора или таймера другой формы) - т.е. не заниматься перекидками через флаги и прочую ерунду.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Тутанхамец
Дата 10.3.2006, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: 4
Всего: 6



Я знаю, когда нужны скобки, а когда нет. Но забыл. smile А компилер мог бы не вешать мне про отсутствие метода у объекта. Вот я что имел в виду. Это так, старческое ворчание. smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.1911 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.