📄 rtfvar1.pas
字号:
unit RTFVar1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, WPRTEPaint, WPRTEDefs, WPCTRMemo, WPCTRRich, ExtDlgs;
type
TWPSaveRTFVariables = class(TForm)
Source: TWPRichText;
Panel1: TPanel;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Data2: TEdit;
RTFText: TMemo;
Panel2: TPanel;
Button2: TButton;
Dest: TWPRichText;
Panel3: TPanel;
DataLab1: TLabel;
DataLab2: TLabel;
Label3: TLabel;
FormatStr: TComboBox;
Data1: TMemo;
Update_Background_Image: TButton;
OpenPictureDialog1: TOpenPictureDialog;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Update_Background_ImageClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure SourcePaintWatermark(Sender: TObject;
RTFEngine: TWPRTFEnginePaint; toCanvas: TCanvas; PageRect: TRect;
PaintPageNr, RTFPageNr: Integer; WaterMarkRef: TObject; XRes,
YRes: Integer; CurrentZoom: Single; PaintMode: TWPPaintModes);
procedure DestPaintWatermark(Sender: TObject;
RTFEngine: TWPRTFEnginePaint; toCanvas: TCanvas; PageRect: TRect;
PaintPageNr, RTFPageNr: Integer; WaterMarkRef: TObject; XRes,
YRes: Integer; CurrentZoom: Single; PaintMode: TWPPaintModes);
private
{ Private-Deklarationen }
public
back1, back2 : TImage;
procedure UpdateDestWatermark;
end;
var
WPSaveRTFVariables: TWPSaveRTFVariables;
implementation
{$R *.dfm}
procedure TWPSaveRTFVariables.Button1Click(Sender: TObject);
var element : TWPRTFExtraDataItem;
i : Integer;
begin
Source.RTFVariables.AddString('Data1', Data1.Text, false);
Source.RTFVariables.AddString('Data2', Data2.Text, false);
for i:=0 to Source.RTFVariables.Count-1 do
begin
Source.RTFVariables[i].Options := [wpxSaveToRTF, wpxLoadFromRTF];
end;
RTFText.Text := Source.AsANSIString(FormatStr.Text);
end;
procedure TWPSaveRTFVariables.Button2Click(Sender: TObject);
begin
//not required: Dest.RTFVariables.Clear;
Dest.AsString := RTFText.Text;
DataLab1.Caption := Dest.RTFVariables.Strings['Data1'];
DataLab2.Caption := Dest.RTFVariables.Strings['Data2'];
Panel3.Invalidate;
UpdateDestWatermark;
end;
procedure TWPSaveRTFVariables.FormDestroy(Sender: TObject);
begin
back1.Free;
back2.Free;
end;
procedure TWPSaveRTFVariables.Update_Background_ImageClick(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
if back1=nil then back1 := TImage.Create(nil);
try
back1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
Source.RTFVariables.Strings['BACKGROUNDIMAGE'] :=
OpenPictureDialog1.FileName;
Source.Repaint;
except
FreeAndNil(back1);
end;
end
else
begin
FreeAndNil(back1);
Source.RTFVariables.Strings['BACKGROUNDIMAGE'] := '';
end;
end;
procedure TWPSaveRTFVariables.SourcePaintWatermark(Sender: TObject;
RTFEngine: TWPRTFEnginePaint; toCanvas: TCanvas; PageRect: TRect;
PaintPageNr, RTFPageNr: Integer; WaterMarkRef: TObject; XRes,
YRes: Integer; CurrentZoom: Single; PaintMode: TWPPaintModes);
begin
if (back1<>nil) and (back1.Picture.Graphic<>nil) then
WPPrintTiledBackground(toCanvas, PageRect, back1.Picture.Graphic,
1); // use: 1/Source.Memo.CurrentZooming to avoid zoom
end;
procedure TWPSaveRTFVariables.UpdateDestWatermark;
var
f : String;
begin
f := Dest.RTFVariables.Strings['BACKGROUNDIMAGE'];
if FileExists(f) then
begin
if back2=nil then back2 := TImage.Create(nil);
try
back2.Picture.LoadFromFile(f);
except
FreeAndNil(back2);
end;
end
else FreeAndNil(back2);
end;
procedure TWPSaveRTFVariables.DestPaintWatermark(Sender: TObject;
RTFEngine: TWPRTFEnginePaint; toCanvas: TCanvas; PageRect: TRect;
PaintPageNr, RTFPageNr: Integer; WaterMarkRef: TObject; XRes,
YRes: Integer; CurrentZoom: Single; PaintMode: TWPPaintModes);
begin
if (back2<>nil) and (back2.Picture.Graphic<>nil) then
WPPrintTiledBackground(toCanvas, PageRect, back2.Picture.Graphic,
1); // use: 1/Dest.Memo.CurrentZooming to avoid zoom
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -