Страница 1 из 1

SetEnumList не понимает массив типа comp

Добавлено: 28 янв 2010, 17:26
galover
Пытаюсь передать массив типа comp в функцию SetEnumList , чтобы определить NRec выбранного элемента, но ничего не получается, код такой:

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

      var CONRecs: array [1..4] of comp;
      var CONames: array [1..4] of string;
      
      // Заполняем массивы значениями и NRec-ами
      SetCOItemParams(GetUserCONRec(),   CONRecs[1], CONames[1]);   
      SetCOItemParams(0032000000000047h, CONRecs[2], CONames[2]);
      SetCOItemParams(00320000000001B0h, CONRecs[3], CONames[3]);
      SetCOItemParams(0032000000000183h, CONRecs[4], CONames[4]);

      SetEnumList(scrMain, #_selCO, CONames, CONRecs);
Т.е. в списке мои значения не появляются, если же убрать последний передаваемый параметр CONRecs, то все нормально. Как обойти эту проблему. Т.е. задача в том, что мне нужно узнать NRec выбранной в списке записи

Добавлено: 28 янв 2010, 17:46
KATZ
Так ведь номер позиции в списке никак не может быть comp. Скорее всего, там word. Попробуйте, например, так: список заполняете SetEnumList(scrMain,#_selCO,CONames), а после выбора нужной строки NRec достаете CONRecs[_selCO+1].

Добавлено: 28 янв 2010, 17:57
galover
хм, я так подозревал что массив передаваемых значений (4-й параметр) и есть значение выбранного элемента. Тогда для чего этот параметр?

Добавлено: 28 янв 2010, 19:24
galover
KATZ
за совет спасибо! так и сделал

Добавлено: 29 янв 2010, 00:42
Screw
Всё верно, с элементами выпадающего списка можно ассоциировать некоторые целочисленные значения, которые будут заноситься в управляющую переменную при выборе элемента, и которые будут использоваться для расчета текстового представления элемента при отрисовке поля. По умолчанию компилятор "раздаёт" элементам неотрицательные значения начиная с нуля. Оные значения могут быть заданы явно при определении списка или программно с помощью SetEnumList, в 4-м (необязательном) параметре.

Добавлено: 29 янв 2010, 11:15
galover
так comp тоже целочисленный тип:
Целые числа могут быть следующих типов:

byte - однобайтовое целое;

word - беззнаковое целое;

integer - целое;

longInt - длинное целое;

comp - сверхдлинное целое.