Как получить значение свойства в литеральном виде?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
maksimal
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 31.05.2005 (Вт) 14:47

Как получить значение свойства в литеральном виде?

Сообщение maksimal » 31.05.2005 (Вт) 14:52

Есть контрол и есть у него свойства, которые представлены как внутренние константы. Когда я пытаюсь получить их значения при выполнении программы выдается значение этого свойства в числовом виде, а мне надо в строковом или литеральном. Что надо прописать и где? C этим я сталкивался при программмировании на VB в Excel но никак не могу найти ответ на этот вопрос.

Заранее спасибо...

Kirill1983
Обычный пользователь
Обычный пользователь
 
Сообщения: 78
Зарегистрирован: 05.05.2005 (Чт) 11:27

Сообщение Kirill1983 » 31.05.2005 (Вт) 14:58

воспользуйся оператором str()

Kirill1983
Обычный пользователь
Обычный пользователь
 
Сообщения: 78
Зарегистрирован: 05.05.2005 (Чт) 11:27

Сообщение Kirill1983 » 31.05.2005 (Вт) 15:00

будет тебе строка=str(контрол.числовоезначение)

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 31.05.2005 (Вт) 15:22

не получится у тебя с Str() (тем более,что нужен CStr()) :lol:

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

maksimal
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 31.05.2005 (Вт) 14:47

Сообщение maksimal » 31.05.2005 (Вт) 15:26

Kirill1983 писал(а):будет тебе строка=str(контрол.числовоезначение)


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

а вообще не работает, то что вы предлжили - как были числа так и остались.
Может пример мне покажите. Например хочу Option1.Caption = Cstr(Option1.Alignment) или
msgbox Option1.Alignment - число выдает хуть как. Кажется что то надо на уровне модуля прописать - или как?
Помню что-то вроде ????Value : Type = Я идиот! Убейте меня, кто-нибудь!
Не помню короче...

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 31.05.2005 (Вт) 15:41

Я не совсем понимаю, в чем проблема. Но разве отменили старый, добрый Str$?
Это точно должно работать:
Dim a as integer ' объявляешь переиенную, как число, можешь не целое, а какой-нибудь другой тип использовать
Dim b as string ' Думаю, понятно, строка
a=Твой_контрол.Свойство
b=str$(a) ' переводим числовое значение в строку.

А вообще, можешь поконкретнее задать вопрос. Не совсем понятно, какую строку тебе надо получить.
Процедура клонирования завершена.
Коррекция имплантированного сознания соответствует принятым алгоритмам.
Уникальный идентификатор скопирован в чип временного паспорта.
Активация прав гражданина ожидается в течение 24 часов

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 31.05.2005 (Вт) 15:48

Помню что-то вроде ????Value : Type = Я идиот! Убейте меня, кто-нибудь!
Не помню короче...


TypeValue() - но это также тебе не поможет, только своя функция :lol:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.05.2005 (Вт) 15:51

Человек страдает фигнёй, не понимая, в чём отличие machine-readable от human-readable...

Код: Выделить всё
private enum properties
  prop1
  prop2
  prop3
end enum

private arr(prop1 to prop3) as string

private sub usercontrol_initialize
  arr(prop1)="Property1"
  arr(prop2)="Property2"
  arr(prop3)="Property3"
end sub

public property get Property1 as string
  property1=arr(prop1)
end property

public property get Property2 as string
  property2=arr(prop2)
end property

public property get Property3 as string
  property3=arr(prop3)
end property
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 31.05.2005 (Вт) 15:54

GSerg
:lol: :D

maksimal
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 31.05.2005 (Вт) 14:47

Сообщение maksimal » 31.05.2005 (Вт) 15:59

Oxygen писал(а):
А вообще, можешь поконкретнее задать вопрос. Не совсем понятно, какую строку тебе надо получить.

Смотри пушистенькая. пример.
У контрола option1 (радиокнопка) есть свойство Alingment, которое имеет несколько заранеее определенных значений:
Left Justify - или 0
и Right Justify - или 1

Если я в программе пишу
msgbox Option1.Alignment, то мне выдается "0"
если я сделаю
msgbox Cstr(Option1.Alignment) или типа того - все равно буит "0" пусть даже это и не числовой а строковый параметр. А мне надо чтобы выдввалось "Left Justify" или "Right Justify"

Жду...

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 31.05.2005 (Вт) 16:01

Жду...

Жди дальше :lol:
за тебя никто это делать не собирается :twisted:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.05.2005 (Вт) 16:02

А, не...
Он хотел так...

Код: Выделить всё
Option Explicit

Private Sub Form_Load()
  MsgBox literate(Option1.Alignment)
End Sub

Private Function literate(ByVal what As AlignmentConstants) As String
  literate = Choose(what + 1, "vbLeftJustify", "vbRightJustify", "vbCenter")
End Function
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 31.05.2005 (Вт) 16:05

GSerg
ну зачем же ты это написал - человек даже сам подумать не хочет, еще и командует, что типа ЖДЕТ от нас готовенькое решение :evil:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.05.2005 (Вт) 16:07

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

maksimal
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 31.05.2005 (Вт) 14:47

Сообщение maksimal » 31.05.2005 (Вт) 16:11

GSerg писал(а):Человек страдает фигнёй, не понимая, в чём отличие machine-readable от human-readable...


потому что я human и данные мне нужны для Хуманоидов )))

А писать для всех свойств функции и перечисления - это долго и не правильно. Вопрос упрощается:
Есть или нет в VB возможность возвращать значение свойств внутренних констант контролов - в "Человеческом виде". Или для этого мне придется писать функции, как предложено....

maksimal
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 31.05.2005 (Вт) 14:47

Сообщение maksimal » 31.05.2005 (Вт) 16:12

Konst_One писал(а):GSerg
ну зачем же ты это написал - человек даже сам подумать не хочет, еще и командует, что типа ЖДЕТ от нас готовенькое решение :evil:


Ну извини дорогой)) - жду это неправильно - я умоляю))

Не серчай...

а ждал я не решения - хотя почему бы и нет...)))

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.05.2005 (Вт) 16:16

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 31.05.2005 (Вт) 16:22

GSerg
совсем парня развратил :)

maksimal
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 31.05.2005 (Вт) 14:47

Сообщение maksimal » 31.05.2005 (Вт) 16:23

GSerg писал(а):В VB всё есть...
http://bbs.vbstreets.ru/viewtopic.php?p=115383#115383

Уж ссослал так ссослал.

Пойду разбираться....

всем спасибо))

maksimal
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 31.05.2005 (Вт) 14:47

Сообщение maksimal » 31.05.2005 (Вт) 16:28

сходил - не разобрался)))
От куда в VB Тли))))
Пойду опять...

Такой легкий вопрос поставил меня к стенке...

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 31.05.2005 (Вт) 16:30

ну уж подключи библу то: TypeLib Information

maksimal
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 31.05.2005 (Вт) 14:47

Сообщение maksimal » 31.05.2005 (Вт) 18:05

Konst_One писал(а):ну уж подключи библу то: TypeLib Information

Подключил - почитал инфу на эту ТЛЮ - завал.
И так:
Tlbinf32.dll , дает доступ к информации об интерфейсах COM-классов, реализованных в DLL. Для выбранного интерфейса Tlbinf32.dll позволяет получить информацию о методах и свойствах соответствующего COM-объекта, параметрах и типах возвращаемых значений. Так же, она предоставляет средства для вызовов соответствующих методов (аналоги оператора CallByName языка Visual Basic 6.0). прекрасно.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.06.2005 (Ср) 7:51

Раз подключил, тогда ещё раз: http://bbs.vbstreets.ru/viewtopic.php?p=115383#115383...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

maksimal
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 31.05.2005 (Вт) 14:47

Сообщение maksimal » 01.06.2005 (Ср) 11:53

MSVBVM60.DLL\3 - что за 3. Хуть в справке и пример такой приводится, сказано что источник 3 - а что это и с чем его - не понимаю. Это также написано в Object Browser по поводу библиотеки VBRUN:
Library VBRUN
D:\WINDOWS\system32\msvbvm60.dll\3
Visual Basic runtime objects and procedures
Вообчем библиотека номаная, хорошая, полезная и все же где ее еще можно пользовать - кто и где ее практиковал - напишите если ен сложно)))

Вообщем на интуитивном уровне разобрался подставил "AlignConstants" в NamedItem(".....") и все заработало.
Но все же хоцца сказать. Тот хелп который я скачал с сайта Мелкософт по TLI - это кошмар какой-то, тока с топором можно врубаться))). Может есть что-нить с примерчиками - чтобы голову не ломать. Пусть на английском.

спасибо)))

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 01.06.2005 (Ср) 13:42

maksimal писал(а):MSVBVM60.DLL\3 - что за 3.

Номер TYPELIB-ресурса.
Изображение


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 165

    TopList