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

Назначение

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

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

Описание

function SetAnyTableMemo(tableCode: word; memoHandle : longInt ) : word;

Параметры

tableCode - код таблицы, запись в которой мы считываем.

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_buf2.nRec := myNrec; // берем где-нибудь nRec (например, по ссылке)
  // для такого кода Aaa2 должна быть уже отконвертирована
  if (GetAnyTableRecord(coAaa2, new_buf2, tiAaa2$Aaa2Id) = tsOk)
  {
	new_buf2.s := old_buf.s;  // копируем поле

	f := OpenFileHandle(GetTableMemo); // открываем поток с мемо-полем
	ff := CreateFileHandle('xxx');  // создаем хендл с именем ххх
	n := CreateTmpFileName; 	
	file_openFile(n, stCreate, ff); // открываем файл для нового мемо-поля
	file_readln(s, f); 			 // читеам старое
	s := '['+s+']'; 				// как-то обрабатываем
	file_writeln(s, ff); 		 // записываем в файл
	SetAnyTableMemo(coAaa2, GetMemoHandleFF(ff)); // сохраняем изменения как мемо-поле

	// реальное копирование мемо-поля из файла происходит в этой функции
	// поэтому закрывать хендлы нужно после нее
	ModifyAnyTableRecord(coAaa2, new_buf); // сохраняем изменения

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

  result := true;
}

Версия

Атлантис 5.0.02.