lazarus/components/lazreport/source/addons/lrEmailExport/lremailappthebat.pas
jesus 118cc819c4 LazReport: New big patch from Alexey Lagunov (with small changes)
-------------------------------------------------------
Addfunction / frFuncStr
  - Fixed string functions - accounted for UTF8 strings

DialogControls
  - Fixed reports generation with built-in query mode, MDI (multiple reports open for viewing at the same time)
  - Fixed UNDO in editor
  - Added property HINT for dialog controls
  - A new component - TlrRadioGroup

lrOfficeImport
  - New tool reports designer to import data from a spreadsheet as a report template

source
  - The object TfrMemoView added new handlers
    - OnClick - Event when you click on TfrMemoView in playback mode built reports
    - OnMouseEnter - Event at the Enter of the mouse over TfrMemoView in playback mode built reports
    - OnMouseLeave - Event at the Leave of the mouse TfrMemoView in playback mode built reports

  - The object TfrMemoView added new properties
    - Cursor - the mouse cursor when moving over TfrMemoView in playback mode built reports
    - DetailReport - a reference to the detail-report - called when the user clicks the mouse on TfrMemoView in playback mode built reports

  - A mechanism to detail-report - call a detailed report of the current report
  - In ineterpretatore added new features (for compatibility with FastReport 2.5):
      - FINALPASS
      - CURY
      - PAGEHEIGH
      - PAGEWIDTH
  - In the reports, the editor started saving paramerov editor (the location of the Object Inspector, fonts)
  - In the reports, the editor corrected the addition of new tools (implemented a new tool - Import report template from excel/OpenOffice)
  - Editor of reports finalized Inspector data - now you can also insert variables
  - For export to txt implemented request form export options

images
  - Made in the resources icon tool insert fields in a report from the editor

Demo included (detail_reports)

And new extensions:
- import report template from calc/excel
- send email from report preview (for sending used local mail app, installed on user PC - in windows its TheBat! and Mozilla Thunderbird).
  In future I'm plan make direct send.

git-svn-id: trunk@46079 -
2014-08-28 04:10:20 +00:00

139 lines
6.1 KiB
ObjectPascal
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

unit lrEmailAppTheBat;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, lrEmailExportFilter;
type
{ TEmailAppTheBat }
TEmailAppTheBat = class(TEmailApp)
protected
class function AppFileName:string;override;
function MakeParams:string;override;
public
class function AppName:string;override;
end;
implementation
uses registry, LCLProc, LazUTF8;
{ TEmailAppTheBat }
class function TEmailAppTheBat.AppFileName: string;
{$IFDEF WINDOWS}
var
R:TRegistry;
{$ENDIF}
begin
{$IFDEF WINDOWS}
R:=TRegistry.Create;
R.Access := KEY_READ;
R.RootKey := HKEY_CURRENT_USER;
Result:='';
try
if R.OpenKeyReadOnly('Software\RIT\The Bat!') then
Result:=R.ReadString('EXE path');
R.CloseKey;
finally
R.Free;
end;
{$ELSE}
..
{$ENDIF}
end;
function TEmailAppTheBat.MakeParams: string;
var
FBodyTxt, S:string;
F:TFileStream;
begin
{
Result:='"mailto:' + FFilter.Email +
'?subject='+FFilter.MessageSubject;
if Trim(FFilter.MessageBody.Text)<>'' then
Result:=Result + '&body='+Trim(FFilter.MessageBody.Text);
Result:=Result + '&attach='+FFilter.EmailAttachFileName+'"';
}
{
Автоматизированное создание сообщения - команда /MAIL
Команда /MAIL используется для автоматизированного создания сообщения из шаблона, текстового файла и/или набора присоединенных файлов на определенный адрес. Эта команда чрезвычайно полезна для приложений, которые требуют посылки сообщений электронной почты без вмешательства пользователя, в соответствии со стандартами сети Интернет.
Синтаксис команды /MAIL:
/MAIL:[parameter1[;parameter2[;parameter3 [...]]]
Возможные параметры:
USER=значение или U=значение.
Значение - название ящика, из которого должно быть отправлено сообщение.
Если параметр FOLDER не определен, будет отправлено сообщение из папки Inbox данного ящика.
PASSWORD=значение или P=значение.
Значение - пароль. Используется в том случае, если ящик защищен паролем.
FOLDER=значение или F=значение.
Значение - путь к папке в ящике, из которой следует оправить сообщение. Если путь не включает имя ящика,
The Bat! будет просматривать все ящики в поисках папки с таким именем;
использоваться будет первая найденная папка.
Если заданная папка не найдена, будет использоваться папка Inbox указанного ящика.
TEMPLATE=значение или T=значение.
Значение - путь к файлу, содержащему шаблон, который должен использоваться для создания сообщения.
По умолчанию это - шаблон используемой папки или ящика.
TO=значение.
Значение определяет первичного адресата сообщения. Вы можете добавлять дополнительных адресатов с помощью макрокоманд шаблона %TO, %CC, %BCC.
SUBJECT=значение или S=значение.
Значение определяет тему сообщения. Также возможно определить тему сообщения в шаблоне, используя макрос %SUBJECT.
TEXT=значение или CONTENTS=значение или C=значение.
Значение - путь к текстовому файлу, который содержит текст сообщения.
Также возможно включить текстовый файл в сообщение, используя в шаблоне макрос %PUT.
ATTACH=значение или FILE=значение или A=значение.
Значение - путь к файлу, который должен быть присоединен к сообщению. Также возможно использовать макрос %ATTACHFILE в шаблоне.
ПРИМЕЧАНИЯ:
Для разделения параметров используйте точку с запятой (символ ";"). Не используйте пробелы между параметрами,
когда используете команду /MAIL в командной строке, потому что отделенный пробелом параметр будет обрабатываться
как следующая команда и не будет понят программой должным образом.
Если значение содержит пробелы, поместите его в кавычки. Если значение содержит кавычки,
Вы должны использовать апострофы (символ " ' ").
}
if Trim(FFilter.MessageBody.Text)<>'' then
begin
FBodyTxt:=GetTempDir(false)+'tmp_EmailAppTheBat_body.txt';
F:=TFileStream.Create(FBodyTxt, fmCreate);
try
S:=UTF8ToSys(FFilter.MessageBody.Text);
F.Write(S[1], Length(S));
finally
F.Free;
end;
end
else
FBodyTxt:='';
Result:= '/MAIL:'+ //[parameter1[;parameter2[;parameter3 [...]]]
'TO='+FFilter.Email+';'+
'SUBJECT='''+FFilter.MessageSubject+''';';
if FBodyTxt<>'' then
Result:=Result+'CONTENTS='''+SysToUTF8(FBodyTxt)+''';';
Result:=Result+'ATTACH='+FFilter.EmailAttachFileName;
end;
class function TEmailAppTheBat.AppName: string;
begin
Result:='The Bat!';
end;
initialization
RegisterEmailApp(TEmailAppTheBat);
end.