Метод ввода 14
Пользователь:
Gena (IP-адрес скрыт)
Дата: 11, May, 2011 13:54
Начал эксперименты по работе с этим методом ввода данных в рабочий лист. Но из описания многое не понял. Вот что по этому методу приводится в документации.
Метод ввода 14 - ввод с помощью режима (функции) пользователя. В этом случае ДОП.ИНФ - <имя DLL>,<имя функции>,<формат> (аналогично передаче данных для &unifor(‘+8…)). При этом <формат> может указываться тремя способами:
- @<имя формата>
- непосредственный формат
- * - в этом случае в качестве исходного данного в функцию передается значение текущего поля/подполя ввода.
Таким образом получаем следующее заполнение полей в Редакторе РЛ и Справочников для вызова функции Test_Function4 из библиотеки test_dll.dll и передачи в нее текущего поля:
Режим ввода - 14
Доп. инф-ция - test_dll,Test_Function4,*
к стати, не забываем о том, что регистр в названии функции играет роль - указываем функцию строго в том виде, как она прописана в DLL
на этом этапе все понятно.
прописал в Редакторе РЛ и Справочников, зашел в Каталогизатор, кликнул по созданному полю - форма из DLL загрузилась, в Лейбле вывелось значение того, что было в поле. Тоесть передача в форму произошла нормально.
А вот дальше не понятно...
Предусмотрена передача в вызываемую функцию пользователя двух специальных опций: первой - определяющей тип ввода: 2 - индивидуальный (по клавише F2) или 3 - групповой (по клавише F3), и второй – определяющей номер текущего повторения текущего поля. Опции передаются через выходной буфер buf2 (не путать с buf1, в котором передается результат форматирования – см. описание &unifor('+8...) в Приложении 4): в первом байте – первая опция, начиная со второго байта – вторая.
Предусматривается два кода возврата:
2 – возвращаемая строка (первая или единственная) является новым значением текущего поля/подполя;
3 – возвращаемые строки являются новыми повторениями текущего по-ля, если оно повторяющееся (в противном случае предполагается код возврата 2)
У меня в DLL есть такая функция, вызывающая форму:
function Test_Function4(buf1,buf2: Pchar; size: integer): boolean;
begin
Form3 := TForm3.Create(Application);
Form3.Label1.Caption := StrPas(buf1);
Result := (Form3.ShowModal = mrOk);
Form3.Free;
end;
Как организовать передачу обратно информации, при условии что в открытой форме над переданными данными будет производится ряд манипуляций?