richmemo: added design-time Rtf property and a property editor for it

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3806 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
skalogryz
2014-11-28 15:06:44 +00:00
parent 8080fd856f
commit 385b0e79ab
6 changed files with 583 additions and 9 deletions

View File

@ -0,0 +1,287 @@
object RTFEditDialog: TRTFEditDialog
Left = 395
Height = 275
Top = 269
Width = 538
Caption = 'Rich Text Edit Dialog'
ClientHeight = 275
ClientWidth = 538
OnResize = FormResize
LCLVersion = '1.3'
object btnLoad: TButton
Left = 455
Height = 25
Top = 8
Width = 75
Anchors = [akTop, akRight]
Caption = 'Load'
OnClick = btnLoadClick
TabOrder = 0
end
object btnClear: TButton
Left = 376
Height = 25
Top = 8
Width = 75
Anchors = [akTop, akRight]
Caption = 'Clear'
OnClick = btnClearClick
TabOrder = 1
end
object RichMemo1: TRichMemo
Left = 8
Height = 197
Top = 40
Width = 522
Anchors = [akTop, akLeft, akRight, akBottom]
HideSelection = False
Lines.Strings = (
'RichMemo1'
)
ScrollBars = ssAutoBoth
TabOrder = 2
end
object btnOk: TButton
Left = 8
Height = 25
Top = 243
Width = 75
Anchors = [akLeft, akBottom]
Caption = 'OK'
ModalResult = 1
TabOrder = 3
end
object btnCancel: TButton
Left = 88
Height = 25
Top = 243
Width = 75
Anchors = [akLeft, akBottom]
Caption = 'Cancel'
ModalResult = 2
TabOrder = 4
end
object btnJA: TSpeedButton
Left = 288
Height = 22
Top = 8
Width = 31
Glyph.Data = {
36030000424D3603000000000000360000002800000010000000100000000100
1800000000000003000064000000640000000000000000000000FFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
}
GroupIndex = 1
OnClick = btnJAClick
end
object btnCA: TSpeedButton
Left = 224
Height = 22
Top = 8
Width = 32
Glyph.Data = {
36030000424D3603000000000000360000002800000010000000100000000100
1800000000000003000064000000640000000000000000000000FFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000
0000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000
0000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000
0000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
}
GroupIndex = 1
OnClick = btnCAClick
end
object btnLA: TSpeedButton
Left = 192
Height = 22
Top = 8
Width = 32
Glyph.Data = {
36030000424D3603000000000000360000002800000010000000100000000100
1800000000000003000064000000640000000000000000000000FFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000
0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000
0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000
0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
}
GroupIndex = 1
OnClick = btnLAClick
ParentBidiMode = False
end
object btnRA: TSpeedButton
Left = 256
Height = 22
Top = 8
Width = 32
Glyph.Data = {
36030000424D3603000000000000360000002800000010000000100000000100
1800000000000003000064000000640000000000000000000000FFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000
0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000
0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000
0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
}
GroupIndex = 1
OnClick = btnRAClick
end
object btnBold: TSpeedButton
Left = 112
Height = 22
Top = 8
Width = 23
Caption = 'B'
OnClick = btnBoldClick
end
object btnItalic: TSpeedButton
Left = 136
Height = 22
Top = 8
Width = 23
Caption = 'I'
OnClick = btnItalicClick
end
object btnUnderline: TSpeedButton
Left = 160
Height = 22
Top = 8
Width = 23
Caption = 'U'
OnClick = btnUnderlineClick
end
object btnFont: TSpeedButton
Left = 8
Height = 22
Top = 8
Width = 48
Caption = 'Font'
OnClick = btnFontClick
end
object btnColor: TSpeedButton
Left = 56
Height = 22
Top = 8
Width = 48
Caption = 'Color'
OnClick = btnColorClick
end
object RtfOpenDialog: TOpenDialog
Filter = 'Rich-text file (*.rtf)|*.rtf|Any file (*.*)|*.*'
left = 32
top = 168
end
object ColorDialog1: TColorDialog
Color = clBlack
CustomColors.Strings = (
'ColorA=000000'
'ColorB=000080'
'ColorC=008000'
'ColorD=008080'
'ColorE=800000'
'ColorF=800080'
'ColorG=808000'
'ColorH=808080'
'ColorI=C0C0C0'
'ColorJ=0000FF'
'ColorK=00FF00'
'ColorL=00FFFF'
'ColorM=FF0000'
'ColorN=FF00FF'
'ColorO=FFFF00'
'ColorP=FFFFFF'
'ColorQ=C0DCC0'
'ColorR=F0CAA6'
'ColorS=F0FBFF'
'ColorT=A4A0A0'
)
left = 32
top = 112
end
object FontDialog1: TFontDialog
MinFontSize = 0
MaxFontSize = 0
left = 32
top = 64
end
end

View File

@ -0,0 +1,176 @@
unit RtfEditPropDialog;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
Buttons, RichMemo, RichMemoUtils;
type
{ TRTFEditDialog }
TRTFEditDialog = class(TForm)
btnCA: TSpeedButton;
btnJA: TSpeedButton;
btnLA: TSpeedButton;
btnRA: TSpeedButton;
btnLoad: TButton;
btnClear: TButton;
btnOk: TButton;
btnCancel: TButton;
ColorDialog1: TColorDialog;
FontDialog1: TFontDialog;
RtfOpenDialog: TOpenDialog;
RichMemo1: TRichMemo;
btnBold: TSpeedButton;
btnItalic: TSpeedButton;
btnUnderline: TSpeedButton;
btnFont: TSpeedButton;
btnColor: TSpeedButton;
procedure btnCAClick(Sender: TObject);
procedure btnClearClick(Sender: TObject);
procedure btnItalicClick(Sender: TObject);
procedure btnJAClick(Sender: TObject);
procedure btnLAClick(Sender: TObject);
procedure btnLoadClick(Sender: TObject);
procedure btnRAClick(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure btnBoldClick(Sender: TObject);
procedure btnUnderlineClick(Sender: TObject);
procedure btnFontClick(Sender: TObject);
procedure btnColorClick(Sender: TObject);
private
{ private declarations }
procedure FontStyleModify(fs: TFontStyle);
public
{ public declarations }
end;
var
RTFEditDialog: TRTFEditDialog = nil;
implementation
{$R *.lfm}
{ TRTFEditDialog }
procedure TRTFEditDialog.btnLAClick(Sender: TObject);
begin
RichMemo1.SetParaAlignment( RichMemo1.SelStart,
RichMemo1.SelLength, paLeft);
end;
procedure TRTFEditDialog.btnCAClick(Sender: TObject);
begin
RichMemo1.SetParaAlignment( RichMemo1.SelStart,
RichMemo1.SelLength, paCenter);
end;
procedure TRTFEditDialog.btnClearClick(Sender: TObject);
begin
RichMemo1.Clear;
end;
procedure TRTFEditDialog.btnItalicClick(Sender: TObject);
begin
FontStyleModify(fsItalic);
end;
procedure TRTFEditDialog.btnJAClick(Sender: TObject);
begin
RichMemo1.SetParaAlignment( RichMemo1.SelStart,
RichMemo1.SelLength, paJustify);
end;
procedure TRTFEditDialog.btnLoadClick(Sender: TObject);
begin
if RtfOpenDialog.Execute then
LoadRTFFile( RichMemo1, RtfOpenDialog.FileName);
end;
procedure TRTFEditDialog.btnRAClick(Sender: TObject);
begin
RichMemo1.SetParaAlignment( RichMemo1.SelStart,
RichMemo1.SelLength, paRight);
end;
procedure TRTFEditDialog.FormResize(Sender: TObject);
const
SpaceOffset = 4;
var
w2 : integer;
begin
w2:=RichMemo1.ClientWidth div 2;
{$ifdef darwin}
btnCancel.Left:=w2 - SpaceOffset - btnCancel.Width;
btnOk.Left:= w2 + SpaceOffset;
{$else}
btnOk.Left:=w2 - SpaceOffset - btnOk.Width;
btnCancel.Left:= w2 + SpaceOffset;
{$endif}
end;
procedure TRTFEditDialog.btnBoldClick(Sender: TObject);
begin
FontStyleModify(fsBold);
end;
procedure TRTFEditDialog.btnUnderlineClick(Sender: TObject);
begin
FontStyleModify(fsUnderline);
end;
procedure TRTFEditDialog.btnFontClick(Sender: TObject);
var
f : TFontParams;
begin
RichMemo1.GetTextAttributes(RichMemo1.SelStart, f);
FontDialog1.Font.Name:=f.Name;
FontDialog1.Font.Size:=f.Size;
FontDialog1.Font.Style:=f.Style;
FontDialog1.Font.Color:=f.Color;
if FontDialog1.Execute then begin
RichMemo1.SetRangeParams(RichMemo1.SelStart, RichMemo1.SelLength
, [tmm_Color, tmm_Size, tmm_Name]
, FontDialog1.Font.Name
, FontDialog1.Font.Size
, FontDialog1.Font.Color, [], []);
end;
end;
procedure TRTFEditDialog.btnColorClick(Sender: TObject);
var
f : TFontParams;
begin
RichMemo1.GetTextAttributes(RichMemo1.SelStart, f);
ColorDialog1.Color:=f.Color;
if ColorDialog1.Execute then begin
RichMemo1.SetRangeColor( RichMemo1.SelStart, RichMemo1.SelLength,
ColorDialog1.Color);
end;
end;
procedure TRTFEditDialog.FontStyleModify(fs: TFontStyle);
var
f : TFontParams;
rm : TFontStyles;
add : TFontStyles;
begin
RichMemo1.GetTextAttributes(RichMemo1.SelStart, f);
if fs in f.Style then begin
rm:=[fs]; add:=[];
end else begin
rm:=[]; add:=[fs];
end;
RichMemo1.SetRangeParams(RichMemo1.SelStart, RichMemo1.SelLength
, [tmm_Styles] , '', 0, 0, add, rm);
end;
end.

View File

@ -130,7 +130,15 @@ type
property OnSelectionChange: TNotifyEvent read fOnSelectionChange write fOnSelectionChange;
end;
{ TRichMemo }
TRichMemo = class(TCustomRichMemo)
protected
// this is "design-time" property
fRtf: string; // initial RichText
function GetRTF: string; virtual;
procedure SetRTF(const AValue: string); virtual;
procedure UpdateRichMemo; override;
published
property Align;
property Alignment;
@ -178,6 +186,7 @@ type
property PopupMenu;
property ParentShowHint;
property ReadOnly;
property Rtf: string read GetRTF write SetRTF;
property ScrollBars;
property ShowHint;
property TabOrder;
@ -246,6 +255,59 @@ begin
FillChar(n, sizeof(n), 0);
end;
{ TRichMemo }
function TRichMemo.GetRTF: string;
var
st : TStringStream;
begin
if (csDesigning in ComponentState) or not HandleAllocated then
Result:=fRTF
else begin
try
st := TStringStream.Create('');
try
SaveRichText(st);
Result:=st.DataString;
finally
st.Free;
end;
except
Result:='';
end;
end;
end;
procedure TRichMemo.SetRTF(const AValue: string);
var
st : TStringStream;
begin
if (csDesigning in ComponentState) or not HandleAllocated then
fRTF:=AValue;
if HandleAllocated then
try
st := TStringStream.Create(AValue);
try
LoadRichText(st);
finally
st.Free;
end;
except
end;
if ([csDesigning, csLoading] * ComponentState = []) and HandleAllocated then begin
fRTF:=''; // reduce memory usage in run-time
end;
end;
procedure TRichMemo.UpdateRichMemo;
begin
inherited UpdateRichMemo;
// if fRTF is blank, Text property would be used
if fRTF<>'' then SetRTF(fRTF);
end;
{ TCustomRichMemo }
procedure TCustomRichMemo.SetHideSelection(AValue: Boolean);

View File

@ -10,7 +10,7 @@
<PathDelim Value="\"/>
<SearchPaths>
<IncludeFiles Value="cocoa;qt"/>
<OtherUnitFiles Value="win32;carbon;gtk2;cocoa;qt"/>
<OtherUnitFiles Value="win32;carbon;gtk2;cocoa;qt;ide"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Parsing>
@ -20,16 +20,15 @@
</Parsing>
<Other>
<CompilerMessages>
<IgnoredMessages idx4055="True" idx5024="True" idx5057="True" idx5060="True"/>
<IgnoredMessages idx5060="True" idx5057="True" idx5024="True" idx4055="True"/>
</CompilerMessages>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
<Description Value="RichMemo control. Implements cross-platfrom RichEdit control.
"/>
<License Value="LGPL"/>
<Version Major="1"/>
<Files Count="16">
<Files Count="18">
<Item1>
<Filename Value="wsrichmemo.pas"/>
<AddToUsesPkgSection Value="False"/>
@ -103,16 +102,27 @@
<Filename Value="rtfparspre211.pas"/>
<UnitName Value="RTFParsPre211"/>
</Item16>
<Item17>
<Filename Value="ide\rtfeditpropdialog.pas"/>
<UnitName Value="rtfeditpropdialog"/>
</Item17>
<Item18>
<Filename Value="ide\rtfeditpropdialog.lfm"/>
<Type Value="LFM"/>
</Item18>
</Files>
<Type Value="RunAndDesignTime"/>
<RequiredPkgs Count="2">
<RequiredPkgs Count="3">
<Item1>
<PackageName Value="LCL"/>
<PackageName Value="IDEIntf"/>
</Item1>
<Item2>
<PackageName Value="LCL"/>
</Item2>
<Item3>
<PackageName Value="FCL"/>
<MinVersion Major="1" Valid="True"/>
</Item2>
</Item3>
</RequiredPkgs>
<UsageOptions>
<UnitPath Value="$(PkgOutDir)"/>

View File

@ -8,7 +8,7 @@ interface
uses
RichMemoFactory, richmemoregister, RichMemoRTF, RichMemoUtils,
RichMemoHelpers, RTFParsPre211, LazarusPackageIntf;
RichMemoHelpers, RTFParsPre211, rtfeditpropdialog, LazarusPackageIntf;
implementation

View File

@ -5,15 +5,54 @@ unit richmemoregister;
interface
uses
Classes, SysUtils, RichMemo, LResources;
Classes, SysUtils, RichMemo, LResources, PropEdits, RtfEditPropDialog, Forms, Controls;
procedure Register;
implementation
type
{ TRichEditProperty }
TRichEditProperty = class(TPropertyEditor)
public
procedure Edit; override;
function GetAttributes: TPropertyAttributes; override;
function GetValue: ansistring; override;
end;
procedure Register;
begin
RegisterComponents('Common Controls', [TRichMemo]);
RegisterPropertyEditor(TypeInfo(AnsiString),(TRichMemo), 'Rtf', TRichEditProperty);
end;
{ TRichEditProperty }
procedure TRichEditProperty.Edit;
var
TheDialog : TRTFEditDialog;
begin
TheDialog :=TRTFEditDialog.Create(nil);
try
TheDialog.RichMemo1.Rtf:=GetStrValue;
if (TheDialog.ShowModal = mrOK) then
SetStrValue( TheDialog.RichMemo1.Rtf );
finally
TheDialog.Free;
end;
end;
function TRichEditProperty.GetAttributes: TPropertyAttributes;
begin
Result := [paDialog, paRevertable, paReadOnly];
end;
function TRichEditProperty.GetValue: ansistring;
begin
Result:='(Rich Text)';
end;
initialization