Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: перебор свойств
 
 автор: kot_k_k   (13.11.2012 в 12:17)   личное сообщение
 
 

как можно перебрать все свойства объекта не используя их имена?

для чего: - есть объект (это из Инвентора)

Dim oDoc As DrawingDocument
Set oDoc = ThisApplication.ActiveDocument.SelectSet(1)

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

  Ответить  
 
 автор: akkorn   (13.11.2012 в 12:34)   личное сообщение
 
 

Ну так что может быть проще?

Пишем так примерно:

On Error Resume Next
Dim i As Long, ii As String

For i = 0 To oDoc.Properties.Count - 1
ii = ii & oDoc.Properties(i).Name
ii = ii & " = "
ii = ii & oDoc.Properties(i).Value
ii = ii & vbCrLf
Next i

MsgBox ii
On Error GoTo 0



On Error Resume Next тут обязателен, т.к. имя имеют все свойства, а вот значение не обязательно все (оно м.б. тупо не присвоено). Соотв при обращении- ошибка.

  Ответить  
 
 автор: kot_k_k   (13.11.2012 в 12:47)   личное сообщение
47 Кб.
 
 

я наверно неправильно обозвал - наверно это атрибут или ХЗ
вот где я хочу полазить (см. рис.) - залезть во все дырки дерева
т.е. мне нужно писать

oDoc.SelectSet(1).AttribeteSets.Item(i).Item(5)
oDoc.SelectSet(1).Leader.AllNodes.Item(1)

нужно знать все ветки - бухнуться можно, а вот как достучаться и заменить AttribeteSets ... Leader .... на

oDoc.SelectSet(1).Первое_свойство
oDoc.SelectSet(1).Второе_свойство

ХЗ полный

п.с. у него ваще нет такого свойства Properties.

  Ответить  
 
 автор: akkorn   (13.11.2012 в 12:53)   личное сообщение
 
 

гхм, начнем с малого.. А в чем Вы работаете? VB/VBA или VB.NET или..?

Посмотрите здесь (не оно?):
http://www.cad.ru/ru/forum/index.php?PAGE_NAME=read&FID=20&TID=7807

если пропертиса нет, то скорее это уже VB.NET
Тадысь должно быть что-то наподобии PropertySets

Не?

p.s. Если и последнее не катит, напишите после Ваших определений в коде слово oDoc и поставьте точку. Вылезет список свойств. Перемотайте его до первых букофф на P и снимите скрин с экрана... У мя нет .NET и мне не проверить ни как у себя...

  Ответить  
 
 автор: akkorn   (13.11.2012 в 13:01)   личное сообщение
 
 

Я понял. Скрин все показал. К сожалению, нахрапом, у мя это не выйдет. Необходимо иметь такую же объектную модель, дабы ее подключить. И желательно ту же среду программирования. Пока бишь у меня есть только иная среда программирования...

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

  Ответить  
 
 автор: kot_k_k   (13.11.2012 в 13:07)   личное сообщение
 
 

с рекурсией и ежу понятно - не понятно как обратиться к свойству объекта перебором

за ссылку спасибо - но это перебор свойств только одной ветки - там их до фига таких веток, вот как ее получить? (бьется лбом о клаву)

  Ответить  
 
 автор: akkorn   (13.11.2012 в 13:08)   личное сообщение
 
 

по номеру свойства. там есть что-то типа propertis?

скорее всего нет... так. А что нам мешает пройтись по всем свойствам оператором цикла
For Each...Next

Dim x As Object
For Each x In oDoc
    MsgBox TypeName(x).Name
Next x

  Ответить  
 
 автор: kot_k_k   (13.11.2012 в 13:26)   личное сообщение
 
 

нет не катит.

вот нашел нечто - но хз что получится

может пригодится кому, будем копать.
с библиотекой TLBINF32.DLL

Private Sub ListProps(comServer As Object)
Dim IFaceInfo As TLI.InterfaceInfo
Dim mem As TLI.MemberInfo
Set IFaceInfo = TLI.InterfaceInfoFromObject(comServer)
On Error Resume Next
  For Each mem In IFaceInfo.Members
    If mem.InvokeKind = INVOKE_PROPERTYGET Then
      Debug.Print "Property " & mem.Name & " = " & _
 TLI.InvokeHook(comServer, mem.MemberId, INVOKE_PROPERTYGET)
    End If
  Next
End Sub


http://www.programmersforum.ru/showthread.php?t=205654

  Ответить  
 
 автор: akkorn   (15.11.2012 в 08:45)   личное сообщение
 
 

получилося? опыт был бы полезен :)

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList