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.