Masygreen писал(а):m0p3e писал(а):Можно вставить рисунок в стандартную через VBcript.
Но потребуется докомпиляция фейса формирующего поток. Нужет примерчик?
нет нельзя это
RTF, или можно ? докомпилировать поток не хочется ... я хотел
InsFoto испльзовать..
Без докомпиляции не получится, т.к. rtf-а в момент формирования еще нет по сути. InsFoto по той же причине не подойдет.
Распишу подробнее попозже, но идея в следующем. Форма выгружает memo. В докомпиляция проверяет наличие файла (из memo) и запускает vbs вставляющий картинку. Формирование vbs:
Код: Выделить всё
Public Procedure InsertFoto ( c : comp; f : string; h, t, l : double ); //c -Persons.nrec; f-имя формы (в самой форме необходимо его задать жестко: .f ‘MyForm.rtf’); h,t,l - аналог из InsFoto
{
var FileName : string;
If GetFirst Appendix Where (( c == Appendix.Person
and 1 == Appendix.ObjBlock
and 200 == Appendix.ObjType
)) = tsOk
{
FileName := GetStringParameter ( 'Files', 'OutputFilesDirectory', 0 ) + f;
ExportMemoToFile ( Appendix.Contents, FileName + '.bmp', false );
If FileExist ( FileName + '.vbs' )
DeleteFile ( FileName + '.vbs' );
LogStrToFile ( FileName + '.vbs', 'Set oWord=GetObject(,"Word.Application")' );
LogStrToFile ( FileName + '.vbs', 'If not (oWord Is Nothing) then' );
LogStrToFile ( FileName + '.vbs', ' oWord.Application.ScreenUpdating=false' );
LogStrToFile ( FileName + '.vbs', ' Set oDoc=oWord.documents.Open("' + FileName + '.rtf")' );
LogStrToFile ( FileName + '.vbs', ' If not (oDoc Is Nothing) then' );
LogStrToFile ( FileName + '.vbs', ' oDoc.Shapes.AddPicture("' + FileName + '.bmp")' );
LogStrToFile ( FileName + '.vbs', ' oDoc.Shapes.Item(oDoc.Shapes.count).select' );
LogStrToFile ( FileName + '.vbs', ' oWord.Selection.ShapeRange.Height = ' + string ( h, 0, 2 ) + '*(28.36)' );
LogStrToFile ( FileName + '.vbs', ' oWord.Selection.ShapeRange.Top = ' + string ( t, 0, 2 ) + '*(28.36)' );
LogStrToFile ( FileName + '.vbs', ' oWord.Selection.ShapeRange.left = ' + string ( l, 0, 2 ) + '*(28.36)' );
LogStrToFile ( FileName + '.vbs', ' oWord.Selection.ShapeRange.WrapFormat.Type=3' );
LogStrToFile ( FileName + '.vbs', ' oWord.Selection.Collapse' );
LogStrToFile ( FileName + '.vbs', ' Set oDoc=nothing' );
LogStrToFile ( FileName + '.vbs', ' End If' );
LogStrToFile ( FileName + '.vbs', ' oWord.Application.ScreenUpdating=true' );
LogStrToFile ( FileName + '.vbs', 'Set oWord=nothing' );
LogStrToFile ( FileName + '.vbs', 'End If' );
};
};
Докомпиляция:
Код: Выделить всё
cmInit :
{
inherited::handleevent ( cmInit );
var FileName : string;
FileName := GetStringParameter ( 'Files', 'OutputFilesDirectory', 0 ) + 'MyForm.vbs';
If FileExist ( FileName )
{
ExecProgram ( 'start', FileName, 'Добавление картинки...', 0, 0 );
DeleteFile ( FileName )
}
Abort;
}; //cmInit