Пользователи хотят видеть в распечатке ДО memo-поле из группы ДО, в которую это ДО входит.
До записи в allmemo я доберусь без вопросов, а само поле-то как прочесть?
Модераторы: m0p3e, edward_K, Модераторы
Код: Выделить всё
File FMemo;
...
var s: String;
...
FMemo.OpenMemo(MemoTbl.MemoFld);
FMemo.Seek(0);
Do
{
...
  FMemo.Readln(s);
...
}
While not FMemo.EOF;
FMemo.Close;
Код: Выделить всё
ObjInterface MemGetObj;
  function InitMem(cRec: Comp): Boolean;
  function GetStringFromMemo(var S: String): Boolean;
  procedure DoneMem;
end;
VipInterface MemGet Implements MemGetObj;
Код: Выделить всё
interface Int_MemGet;
create view
var
  cLink: Comp;
from MemoTbl
where
((
  cLink == MemoTbl.nRec
));
File FMemo;
PUBLIC function InitMem(cRec: Comp): Boolean; 
{
  InitMem := false;
  cLink := cRec;
  if GetFirst MemoTbl = tsOK
  {
    if FMemo.OpenMemo(MemoTbl.MemoFld)
    {
      FMemo.Seek(0);
      InitMem := true;
    }
  }
}
PUBLIC function GetStringFromMemo(var S: String): Boolean;
{
  GetStringFromMemo := false;
  S := '';
  if not FMemo.EOF
  {
    FMemo.Readln(s);
    GetStringFromMemo := true;
  }
}
PUBLIC procedure DoneMem;
{
  FMemo.Close;
}
HandleEvent
cmOnVipLoad:
{
  cRec := Comp(0);
}
cmOnVipUnload:
{
}
end;
end.
Код: Выделить всё
#make 'memget.vip'
#make 'memget.vih'
#make 'myfrm.frm'
Код: Выделить всё
.var 
...
  MemoFile : MemGetObj;
...
.endvar
...
!в начале формы
.begin
...
  GetVipRef(MemoFile, 'MemGet'); 
...  
end.
...
  MemoFile.InitMem(BaseDocNRec);
var S: String;
  while MemoFile.GetStringFromMemo(S) do
  {
     ...
  }
  MomoFile.DoneMem;
...
!в конце формы
.begin
...
  FreeVipInterface(MemoFile, 'MemGet');
...  
end.
Код: Выделить всё
#include memget.vih //эта строка отсутствовала
interface Int_MemGet;
Код: Выделить всё
#make 'memget.vip' 
#include memget.vih //не make
#make 'myfrm.frm'
Код: Выделить всё
Interface MemGet; 
create view 
var 
  cLink: Comp; 
from attrval
where 
(( 
  cLink == attrval.nRec 
)); 
File FMemo;
PUBLIC function InitMem(cRec: Comp): Boolean; 
{ 
  InitMem := false; 
  cLink := cRec; 
  if GetFirst attrval = tsOK 
  { 
    if FMemo.OpenMemo(attrval.vlvar) 
    { 
      FMemo.Seek(0); 
      InitMem := true; 
    } 
  } 
} 

Код: Выделить всё
#make "memget.vip"
#include table.vip
#include memget.vih 
#make "akt_do.rtf"