📄 dynasignu1.pas
字号:
unit DynAsignU1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, WPRTEDefs, WPCTRMemo, WPCTRRich, WPRuler, WPTbar, ExtCtrls,
StdCtrls;
type
TWPDynRTFData = class(TForm)
DynDataList: TListBox;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
Splitter1: TSplitter;
Splitter2: TSplitter;
WPToolBar1: TWPToolBar;
WPRuler1: TWPRuler;
WPRichText1: TWPRichText;
PaintBox1: TPaintBox;
PaintBox2: TPaintBox;
procedure FormCreate(Sender: TObject);
procedure WPRichText1DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure DynDataListDblClick(Sender: TObject);
procedure Panel4DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure Panel4DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure Panel3DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure PaintBox1Paint(Sender: TObject);
procedure PaintBox2Paint(Sender: TObject);
procedure WPRichText1Change(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private-Deklarationen }
public
paint1, paint2 : TWPPaintEngine;
end;
var
WPDynRTFData: TWPDynRTFData;
implementation
{$R *.dfm}
procedure TWPDynRTFData.FormCreate(Sender: TObject);
var i : Integer;
element : TWPRTFDataCollection;
begin
DynDataList.Items.BeginUpdate;
for i:=1 to 20 do
begin
element := TWPRTFDataCollection.Create(TWPRTFDataBlock);
element.MakeRTFProps;
element.Get(wpIsBody,wpraOnAllPages).RtfText.AsString :=
'This is demo text number <b>' + IntToStr(i) + '</b> ';
DynDataList.Items.AddObject(
'Text ' + IntToStr(i),
element );
end;
DynDataList.Items.EndUpdate;
paint1 := TWPPaintEngine.Create(Self);
Panel4.DoubleBuffered := TRUE;
paint2 := TWPPaintEngine.Create(Self);
Panel3.DoubleBuffered := TRUE;
end;
procedure TWPDynRTFData.FormDestroy(Sender: TObject);
var i : Integer;
begin
paint1.RTFData := nil;
paint2.RTFData := nil;
WPRichText1.RemoveRTFData;
for i:=0 to DynDataList.Items.Count-1 do
DynDataList.Items.Objects[i].Free;
paint1.Free;
paint2.Free;
end;
procedure TWPDynRTFData.WPRichText1DragDrop(Sender, Source: TObject; X,
Y: Integer);
begin
end;
// Double click to edit !
procedure TWPDynRTFData.DynDataListDblClick(Sender: TObject);
begin
// Remove link to this RTF Data Object
WPRichText1.RemoveRTFData;
// And add link to this one
WPRichText1.SetRTFData(
DynDataList.Items.Objects[DynDataList.ItemIndex] as TWPRTFDataCollection);
// Make sure the new text is shown
WPRichText1.SetFocus;
end;
procedure TWPDynRTFData.Panel4DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := (Source = DynDataList) and (DynDataList.ItemIndex>=0);
end;
procedure TWPDynRTFData.Panel4DragDrop(Sender, Source: TObject; X,
Y: Integer);
begin
paint1.RTFData :=
DynDataList.Items.Objects[DynDataList.ItemIndex] as TWPRTFDataCollection;
PaintBox1.Invalidate;
end;
procedure TWPDynRTFData.Panel3DragDrop(Sender, Source: TObject; X,
Y: Integer);
begin
paint2.RTFData :=
DynDataList.Items.Objects[DynDataList.ItemIndex] as TWPRTFDataCollection;
PaintBox2.Invalidate;
end;
procedure TWPDynRTFData.PaintBox1Paint(Sender: TObject);
begin
paint1.Draw(PaintBox1.Canvas,
10, 10, PaintBox1.Height,
WPScreenPixelsPerInch,
WPScreenPixelsPerInch, 0 );
end;
procedure TWPDynRTFData.PaintBox2Paint(Sender: TObject);
begin
paint2.Draw(PaintBox2.Canvas,
10, 10, PaintBox1.Height,
WPScreenPixelsPerInch div 2,
WPScreenPixelsPerInch div 2, 0 );
end;
procedure TWPDynRTFData.WPRichText1Change(Sender: TObject);
begin
PaintBox1.Invalidate;
PaintBox2.Invalidate;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -