---
title: "Интерфейс IPropertyList"
type: interface
api: [api7]
tags: [interface, api7, ipropertylist]
sources:
  - ipropertylist.html
---

*API интерфейсов. Версия 7 > Приложение > Работа с Панелью свойств  > Интерфейс IPropertyControl  > IPropertyControl - свойства *


## Интерфейс IPropertyList

![IPropertyList](../resources/images_ipropertylist.jpg)

Интерфейс элемента управления Панели свойств Поле со списком.
| |
| --- |
Элемент панели свойств
Иерархия:
IKompasAPIObject
IPropertyControl
IPropertyList
Примечание:
1. Данный интерфейс можно получить через интерфейс коллекции элементов управления панели свойств IPropertyControls.
2. При нажатии на кнопку элемента управления вызывается событие ksPropertyManagerNotify::ControlCommand.
3. При изменении значения элемента управления вызывается событие ksIPropertyManagerNotify::ChangeControlValue.


## Add - Добавить значение в список

Синтаксис Automation:
```
void Add (const VARIANT& newVal);
```
Синтаксис COM:
```
HRESULT Add ([in]VARIANT newVal);
Входные параметры:
newVal    - новое значение в раскрывающемся списке.
```
Примечание:
1. Тип данных нового значения определяется типом элемента управления из перечисления ControlTypeEnum:
•для типа ksControlListInt используется тип long,
•для типа ksControlListReal используется тип double,
•для типа ksControlListStr ограничения на значение не накладываются,
•для типа ksControlListLength используется тип double,
•для типа ksControlListAngle используется тип double.
2. В список можно добавить только уникальные значения. Если в списке уже есть значение, которое пытаются добавить повторно, то оно не будет добавлено.
3. В список можно сразу передать массив значений. Пример...
4. См. также: IPropertyControl::Value - Значение элемента управления.


## Пример передачи в список массива

long varsCount = 100;
// Массив для наполнения комбобокса
SAFEARRAYBOUND sabNewArray;
sabNewArray.cElements = varsCount;
sabNewArray.lLbound = 0;
SAFEARRAY * pSafe = ::SafeArrayCreate( VT_R8, 1, &sabNewArray );
if( pSafe )
{
for ( long j = 0; j < varsCount; j++ )
{
double val = j * 0.5;
::SafeArrayPutElement( pSafe, &j, &val);
}
_variant_t varArr;
varArr.vt = VT_ARRAY | VT_R8;
varArr.parray = pSafe;
// Передадим массив значений в контрол
dt->Add( varArr );
---


## CheckState - Состояние опции

Тип данных: состояние опции из перечисления CheckStateEnum.
Синтаксис Automation:
```
CheckState = iObject.CheckState    Получить свойство (* )
iObject.CheckState = CheckState    Установить свойство (* )
CheckState = iObject.GetCheckState()    Получить свойство(**)
iObject.SetCheckState (CheckState)    Установить свойство (**)
```
Синтаксис COM:
```
iObject->get_CheckState (&CheckState)    Получить свойство
iObject->put_CheckState (CheckState)    Установить свойство
```
Примечание:
Это свойство влияет на состояние переключателя, если свойство WithCheck имеет значение TRUE, и на отображение текста в поле элемента управления, подробнее см. CheckStateEnum.


## ClearList - Очистить список значений

Синтаксис Automation:
```
void ClearList();
```
Синтаксис COM:
```
HRESULT ClearList();
```
Примечание:
Очищает раскрывающийся список и содержимое его поля ввода.


## Count - Количество элементов списка

Тип данных: long.
Синтаксис Automation:
```
Count = Object.Count    Получить свойство (* )
Count = Object.GetCount()    Получить свойство(**)
```
Синтаксис COM:
```
Object.get_Count( &Count )    Получить свойство
```
Примечание:
Свойство доступно только для чтения.


## Find - Найти индекс строки в списке по значению

Синтаксис Automation:
```
long Find (const VARIANT FAR& val);
```
Синтаксис COM:
```
HRESULT Find([in] VARIANT Val, [out, retval] long * PVal);
Входные параметры:
val    - значение в раскрывающемся списке.
Возвращаемое значение:
Индекс строки со значением val в списке    - в случае успеха,
-1    - в случае неудачи.
```
Примечание:
Метод работает только на несортированном списке, см. IPropertyList::Sort.


## MaxValue - Максимальное значение

Тип данных: VARIANT (long или double).
Синтаксис Automation:
```
MaxValue = iObject.MinValue    Получить свойство (* )
MaxValue = iObject.GetMinValue()    Получить свойство(**)
```
Синтаксис COM:
```
iObject->get_MaxValue (&MaxValue)    Получить свойство
```
Примечание:
1. Свойство доступно только для чтения.
2. Тип данных определяется типом элемента управления из перечисления ControlTypeEnum:
•для типа ksControlListInt используется тип long,
•для типа ksControlListReal используется тип double,
•для типа ksControlListStr ограничения на значение не накладываются,
•для типа ksControlListLength используется тип double,
•для типа ksControlListAngle используется тип double.


## MinValue - Минимальное значение

Тип данных: VARIANT (long или double).
Синтаксис Automation:
```
MinValue = iObject.MinValue    Получить свойство (* )
MinValue = iObject.GetMinValue()    Получить свойство(**)
```
Синтаксис COM:
```
iObject->get_MinValue (&MinValue)    Получить свойство
```
Примечание:
1. Свойство доступно только для чтения.
2. Тип данных определяется типом элемента управления из перечисления ControlTypeEnum:
•для типа ksControlListInt используется тип long,
•для типа ksControlListReal используется тип double,
•для типа ksControlListStr ограничения на значение не накладываются,
•для типа ksControlListLength используется тип double,
•для типа ksControlListAngle используется тип double.


## Precision - Точность сравнения

Тип данных: double.
Синтаксис Automation:
```
Precision = iObject.Precision    Получить свойство (* )
iObject.Precision = Precision    Установить свойство (* )
Precision = iObject.GetPrecision()    Получить свойство(**)
iObject.SetPrecision(Precision)    Установить свойство (**)
```
Синтаксис COM:
```
iObject->get_Precision(&Precision)    Получить свойство
iObject->put_Precision(Precision)    Установить свойство
```
Примечание:
1. Свойство позволяет установить точность сравнения значений в списке. Сравнение происходит при добавлении значения в список IPropertyList::Add.
2. Если добавляемое значение в списке есть, то оно не добавляется при установке значения IPropertyControl::Value.
3. Если устанавливается значение, которое есть в списке, оно селектируется при поиске IPropertyList::Find.
4. Свойство работает для вещественных типов списка: ksControlListReal, ksControlListLength, ksControlListAngle.
5. По умолчанию устанавливается точность 0.000001.


## ReadOnly - Запрет редактирования значения

Тип данных: BOOL.
Синтаксис Automation:
```
ReadOnly = iObject.ReadOnly    Получить свойство (* )
iObject.ReadOnly = ReadOnly    Установить свойство (* )
ReadOnly = iObject.GetReadOnly()    Получить свойство(**)
iObject.SetReadOnly (ReadOnly)    Установить свойство (**)
```
Синтаксис COM:
```
iObject->get_ReadOnly (&ReadOnly)    Получить свойство
iObject->put_ReadOnly (ReadOnly)    Установить свойство
Значение свойства:
TRUE    - ввод нового значения с клавиатуры в раскрывающийся список запрещен; элемент управления работает в режиме DropList,
FALSE    - ввод нового значения с клавиатуры в раскрывающийся список разрешен; элемент управления работает в режиме DropDown,
```


## SetCurrentByIndex - Установить текущую строку по индексу

Синтаксис Automation:
```
BOOL SetCurrentByIndex( long index );
```
Синтаксис COM:
```
HRESULT SetCurrentByIndex([in] long Index, [out, retval] VARIANT_BOOL * PVal);
Входные параметры:
index    - номер строки в раскрывающемся списке.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Метод работает только на несортированном списке, см. IPropertyList::Sort.


## SetValueRange - Установить новые ограничения на значение

Синтаксис Automation:
```
BOOL SetValueRange (const VARIANT& minVal, const VARIANT& maxVal);
```
Синтаксис COM:
```
HRESULT SetValueRange ([in] VARIANT minVal, [in] VARIANT maxVal, [out, retval] VARIANT_BOOL * pVal);
Входные параметры:
minVal    - минимальное допустимое значение (тип данных long или double),
maxVal    - максимальное допустимое значение (тип данных long или double).
```
Примечание:
Тип данных максимального и минимального допустимого значения определяется типом элемента управления из перечисления ControlTypeEnum:
•для типа ksControlListInt используется тип long,
•для типа ksControlListReal используется тип double,
•для типа ksControlListStr ограничения на значение не накладываются,
•для типа ksControlListLength используется тип double,
•для типа ksControlListAngle используется тип double.


## Sort - Сортировать список

Тип данных BOOL.
Синтаксис Automation:
```
Sort = iObject.Sort    Получить свойство (* )
iObject.Sort = Sort    Установить свойство (* )
Sort = iObject.GetSort()    Получить свойство(**)
iObject.SetSort (Sort)    Установить свойство (**)
```
Синтаксис COM:
```
iObject->get_Sort (&Sort)    Получить свойство
iObject->put_Sort (Sort)    Установить свойство
Значение свойства:
TRUE    - значения в списке будут сортироваться при добавлении новых,
FALSE    - значения в списке будут в той последовательности, в какой они были добавлены.
```


## Step - Шаг

Тип данных: BOOL
Синтаксис Automation:
```
Step = Object.Step    Получить свойство (* )
Object.Step = Step    Установить свойство (* )
Step = Object.GetStep()    Получить свойство(**)
Object.SetStep( Step )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_Step( &Step )    Получить свойство
Object.put_Step( Step )    Установить свойство
Шаг изменения значения колесом мыши.
```


## Width - Шаблон для расчета ширины элемента управления в горизонтальном положении (в символах)

Тип данных long.
Синтаксис Automation:
```
Width = iObject.Width    Получить свойство (* )
iObject.Width = Width    Установить свойство (* )
Width = iObject.GetWidth()    Получить свойство(**)
iObject.SetWidth (Width)    Установить свойство (**)
```
Синтаксис COM:
```
iObject->get_Width (&Width)    Получить свойство
iObject->put_Width (Width)    Установить свойство
Значение свойства:
Количество видимых символов в поле при горизонтальном положении Панели свойств.
```
Примечание:
Для расчета ширины элемента управления используется символ «0».


## WithCheck - Наличие опции рядом с полем ввода

Тип данных: BOOL.
Синтаксис Automation:
```
WithCheck = iObject.WithCheck    Получить свойство (* )
iObject.WithCheck = WithCheck    Установить свойство (* )
WithCheck = iObject.GetWithCheck()    Получить свойство(**)
iObject.SetWithCheck (WithCheck)    Установить свойство (**)
```
Синтаксис COM:
```
iObject->get_WithCheck (&WithCheck)    Получить свойство
iObject->put_WithCheck (WithCheck)    Установить свойство
Значение свойства:
TRUE    - рядом с элементом управления выводится опция,
FALSE    - рядом с элементом управления не выводится опция.
```
Примечание:
На текущий момент свойство не реализовано, его значение можно установить только равным FALSE.
