Списки истории предназначены для хранения
"истории" ввода в какое либо поле (обычно это
поле "локатора").
![]()
Список истории реализован в виде control-шаблона HList. Этот шаблон
предоставляет кнопку для выбора одной из записей
"истории" ввода в данное поле и код для
записи в Список Истории поля. Выбор и
редактирование записей истории ввода в поле
производится при помощи окна Список Истории.
Списки Истории хранятся в специальном файле HistList:
HISTLIST
FILE,DRIVER('TOPSPEED'),NAME('HistList'),CREATE,PRE(his)
FieldNumber_key KEY(+his:Field,+his:Number),OPT,NOCASE,PRIMARY
FieldItem_key KEY(+his:Field,+his:Item),OPT,NOCASE
RECORD RECORD
Field STRING(20) ! Условное
обозначение поля ввода
Number ULONG !
Номер элемента
Item STRING(20) ! Элемент
списка истории
Name CSTRING(81) ! Примечание к
элементу
END
END
Описание файла HistListr не нужно в основном
приложении. Весь доступ к файлу производится
при помощи функций PutHList()
и HList_s().
Список Истории данного поля ввода вызывается
для выбора при помощи функции HList_s( FieldName ).
Эта функция вызывает окно выбора элемента Списка
Истории и возвращает выбранный элемент.

PutHList( FieldName, ItemStr, NameStr ) - Запись
элемента в файл истории.
FilldName - Условное обозначение поля ввода
ItemStr - Элемент списка истории
NameStr - Примечание к элементу
(например, полное наименование)
Синтаксис: PutHList( String, String, <String> )
PutHList PROCEDURE( FieldName,
ItemStr, NameStr )
CODE
if HistList::Used = 0
CheckOpen(HistList,1)
.
HistList::Used += 1
! Найти последний элемент
clear( his:Record, 1 )
his:Field = FieldName
set( his:FieldNumber_key, his:FieldNumber_key )
previous( HistList )
if errorcode() or his:Field<>FieldName
Num# = 1
else
Num# = his:Number + 1
.
! Добавить элемент
clear( his:Record )
his:Field = FieldName
his:Number = Num#
his:Item = ItemStr
if ~omitted(3)
his:Name = NameStr
.
add( HistList )
HistList::Used =- 1
if HistList::Used = 0
close( HistList )
.
При помощи control-шаблона HList рядом с полем ввода размещается кнопка вызова окна Списка Истории а также в точки вставки помещается код для сохранения введенных элементов в файле HistList и вызова функции HList_s() для выбора ранее веденного элемента и обработки её возвращаемого значения.
Пример применения Списков Истории ввода в поле можно взять отсюда.