Функция CreateUnoValue

Връща обект, който представлява стойност със строг тип, базиран на системата от типове на Uno.

Този обект се преобразува автоматично към тип Any от съответния тип, когато се предава към Uno. Типът трябва да бъде зададен като напълно квалифицирано име на тип на Uno.

note

Типът Any се използва често в програмния интерфейс LibreOffice API. Той съответства на типа Variant, използван в други среди за програмиране. Променливите от тип Any могат съдържат произволен тип на Uno и се използват в общите интерфейси на Uno.


Синтаксис:


  CreateUnoValue(Type As String, Value As Object) As Object 

Тип на резултата:

Object

Параметри:

Име

Тип

Описание

Type

String

The fully qualified Uno type name. Supported data types are void, char, boolean, byte, short, unsigned short, long, unsigned long, hyper, unsigned hyper, float, double, string, type, and any. Names are case sensitive and may be preceded by square brackets to indicate an array.

Value

Object

A strictly typed value.


Кодове за грешка:

Ако CreateUnoValue не може да преобразува стойността към зададения тип на Uno, възниква грешка. За преобразуване се използва услугата com.sun.star.script.Converter.

Пример:


   byte_sequence_object = CreateUnoValue("[]byte", Array(85, 3, 27))

Пример:

Тази функция е предназначена за случаи, в които подразбираният механизъм за преобразуване на типове от Basic към Uno е недостатъчен. Така е при извикване на общи методи на API, базирани на Any, например com.sun.star.beans.XPropertySet.setPropertyValue() или com.sun.star.container.XNameContainer.insertByName(). CreateUnoValue() задава обект стойност за неизвестния тип на Uno.

В този пример е използван методът com.sun.star.beans.XPropertySet.addProperty(), за да се създаде свойство на документ, чиито подразбирани стойности изискват употреба на CreateUnoValue():


  With ThisComponent.DocumentProperties.getUserDefinedProperties()
      .addProperty("FOO", com.sun.star.beans.PropertyAttribute.REMOVEABLE, CreateUnoValue("double", 23))
  End With	

Можете да използвате тази функция и за предаване на стойности не от тип Any, но това не се препоръчва. Ако Basic познава целевия тип, използването на CreateUnoValue() ще доведе до излишни преобразувания, които само ще забавят изпълнението на кода на Basic.

Моля, подкрепете ни!