Списки истории

Списки истории предназначены для хранения "истории" ввода в какое либо поле (обычно это поле "локатора").
HList.gif (2089 bytes)
Список истории реализован в виде 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 ). Эта функция вызывает окно выбора элемента Списка Истории и возвращает выбранный элемент. 

HList_s.gif (16872 bytes)

 

Функция  PutHList()  

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 )
  .

Шаблон  HList

При помощи control-шаблона HList  рядом с полем ввода размещается кнопка вызова окна Списка Истории а также в точки вставки помещается код для сохранения введенных элементов в файле HistList и вызова функции HList_s() для выбора ранее веденного элемента и обработки её возвращаемого значения.

Пример применения Списков Истории ввода в поле можно взять отсюда.

Hosted by uCoz