procedure InsFoto

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
cautur
Сообщения: 10
Зарегистрирован: 18 май 2009, 10:30

procedure InsFoto

Сообщение cautur »

Здравствуйте,

подскажите можно использоваться процедуру
procedure InsFoto(string, string, longInt, longInt, longInt); external 'InsFoto.dll';

в формах, если да то как?

пробывал и просто в форме вставить описание функции и через #include
Всё равно при компиляции формы ошибка нет такого метода INSFOTO

Компилятора интерфесов нет, поэтому пробую на компиляторе форм.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: procedure InsFoto

Сообщение m0p3e »

Собственно можно пробовать так:

Код:

Код: Выделить всё

Interface InsFotoEx;

Public Procedure InsFotoRtf ( RtfPath, RtfName : string; h, x, y : LongInt );
{
 InsFoto ( RtfPath, RtfName, h, x, y );
};
END.
Использование
.var
f : InsFotoRtf;
.end
.begin
f.InsFotoRtf('','',1,1,1);
end.

На какой мыл выслать res?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: procedure InsFoto

Сообщение edward_K »

обычно хватает подключить extfun.res - проверте.
cautur
Сообщения: 10
Зарегистрирован: 18 май 2009, 10:30

Re: procedure InsFoto

Сообщение cautur »

Заработала после подключения extfun.res
Проблема теперь такая что когда я пытаюсь выводить фото в тот файл куда выводятся данные сотрудника, то получаю сообщение что файл заблокирован для редактирования другим пользователем. Подскажите где я что делаю не правильно, осталось то совсем чуть чуть вроде до счастья
Кусок кода привожу

Код: Выделить всё

.{table tl_p
.begin
PathParam:=GetStringParameter(‘Files’, ‘OutputFilesDirectory’, 0);
ExportMemoToFile(appendix.contents, PathParam+‘Tmp.BMP’, false);
InsFoto(PathParam, ‘rep0.rtf’, 4, 0, 0);
end.
 ^
.}
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: procedure InsFoto

Сообщение edward_K »

:). В этом то и главная проблема. В оригинале идет показ отчета, потом Insfoto. В момент формирования отчета файл держится.
Решения 2
1. - переделаь на вывод в Excel (и там макросом подтянуть фото)
2. сделать докомпиляцию фейса, например так

Код: Выделить всё

//Z_STAFF::SPRMESR - картотека - печать- Справка с места работы
#component "Z_STAFF"
#DEFINE _NO_PHOTO_
#include TStMailSend.vih

alter interface SPRMESR
  ( '')
;
  overload
  end;
create view NSPRMESR  
as select Appendix.Contents
from Appendix
Where
((
            1 == Appendix.ObjBlock     and
 Persons.Nrec == Appendix.Person       and
          200 == Appendix.ObjType
))
;
  
var tFoto : comIMailSend;
var strTmp:string ; 
var SprMesR_Type:string; 
HandleEvent  
cmInit:
{ //message('1')
  SaveMyDsk('SprMesR_060_1','SprMesR_Type')
//'SprMesR_060_1' - для возможности переключения в форме координат вывода фото.
  Inherited::HandleEvent(cmInit) 
  //message('2')
  strTmp := GetStringParameter('Files', 'OutputFilesDirectory', 0) + 'tmp.bmp';
  IF true // (not FrmSprMesR.error)
  { DeleteFile(strTmp);
    if Not ReadMyDsk(SprMesR_Type,'SprMesR_Type',true) SprMesR_Type:='SprMesR_060_1'
    if(GetFirst Appendix = tsOK)
    { ExportMemoToFile(Appendix.Contents, strTmp, false);
      PutFileToClient(UserPathVip + 'tmp.bmp', false);
      PutFileToClient(UserPathVip + 'SprMesR.rtf', false);
      if true
      {tFoto := comIMailSend(new(coMailSend));
       case SprMesR_Type of
       'SprMesR_060_1':tFoto.OLE_ADD_FOTO(ExDirectoryOut, 'SprMesR.rtf',3,3,15);
       else tFoto.OLE_ADD_FOTO(ExDirectoryOut, 'SprMesR.rtf',3,4,17);
       end;
      }
      else
      { INSFOTO(ExDirectoryOut, 'SprMesR.rtf',3,4,17); 
      }
      // высота,положение по высоте, положение по горизонтали
    }
  }  
  abort ;
  closeinterface(cmDone)
}
end;
end.
cautur
Сообщения: 10
Зарегистрирован: 18 май 2009, 10:30

Re: procedure InsFoto

Сообщение cautur »

Блин во клёво, а счастье так было рядом((

Компилятора вип нету, только форм. Так что есть только в сторону Excel смотреть

Но как в него фото вставить? тем более макросом.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: procedure InsFoto

Сообщение edward_K »

Как в Excel(не slk) сделать - это просто. Ищите Exсel на ФОРУМЕ, где-то в опыте был кажется excel.doc - речь идет об xl функциях. Сначала делаете файл с картинкой как и раньше. Рисуете шаблон, в нем запускаете запись макроса, делаете вставку вашего файла, макрос переименуете в что-то осмысленное. Ну дальше либо повторяете формирование вашего макроса в коде(если без шаблона отчет делаете) и грузите его в excel (xlImportModule_, либо добавляете параметр в макрос и вызываете что то типа xlrunmacro('макрос1!"путь к файлу"')
LaaLaa

Re: procedure InsFoto

Сообщение LaaLaa »

Коллеги забудьте про FCOM. Намного практичнее печатать фотографии с помощью FastReport. Никаких ухищрений с промежуточной выгрузкой в файлы делать не нужно. Поле таблицы с фотографией можно выдать прямо в поток данных, а в FastReport есть специальный объект "Картинка".

Набросал небольшой пример того, как можно вывести на печать фотографии сотрудников из базы Галактики.

Подробности на минском форуме:
http://forum.galaktika.ru/viewtopic.php?p=3714#p3714
Ответить