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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> полученеие свойства из строки 
:(
    Опции темы
kb-nn
Дата 29.9.2004, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



всем приветы!

допустим, название свойства у меня записано в строковой переменной.
dim s as string
s="name"

и есть какой-то объект, заведомо имеющий это свойство.

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


PM MAIL ICQ   Вверх
valex13
Дата 29.9.2004, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 29.1.2003
Где: Иркук. область, г . Иркутск

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



Наверно, только вот так:
Код

select case s
  case "name1"
   object.name1 = "hello1"
 case "name2"
   object.name2 = "hello2"
end select

PM MAIL ICQ   Вверх
cardinal
Дата 29.9.2004, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



kb-nn, я не понял, ты прикалываешься?
http://forum.vingrad.ru/index.php?showtopic=23785


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
kb-nn
Дата 29.9.2004, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



да,я помню,что уже спрашивал об этом
мне кажется,это что-то не то.
я ничего не понял.

PM MAIL ICQ   Вверх
cardinal
Дата 29.9.2004, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99





--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
kb-nn
Дата 29.9.2004, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



Цитата

'Функция для получения свойства объекта из стринга
Private Function GetProperty(sourceObject As Object, destinationObject As Object, property As String)
Dim sc As ScriptControl
Set sc = New ScriptControl
With sc
.Language = "vbscript"                  'работаем с vbscript
.AddObject "source", sourceObject            'добавляем source объект
.AddObject "destination", destinationObject      'добавляем destination объект
.ExecuteStatement ("destination= source." & property)  'собственно выполняем действие
End With
End Function

'Пример вызова функции
Private Sub Command1_Click()
Dim s As String
s = "name"
Dim f As Form1
Set f = Me
GetProperty f, Text1, s
End Sub



и значение f.name запишется в text1 ?
PM MAIL ICQ   Вверх
cardinal
Дата 29.9.2004, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Цитата(kb @ 29.9.2004, 13:17)
и значение f.name запишется в text1 ?

Да. То есть name формы будет в TextBox Text1.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
kb-nn
Дата 29.9.2004, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



в TextBox ?
а где там указано,что это textBox?
я думал это обычная переменная


PM MAIL ICQ   Вверх
cardinal
Дата 29.9.2004, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Код
GetProperty f, Text1, s



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
-Mikle-
Дата 30.9.2004, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



А зачем ScriptControl для этих целей?

Код
s="caption"  'имя любого свойства
text1 = CallByName(Form1, s, vbGet)

так же можно записать значение
Код
CallByName Form1, "caption", vbLet, "Hello!!!"


или вызвать доступный метод у объекта
Код
'это в модуле формы
function mmm(s as string, d as Long) as string
  mmm = s & " - " & d
end function

'и где нить можно написать
msgbox CallByName (Me, "mmm", VbMethod, "Hello", 45) 'как ф-ию
'или просто
CallByName Me, "mmm", VbMethod, "Hello", 45 'как процедуру

В качестве первого параметра может выступать объект любого класса


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
cardinal
Дата 30.9.2004, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Прикольное решение smile.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Akina
Дата 30.9.2004, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



kb-nn
Цитата(kb @ 29.9.2004, 15:17)
'Функция для получения свойства объекта из стринга
Private Function GetProperty(sourceObject As Object, destinationObject As Object, property As String)

Нельзя использовать имя GetProperty:
Цитата
To save state information in a DHTML application, you use the GetProperty and PutProperty functions to store and retrieve data.

Это раз - впрочем это лечится просто.

И потом - то ли ты спрашиваешь не то что хочешь спросить, то ли

Код
dim PropertyName as string
PropertyName = "name"
For Each OneObject in MyCollection
  debug.print OneObject.Properties(PropertyName)
Next


Это сообщение отредактировал(а) Akina - 30.9.2004, 08:58


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

PM MAIL WWW ICQ Jabber   Вверх
kb-nn
Дата 30.9.2004, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



ходили слухи,что не все объекты поддерживают свойство Properties.
это правда?


и еще вопрос-
а если у заданного объекта полученного из строки свойства не существует, то как можно как перехватить ошибку?
PM MAIL ICQ   Вверх
Akina
Дата 30.9.2004, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата
ходили слухи,что не все объекты поддерживают свойство Properties

Врут.

Цитата
если у заданного объекта полученного из строки свойства не существует, то как можно как перехватить ошибку?

Так же как и любую другую. Попробуй в конце концов, заодно узнаешь какой будет код ошибки.


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

PM MAIL WWW ICQ Jabber   Вверх
kb-nn
Дата 30.9.2004, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



что-то я не сталкивался с перехватом ошибок.
может расскажешь, как это делать?
что- то я слышал on Error go to
но что и как- толком не понял.
PM MAIL ICQ   Вверх
cardinal
Дата 30.9.2004, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Модератор: А FAQ для чего?

http://forum.vingrad.ru/index.php?act=ST&f=33&t=20722


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Akina
Дата 30.9.2004, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Если не понял - читай еще раз. И еще раз. И поиск. И опять читай. Пока не поймешь. Или пока не поймешь что тебе не понять - а вот тогда спрашивай. Но конкретно, а не вообще - "я типа ни хрена в толк не возьму"...


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

PM MAIL WWW ICQ Jabber   Вверх
cardinal
Дата 2.10.2004, 01:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Akina, как вот это запустить? Кто такие: OneObject и MyCollection?
Код
dim PropertyName as string
PropertyName = "name"
For Each OneObject in MyCollection
debug.print OneObject.Properties(PropertyName)
Next



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
-Mikle-
Дата 2.10.2004, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



сорри что вмешиваюсь...
OneObject - переменная типа Object.
MyCollection - любая коллеция объектов.

например тебе надо перебрать ВСЕ контролы на форме.
ты пишешь:
Код
dim e as control
for each e in me.controls
  if typeof e is TextBox then
     e.forecolor=vbRed
  end if
  if typeof e is Label then
     e.backStyle=0
     e.container.currentX=e.left+15
     e.container.currentY=e.top+15
     e.container.forecolor=&H999999&
     e.container.print e.caption
  end if
next
этот код изменить соответствующее цвет у ВСЕХ TextBox'ов, и напечатает тень под всеми Label'ами

также можно прошнурить только отдельный вид классов
Код
dim e as Label
for each e in me.controls
....
next
этот цикл пройдет токо по всем Label'ам

Код
dim f as Form
for each f in Forms
  unload f
next
этот цикл выгрузит все формы из проекта...

Вообще его полезно использовать во многих случаях, в частности он помогает при хранении в одной коллекции объектов разного типа. например есть два класса FClass и SClass, и коллекция которая хранит вперемешку ссылки на экзепляры этих классов:
Код
dim Col as new collection 'такой способ "as new AnyObject" НЕ рекомендую!
'ради примера, случайно заполним коллекцию
for i=1 to 100
  if Rnd > 0.5 then
     Col.add new FClass
  else
     Col.add new SClass
  end if
next

'а вот так мы пройдемся только по ссылкам на класс FClass
dim c as FClass
for each c in Col
...
next

Очень удобно, имхо... smile.gif

PS: хорошо когда время есть всей этой писаниной заниматься biggrin.gif

Это сообщение отредактировал(а) -Mikle- - 2.10.2004, 20:58


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
cardinal
Дата 2.10.2004, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



-Mikle-, это все мне понятно, но вот я именно не понял, что такое Properties в выше указанном мной куске кода. Такого метода нет. Или я вообще на ручнике в последнее время? qstn.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
-Mikle-
Дата 4.10.2004, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



Цитата(cardinal @ 3.10.2004, 01:45)
-Mikle-, это все мне понятно

Прости что не понял тебя, постарался объяснить подробней.
Цитата(cardinal @ 3.10.2004, 01:45)
но вот я именно не понял, что такое Properties в выше указанном мной куске кода

Это свойство есть НЕ У ВСЕХ объектов. Только у некоторых, например у объектов ADO. Akina, видимо предлжил код именно из этого контекста, где используется объект данных.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Akina
Дата 4.10.2004, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



cardinal
Цитата
что такое Properties в выше указанном мной куске кода

Это коллекция (между прочим) свойств объекта. Действительно, не у всех. Однако, например у всех визуальных. У всех ADO/DAO. Ну, в общем, проверить присутствие оного всегда можно... сктати, если определить переменную типа "Объект", и присвоить ей ссылку на объект, у которого нет пропертей, они вдруг откуда-то появляются... biggrin.gif


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

PM MAIL WWW ICQ Jabber   Вверх
-Mikle-
Дата 4.10.2004, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



Ты это имеешь в виду?
Код
  Dim o As Object
  Set o = Me
  MsgBox o.Properties("Name")

такой код не работает... только что вот проверил...
Или я не правильно понял?


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Akina
Дата 4.10.2004, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



-Mikle-
Сорри, как всегда опять попутал... предыдущий пост относится не к VB, а к VBA...


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

PM MAIL WWW ICQ Jabber   Вверх
cardinal
Дата 4.10.2004, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Akina, вот поэтому я и спросил smile.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
-Mikle-
Дата 5.10.2004, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



Цитата(Akina @ 4.10.2004, 12:55)
предыдущий пост относится не к VB, а к VBA...

А-а-а! блин... а я уж напрягся, думал у меня VB уже глючит smile.gif хотел переустанавливать уже biggrin.gif


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
kb-nn
Дата 5.10.2004, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



уточнить можно?
мне нужно, чтоб работало в VBA for AutoCad
для всех объектов(примитивов)
PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

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


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

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


 




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


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

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