You've already forked lazarus-ccr
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:
287
components/richmemo/ide/rtfeditpropdialog.lfm
Normal file
287
components/richmemo/ide/rtfeditpropdialog.lfm
Normal 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
|
176
components/richmemo/ide/rtfeditpropdialog.pas
Normal file
176
components/richmemo/ide/rtfeditpropdialog.pas
Normal 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.
|
||||
|
@ -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);
|
||||
|
@ -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)"/>
|
||||
|
@ -8,7 +8,7 @@ interface
|
||||
|
||||
uses
|
||||
RichMemoFactory, richmemoregister, RichMemoRTF, RichMemoUtils,
|
||||
RichMemoHelpers, RTFParsPre211, LazarusPackageIntf;
|
||||
RichMemoHelpers, RTFParsPre211, rtfeditpropdialog, LazarusPackageIntf;
|
||||
|
||||
implementation
|
||||
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user