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

Поиск:

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


Бывалый
*


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

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



не подскажете, как обратиться к свойству объекта, если оно (свойство) находится в какой- то переменной.
PM MAIL ICQ   Вверх
~FoX~
Дата 1.6.2004, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

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



Хех..........
Код

var
 s: string;
begin
 s:= Edit1.Text; // Text  - свойство объекта Edit1  - s - содержит значение этого свойства
 ShowMessage(s);// Выводим s - т.е. это свойство
end;



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
kb-nn
Дата 1.6.2004, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



мне нужно не значение свойства. а его название!
например

dim s as string
s="backColor"
dim f as form1

как можно обратиться к заданному таким образом свойству формы? именно через "s"


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


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


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

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



f.properties.item(s)


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

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


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

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



Цитата(Akina @ 1.6.2004, 17:25)
f.properties.item(s)

Не все объекты имеют свойство Properties, а вернее почти никто не имеет за исключением ADO объектов


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Akina
Дата 1.6.2004, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



boevik
В примере kb-nn - форма. Уж она-то имеет, будьте спокойны... biggrin.gif



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

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


Инженер
****


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

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



Цитата
f.properties.item(s)

Akina, ты о чем?

Код
Private Sub Command1_Click()
Dim s As String
Dim f As Form
Set f = Form1
s = "BackColor"
SetProperty f, s, &HFFFFFF
's = "Visible"
'SetProperty f, s, False
End Sub

Private Function SetProperty(frm As Form, prt As String, value As Variant) As Boolean
SetProperty = True
Select Case prt
   Case "BackColor"
       frm.BackColor = value
   Case "Visible"
       frm.Visible = value
   Case Else
       SetProperty = False
End Select
End Function

Думаю идея ясна. Может кто-нибудь что получше посоветует...


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

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


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

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



Цитата(Akina @ 1.6.2004, 18:07)
boevik
В примере kb-nn - форма. Уж она-то имеет, будьте спокойны...  biggrin.gif

Это в каком VB такое возможно?


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
boevik
Дата 1.6.2004, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

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



У меня тут варианы возник:
на форме нужен TextBox и подсоединить к проекту Microsoft ScriptControl
Код

Dim s As String
s = "backColor"
Dim f As Form1

Set f = Me
Dim o As New ScriptControl

o.Language = "vbscript"
o.AddObject "f", f
o.AddObject "Text1", Me.Text1
o.ExecuteStatement ("Text1= f." & s)

В итоге в Text1 получим значение backColor




--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
cardinal
Дата 1.6.2004, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


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

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



Цитата
как можно обратиться к заданному таким образом свойству формы? именно через "s"

Я так и не понял. Установить или считать значение? Если установить, то можно использовать то что я написал выше, если считать значение, то можно по такому же принципу написать функцию GetProperty или использовать то что предложил boevik.

boevik, мне немного пришлось изменить твой код, т.к. то, что ты написал у меня не прошло. А вобще очень прикольный вариант решения задачи. Может напишешь пару строк к коду, тогда его в FAQ можно засунуть. Напиши если будет время заодно, где (в какой книге) об этом vbscript'e можно что почитать и т.д.

Думаю надо тебе рейтинг повысить smile.gif

Код
Private Sub Command1_Click()
Dim s As String
s = "BackColor"
Dim f As Form1
Set f = Me
Dim o As ScriptControl
Set o = ScriptControl1
o.Language = "vbscript"
o.AddObject "f", f
o.AddObject "Text1", Me.Text1
o.ExecuteStatement ("Text1= f." & s)
Text1 = Hex(Text1)
End Sub



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

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


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

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



cardinal
Ты использовал контроль, а я - библиотеку. Это первое отличие.
Во вторых Hex не желательно использовать, потому что если вместо BackColor, я захочу узнать, к примеру Name, то вылетит ошибка.


Надо добавить в References библиотеку Microsoft ScriptControl
Код


'Функция для получения свойства объекта из стринга
Private Function GetPropery(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

'Пример вызова функции
Dim s As String
s = "name"
Dim f As Form1
Set f = Me

GetPropery f, Text1, s


Это сообщение отредактировал(а) boevik - 1.6.2004, 19:21


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
cardinal
Дата 1.6.2004, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


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

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



Цитата
Ты использовал контроль, а я - библиотеку. Это первое отличие.

Согласен. Торможу в последнее время smile.gif. Я пробежался по References и на Microsoft ScriptControl не наткнулся, а в Components нашел. smile.gif
Цитата
Во вторых Hex не желательно использовать, потому что если вместо BackColor, я захочу узнать, к примеру Name, то вылетит ошибка.

Это я так написал, для того, чтобы понять что у меня за корявое число в TextBox'е появляется. smile.gif

http://forum.vingrad.ru/index.php?act=ST&f...=23807&unread=1


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

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


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

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



Цитата
http://forum.vingrad.ru/index.php?act=ST&f...=23807&unread=1

Уважил smile.gif


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

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


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

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


 




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


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

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