Функция SetTableMemo Назад В начало Вперед

Назначение

Сохраняет хендл на мемо-поле. Предназначена для вызова в обработчике триггера.

Важной особенностью является то, что реальное копирование мемо-поля из файла происходит в функции ModifyTableRecord или ModifyAnyTableRecord, а не в данной функции, как могло бы показаться, поэтому закрывать хендлы c файлами нужно после вызова ModifyTableRecord или ModifyAnyTableRecord.

Описание

function SetTableMemo(MemoHandle : longInt) : word;

Параметры

MemoHandle - хендл на мемо-поле.

Возвращаемое значение

Код ошибки. (tsOk, tsInternalError).

Функция не выбрасывает исключений.

Пример

#include recAaa1.inc

handler with replace c_aaa1 on trigger aaa1 convert
action
{
  var old_buf: record as table aaa1; // буфер старой таблицы
  var new_buf: recAAA1; // буфер новой таблицы, берем из include-файла
  var f,ff: longInt; 
  var s,n: string;

  GetTableBuffer(old_buf);  // считываем старый буфер
  new_buf := recAAA1(old_buf); // копируем не изменившиеся поля
  new_buf.x := '['+string(old_buf.w)+']'; // и модифицированное поле
 
  f := OpenFileHandle(GetTableMemo); // открываем поток с мемо-полем
  ff := CreateFileHandle('xxx');  // создаем хендл с именем ххх
  n := CreateTmpFileName; 	
  file_openFile(n, stCreate, ff); // открываем файл для нового мемо-поля
  file_readln(s, f); 			 // читеам старое
  s := '['+s+']'; 				// как-то обрабатываем
  file_writeln(s, ff); 		 // записываем в файл
  SetTableMemo(GetMemoHandleFF(ff)); // сохраняем изменения как мемо-поле
 
  // реальное копирование мемо-поля из файла происходит в этой функции
  // поэтому закрывать хендлы нужно после нее
  ModifyTableRecord(new_buf);

  DeleteFileHandle(f); 		 // закрываем хендл
  DeleteFileHandle(ff); 		// закрываем хендл

  result := true;
}

Версия

Атлантис 5.0.02.