GetControlType? Как програмно определить тип объекта \ кон.?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

GetControlType? Как програмно определить тип объекта \ кон.?

Сообщение xenomorph » 06.02.2006 (Пн) 22:18

GetControlType? Как програмно определить тип объекта \ контрола?
--
Привет всем!

Есть контрол определённый как объект:

т.е. проще не примере:

Dim obj_Control As Object
Set obj_Control = Text1

Как програмно определить тип контрола -
т.е. Что внутри текстбокс?
есть ли GetControlType?

Это надо для перечисления свойств контролов
рассположеных на форме -

Dim objControl As Control
Private Sub Command1_Click()
On Error Resume Next
For Each objControl In Controls
objControl.Enabled = False
Next objControl
End Sub
--
Заранее огромное спасибо!
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Сообщение xenomorph » 06.02.2006 (Пн) 23:10

'Reference: TypeLib Information
Код: Выделить всё
'-------------------------------------
Option Explicit
Public Function GetObjectType(ByRef Obj As Object) As String
    Dim IFaceInfo As TLI.InterfaceInfo
    Set IFaceInfo = TLI.InterfaceInfoFromObject(Obj)
    GetObjectType = Right(IFaceInfo.Name, Len(IFaceInfo.Name) - 1)
End Function
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 06.02.2006 (Пн) 23:39

Хм... TypeName?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

CodeName33
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 297
Зарегистрирован: 01.09.2004 (Ср) 13:25
Откуда: SPb

Сообщение CodeName33 » 07.02.2006 (Вт) 11:24

А TypeName почему не подходит?

Код: Выделить всё
Dim Obj As Object

Set Obj = Text1

MsgBox TypeName(Obj)
Программисты не глючат - глючат компиляторы...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 07.02.2006 (Вт) 23:10

А TypeName почему не подходит?

Потому что он не уникальный.
Кроме того, если объект не реализует IDispatch то это вообще невозможно. Даже если реализует, то то же не факт.
Короче, в общем случае никак.
Кстати, это что, попытка себе ответить?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 08.02.2006 (Ср) 18:38

TypeOf и перебор всех классов в проекте? :twisted:
Долго, но эффективно...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 08.02.2006 (Ср) 18:41

Tamplier писал(а):TypeOf и перебор всех классов в проекте? :twisted:
Долго, но эффективно...

Я бы сказал по другому, БЕС ТОЛКУ. Напомни, что у нас делает TypeOf?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 10.02.2006 (Пт) 16:23

ANDLL писал(а):
Tamplier писал(а):TypeOf и перебор всех классов в проекте? :twisted:
Долго, но эффективно...

Я бы сказал по другому, БЕС ТОЛКУ. Напомни, что у нас делает TypeOf?

Проверяет схожее ли название выбранного объекта с преложенным.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 10.02.2006 (Пт) 16:32

Tamplier писал(а):Проверяет схожее ли название выбранного объекта с преложенным.

Разумеется, это не так.
Lasciate ogni speranza, voi ch'entrate.

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 11.02.2006 (Сб) 14:23

А чем вам не подходит?:
Код: Выделить всё
private sub ViewText (viewtextcontrol as Control)
if typeof viewtextcontrol is vb.label then
txtContainer.text=viewtextcontrol.caption
elseif typeof viewtextcontrol is vb.combobox then
txtcontainer.text=viewtextcontrol.text
endif
end sub

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

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 11.02.2006 (Сб) 15:29

Ну например тем, что такого класса в проекте может не быть.
Кроме того, TypeOf проверяет, поддерживает ли класс указанный интерфейс, а не то что Вы думаете.
Кроме того, тебе написать код класса, у которого будет имя Class1, а проверка TypeOf ... is vb.label будет говорить true?
это фрагмент рабочей процедуры. Кто скажет, что это не определение контрола, пусть кинет в меня столько камней, сколько припрятал запазухой.

Не определяет она тип контрола, тебе это уже два человека говорили. Если она у тебя один раз правильно его определила, это не значит, что всегда будет правильно определять.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 12.02.2006 (Вс) 18:16

Ну, не на... Всю жизнь нормально определяла, все работало...


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

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

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

    TopList