Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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-сайт: xawp.narod.ru
 Профиль | | #2
Добавлено: 05.05.11 22:30
Object doesn't support this property or method
Объект не поддерживает это свойство или метод.


CallByName Object as Object, PorcName as String, CallType As VbCallType, Args() as Variant


Object - Форма, в которой прописана процедура
PorcName - Имя процедуры
CallType - Тип процедуры
Args() - Список аргументов

  1. CallByName Obj, "selected (Index)", VbLet, True

"selected (Index)" - Так процедура не может называться...

Пример c Листбоксом.

  1. ' Добавление элемента
  2. CallByName List1, "AddItem", VbMethod, "Hello"
  3. ' Выделение элемента
  4. CallByName List1, "ListIndex", VbLet, 0

Ответить

Номер ответа: 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-сайт: houselab.narod.ru
 Профиль | | #5
Добавлено: 07.05.11 22:44
как проставить значение свойства Selected (i) у listbox через CallByName

CallByName List1, Selected, VbLet, 2 выделяет вторую строку. Тебе это нужно было?

Ответить

Номер ответа: 6
Автор ответа:
 Сеня



Вопросов: 3
Ответов: 8
 Профиль | | #6 Добавлено: 09.05.11 19:47
CallByName List1, Selected, VbLet, 2 выделяет вторую строку. Тебе это нужно было?


Да! Именно. У тебя работает? У меня не работает.

Ответить

Номер ответа: 7
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #7
Добавлено: 11.05.11 23:07
У тебя работает?

Да

У меня не работает.

Странно :\

хочу обобщить это действие (выделение элемента) для всех листобксов в одной процедуре с помощью функции CallByName.

Почему именно коллбайнейм? Непонятно. Почему нельзя в этой процедуре просто написать чё нить типа
  1. ControlCollection(ControlIndex).Selected(StringNumber) = True
?
ИМХО так будет проще и понятней.

Ответить

Номер ответа: 8
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #8
Добавлено: 11.05.11 23:09
Точнее не ControlCollection, а ControlArray :)

Ответить

Номер ответа: 9
Автор ответа:
 Сеня



Вопросов: 3
Ответов: 8
 Профиль | | #9 Добавлено: 13.05.11 21:12
Точнее не ControlCollection, а ControlArray :)


Суперская идея!.. Пойду попробую.

Почему именно коллбайнейм? Непонятно.


Потому что я чайник, и даже не знал об этом! Ты открываешь мне глаза.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам