www.pudn.com > RxRichEdit2.0.rar > RTFProperty.pas
{*****************************************}
{ }
{ RxRichEdit Text Property Eidtor }
{ Copyright (C) 2002 Kingron }
{ }
{*****************************************}
unit RTFProperty;
interface
uses Windows,Forms, Menus, Dialogs, StdCtrls, RxRichEdit, Controls, Classes,
dsgnintf,ExtCtrls,Messages,ModalForm, MyFormDivider, Buttons, ComCtrls;
type
TRtfEditDlg = class(TFrmModal)
OpenDialog: TOpenDialog;
SaveDialog: TSaveDialog;
Memo: TRxRichEdit;
StringEditorMenu: TPopupMenu;
LoadItem: TMenuItem;
SaveItem: TMenuItem;
MainMenu1: TMainMenu;
a1: TMenuItem;
procedure FileOpen(Sender: TObject);
procedure FileSave(Sender: TObject);
private
FModified: Boolean;
public
class function ShowEditor(Editor:TRxCustomRichEdit):integer;
end;
type
TRTFProperty = class(TClassProperty)
public
function GetAttributes: TPropertyAttributes; override;
procedure Edit; override;
end;
implementation
{$R *.DFM}
{ TStrEditDlg }
procedure TRtfEditDlg.FileOpen(Sender: TObject);
begin
inherited;
with OpenDialog do
if Execute then Memo.Lines.LoadFromFile(FileName);
end;
procedure TRtfEditDlg.FileSave(Sender: TObject);
begin
inherited;
SaveDialog.FileName := OpenDialog.FileName;
with SaveDialog do
if Execute then Memo.Lines.SaveToFile(FileName);
end;
{ TRTFProperty }
function TRTFProperty.GetAttributes: TPropertyAttributes;
begin
Result := inherited GetAttributes + [paDialog] - [paSubProperties];
end;
procedure TRTFProperty.Edit;
var
Component: TRxRichEdit;
Stream:TMemoryStream;
begin
Component := TRxRichEdit(GetComponent(0));
with TRtfEditDlg.Create(Application) do
try
Memo.PlainText :=Component.PlainText;
Stream:=TMemoryStream.Create;
try
Component.Lines.SaveToStream(Stream);
Stream.Position :=0;
Memo.Lines.LoadFromStream(Stream);
finally
Stream.Free;
end;
FModified := False;
ActiveControl := Memo;
Stream:=TMemoryStream.Create;
if ShowModal = mrOK then
try
// SetOrdValue(LongInt(Memo.Lines));
Memo.Lines.SaveToStream(Stream);
Stream.Position :=0;
Component.Lines.LoadFromStream(Stream);
Modified;
finally
Stream.Free;
end;
finally
Free;
end;
end;
class function TRtfEditDlg.ShowEditor(Editor: TRxCustomRichEdit): integer;
var
Stream:TMemoryStream;
begin
Stream:=TMemoryStream.Create;
with TRtfEditDlg.Create(Application) do
try
Stream.Position :=0;
Editor.Lines.SaveToStream(Stream);
Stream.Position :=0;
Memo.Lines.LoadFromStream(Stream);
Result:=ShowModal;
if Result=mrOK then
begin
Stream.Position:=0;
Memo.Lines.SaveToStream(Stream);
Stream.Position:=0;
Editor.Lines.LoadFromStream(Stream);
end;
finally
Stream.Free;
Free;
end;
end;
end.