Создание шаблона из скрипта

Коллекция полезных мини-решений, заготовок с применением и демонстрацией функциональных возможностей программы DataExpress в решении реальных учетных задач.
Аватара пользователя
Владимир
Администратор
Сообщения: 630
Зарегистрирован: 10 фев 2018, 18:27
Откуда: Белгород
Контактная информация:

Создание шаблона из скрипта

Сообщение Владимир » 21 фев 2018, 11:44

В примере внутре кода упакован "счет на оплату". Сию технологию планируется перевести в расширение для максимально упрощенного подключения шаблонов к проекту, их "транспортировки" через сеть, заполнения и печати.
(для проверки достаточно скопировать код в модуль формы и добавить кнопку dxButton1)

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

const
b64str =
'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'+
'lc10ueG1sUEsFBgAAAAAJAAkAPAIAAKMYAAAAAA==';

{$ifdef windows}
function MoveFileEx(lpExistingFileName:PChar; lpNewFileName:Pchar; dwFlags:cardinal):boolean;
external 'MoveFileExA@kernel32 stdcall';
{$endif}

function FRewritable(f:string):boolean;
var fileStream:TFileStream;
begin
  try
    fileStream := TFileStream.Create(f, fmOpenWrite);
    result:=true;
  except
    result:=false;
  finally;
    freeobj(fileStream);
  end;
end;

function AutoNumFileName(FFName:string;WithReplace:boolean):string;
var Path,FileNameNoExt,FileExt,NewName:string;
i:integer;

begin
if FileExists(FFName)=false then
begin
  result:=FFName;
  exit;
end;

Path := ExtractFilePath(FFName);
FileNameNoExt := ExtractFileNameOnly(FFName);
FileExt := ExtractFileExt(FFName);

i := 1;
NewName := FFName;
while FileExists(NewName) do
   if WithReplace then
      begin
        if FRewritable(NewName) then
          begin
            result:=NewName;
            exit;
          end
      else
        begin
          inc(i);
          NewName:=Path+FileNameNoExt+'('+IntToStr(i)+')'+FileExt;
          result:=NewName;
        end;
      end
  else
    begin
      inc(i);
      NewName:=Path+FileNameNoExt+'('+IntToStr(i)+')'+FileExt;
      result:=NewName;
    end;
end;

procedure bc1(Sender: TObject);
  var S,TmpFileName:string;
  fileStream:TFileStream;
begin
  TmpFileName := AutoNumFileName(GetTempDir+'Schet.docx',true);
  S:=b64str;
  fileStream := TFileStream.Create(TmpFileName, fmCreate);
  fileStream.Position := 0;
  S:=DecodeBase64(S,false);
  fileStream.Write(S,Length(S));
  fileStream.Free;
  fileStream:=nil;
  ShellExecute('open',TmpFileName,'','',5);
  {$ifdef windows}
  MoveFileEx(TmpFileName,'',4);
  {$endif}
end;

procedure Form_Create;
begin
  dxButton1.OnClick:=@bc1;
end;

Демо

Теги:

Аватара пользователя
cordek
Сообщения: 62
Зарегистрирован: 14 фев 2018, 19:31

Re: Создание шаблона из скрипта

Сообщение cordek » 03 мар 2018, 16:11

Владимир,
а эти буковки вы откуда скопировали? из блокнота?

Аватара пользователя
Владимир
Администратор
Сообщения: 630
Зарегистрирован: 10 фев 2018, 18:27
Откуда: Белгород
Контактная информация:

Re: Создание шаблона из скрипта

Сообщение Владимир » 03 мар 2018, 16:15

Закодировал docx в base64. Процедура восстанавливает его в файл. Если предварительно засунуть в документ теги [], то можно полноценно использовать фичу совместно с процедурой Print.

Аватара пользователя
cordek
Сообщения: 62
Зарегистрирован: 14 фев 2018, 19:31

Re: Создание шаблона из скрипта

Сообщение cordek » 03 мар 2018, 16:46

в принципе проще сделать, чтобы он добавлял шаблон в папку шаблонов

Аватара пользователя
Владимир
Администратор
Сообщения: 630
Зарегистрирован: 10 фев 2018, 18:27
Откуда: Белгород
Контактная информация:

Re: Создание шаблона из скрипта

Сообщение Владимир » 03 мар 2018, 17:02

В принципе так и планировалось...

Аватара пользователя
Morozbl4
Сообщения: 6
Зарегистрирован: 19 дек 2019, 10:39

Создание шаблона из скрипта

Сообщение Morozbl4 » 29 янв 2020, 18:02

Бомба!) Еще бы подгружаемые файлы шаблонов не в ручную кодировать ;)

Аватара пользователя
Morozbl4
Сообщения: 6
Зарегистрирован: 19 дек 2019, 10:39

Создание шаблона из скрипта

Сообщение Morozbl4 » 30 янв 2020, 09:08

А как сделать чтобы значения с формы сразу подставлялись в данный файл? Без копирования в папку шаблонов?

Аватара пользователя
Владимир
Администратор
Сообщения: 630
Зарегистрирован: 10 фев 2018, 18:27
Откуда: Белгород
Контактная информация:

Создание шаблона из скрипта

Сообщение Владимир » 30 янв 2020, 11:22

Morozbl4 писал(а):
30 янв 2020, 09:08
А как сделать чтобы значения с формы сразу подставлялись в данный файл? Без копирования в папку шаблонов?
Для этого необходимо писать скрипт, который должен будет повторить логику формирования шаблона (включая циклы заполнения таблиц). Но и тут есть "изюмика" - даже имея такой скрипт - для открытия файла его так или иначе потребуется сохранить на диске.

Попробуйте заюзать это решение.

Ответить