- Offizieller Beitrag
This example uses a callback similar to event BeforePasteText to manipulate the text before it is inserted at the cursor position. Here the protected attribute is applied to all characters and all paragraphs.
Code
// This callback will be used right after the loading of the text
procedure TForm1.AfterLoadEvent(
RTFData: TWPRTFDataCollection; Stream: TStream;
Reader: TWPCustomTextReader; OnlyBodyText: Boolean;
var LoadedText: TWPRTFDataBlock);
var aPar : TParagraph;
i : Integer;
atr : TWPStoredCharAttrInterface;
begin
// Use a TWPStoredCharAttrInterface to update all character attributes
atr := TWPStoredCharAttrInterface.Create(RTFData);
aPar := LoadedText.FirstPar;
// Paragraph Loop
while aPar<>nil do
begin
aPar.ASet(WPAT_ParProtected, 1);
for i:=0 to aPar.CharCount-1 do
begin
atr.CharAttr := aPar.CharAttr[i];
atr.IncludeStyle(afsProtected);
aPar.CharAttr[i] := atr.CharAttr;
end;
aPar := aPar.next;
end;
atr.Free;
end;
// Test: Insert the RTF text stored in "SomeMemoField"
procedure TForm1.Button1Click(Sender: TObject);
var mem : TMemoryStream;
begin
mem := TMemoryStream.Create;
try
SomeMemoField.SaveToStream(mem);
mem.Position := 0;
WPRichText1.Memo.LoadFromStream(mem, true, '', true, nil, AfterLoadEvent);
finally
mem.Free;
end;
end;
Alles anzeigen