lazarus-ccr/components/richmemo/ide/rtfeditpropdialog.pas

172 lines
4.2 KiB
ObjectPascal

unit RtfEditPropDialog;
{$mode objfpc}{$H+}
interface
uses
SysUtils, Forms, 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;
btnSave: TButton;
ColorDialog1: TColorDialog;
FontDialog1: TFontDialog;
RtfOpenDialog: TOpenDialog;
RichMemo1: TRichMemo;
btnBold: TSpeedButton;
btnItalic: TSpeedButton;
btnUnderline: TSpeedButton;
btnFont: TSpeedButton;
btnColor: TSpeedButton;
RtfSaveDialog: TSaveDialog;
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 btnSaveClick(Sender: TObject);
procedure btnBoldClick(Sender: TObject);
procedure btnUnderlineClick(Sender: TObject);
procedure btnFontClick(Sender: TObject);
procedure btnColorClick(Sender: TObject);
procedure RichMemo1Change(Sender: TObject);
private
procedure FontStyleModify(fs: TFontStyle);
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;
RichMemo1Change(Sender);
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.btnSaveClick(Sender: TObject);
begin
if RtfSaveDialog.FileName = '' then
RtfSaveDialog.FileName := 'New document.rtf';
if RtfSaveDialog.Execute and (RtfSaveDialog.FileName <> '') then
SaveRTFFile( RichMemo1, RtfSaveDialog.FileName);
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.RichMemo1Change(Sender: TObject);
begin
btnSave.Enabled := RichMemo1.Lines.Count > 0;
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.