Страница: 1 |
Страница: 1 |
Вопрос: CallByName функция (VB6) - ошибка "Object doe
Добавлено: 05.05.11 21:43
Автор вопроса: Сеня
Добрый день!
Есть процедура, где происходит выделение элемента listbox по заданному индексу. Поскольку на форме несколько листбоксов, хочу обобщить это действие (выделение элемента) для всех листобксов в одной процедуре с помощью функции CallByName.
Но вызов CallByName (в VB6) приводит к ошибке "Object doesn't support this property or method".
Фрагмент кода:
***
Sub SelectItem(Obj As Variant, Index As Integer)
CallByName Obj, "selected (Index)", VbLet, True
End Sub
SelectItem listbox_модель, 4
***
Пробовал что-то вроде вложенных функций, но ничо не получается...
CallByName CallByName(Obj, "Selected", VbGet, Index), "", VbLet, True
CallByName CallByName(Obj, "Selected", VbGet, Index), "Selected(Index)", VbLet, True
Есть какие-нибудь идеи?
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Сеня
Вопросов: 3
Ответов: 8
Профиль | | #1
Добавлено: 05.05.11 21:45
P.S. Старательно искал поле для поиска, но безрезультатно. Поэтому, возможно, похожая тема уже была на форуме.
Номер ответа: 2
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #2
Добавлено: 05.05.11 22:30
Object - Форма, в которой прописана процедура
PorcName - Имя процедуры
CallType - Тип процедуры
Args() - Список аргументов
"selected (Index)" - Так процедура не может называться...
Пример c Листбоксом.
Номер ответа: 3
Автор ответа:
Сеня
Вопросов: 3
Ответов: 8
Профиль | | #3
Добавлено: 06.05.11 08:49
Отлично, помогло, большое спасибо!!!
Номер ответа: 4
Автор ответа:
Сеня
Вопросов: 3
Ответов: 8
Профиль | | #4
Добавлено: 06.05.11 09:16
ProcName - Имя процедуры
Да, но в CallByName можно также читать/изменять свойства, поэтому не обязательно должна быть процедура.
Выделение элемента через ListIndex требует смещения фокуса на объект, т.е. прежде чем сделать
CallByName List1, "ListIndex", VbLet, 0
нужно
CallByName List1, "SetFocus", VbMethod
Это нормально, и допустимо. Но мне все-таки интересно, как проставить значение свойства Selected (i) у listbox через CallByName. И возможно ли это вообще.
Номер ответа: 5
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #5
Добавлено: 07.05.11 22:44
CallByName List1, Selected, VbLet, 2 выделяет вторую строку. Тебе это нужно было?
Номер ответа: 6
Автор ответа:
Сеня
Вопросов: 3
Ответов: 8
Профиль | | #6
Добавлено: 09.05.11 19:47
Да! Именно. У тебя работает? У меня не работает.
Номер ответа: 7
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #7
Добавлено: 11.05.11 23:07
Да
Странно :\
Почему именно коллбайнейм? Непонятно. Почему нельзя в этой процедуре просто написать чё нить типа
ИМХО так будет проще и понятней.
Номер ответа: 8
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #8
Добавлено: 11.05.11 23:09
Точнее не ControlCollection, а ControlArray
Номер ответа: 9
Автор ответа:
Сеня
Вопросов: 3
Ответов: 8
Профиль | | #9
Добавлено: 13.05.11 21:12
Суперская идея!.. Пойду попробую.
Потому что я чайник, и даже не знал об этом! Ты открываешь мне глаза.