home *** CD-ROM | disk | FTP | other *** search
- unit rtfunit;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls, ComCtrls;
-
- type
- TForm1 = class(TForm)
- RichEdit1: TRichEdit;
- RichEdit2: TRichEdit;
- CopyFrom1To2Btn: TButton;
- RecolourBtn: TButton;
- ColorDialog1: TColorDialog;
- Label1: TLabel;
- Label2: TLabel;
- Label3: TLabel;
- RichEdit3: TRichEdit;
- CopyFrom2To3Btn: TButton;
- SetFontBtn: TButton;
- FontDialog1: TFontDialog;
- procedure FormCreate(Sender: TObject);
- procedure CopyFrom1To2BtnClick(Sender: TObject);
- procedure RecolourBtnClick(Sender: TObject);
- procedure FormKeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- procedure RichEdit1KeyPress(Sender: TObject; var Key: Char);
- procedure CopyFrom2To3BtnClick(Sender: TObject);
- procedure SetFontBtnClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- procedure ToggleBold;
- procedure ToggleItalic;
- function SelAtts: TTextAttributes;
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.DFM}
- procedure TForm1.CopyFrom1To2BtnClick(Sender: TObject);
- var
- ms : TMemoryStream;
- begin
- ms := TMemoryStream.Create;
- RichEdit1.Lines.SaveToStream(ms);
- ms.Position := 0;
- RichEdit2.Lines.LoadFromStream(ms);
- ms.Free;
- RichEdit1.SetFocus;
- end;
-
- procedure TForm1.CopyFrom2To3BtnClick(Sender: TObject);
- var
- ms : TMemoryStream;
- begin
- ms := TMemoryStream.Create;
- RichEdit2.Lines.SaveToStream(ms);
- ms.Position := 0;
- RichEdit3.Lines.LoadFromStream(ms);
- ms.Free;
- RichEdit2.SetFocus;
- end;
-
- function TForm1.SelAtts: TTextAttributes;
- begin
- Result := RichEdit1.SelAttributes;
- end;
-
- procedure TForm1.ToggleBold;
- begin
- if fsBold in SelAtts.style then
- SelAtts.style := SelAtts.style - [fsBold]
- else SelAtts.style := SelAtts.style + [fsBold];
- end;
-
- procedure TForm1.ToggleItalic;
- begin
- if fsItalic in SelAtts.style then
- SelAtts.style := SelAtts.style - [fsItalic]
- else SelAtts.style := SelAtts.style + [fsItalic];
- end;
-
- procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- // turn on bold or italic
- begin
- if (ssCtrl in Shift) then
- if (upcase(chr(Key)) = 'B') then
- ToggleBold
- else if (upcase(chr(Key)) = 'I') then
- ToggleItalic;
- end;
-
- procedure TForm1.RichEdit1KeyPress(Sender: TObject; var Key: Char);
- begin // mop up tab from CTRL-I
- if Key = Chr(9) then Key := Chr(0);
- end;
-
- procedure TForm1.SetFontBtnClick(Sender: TObject);
- begin
- FontDialog1.Font := RichEdit1.Font;
- if FontDialog1.Execute then
- RichEdit1.Font := FontDialog1.Font;
- RichEdit1.SetFocus;
- end;
-
- procedure TForm1.RecolourBtnClick(Sender: TObject);
- begin
- ColorDialog1.Color := SelAtts.Color;
- if ColorDialog1.Execute then
- SelAtts.Color := ColorDialog1.Color;
- RichEdit1.SetFocus;
- end;
-
- procedure TForm1.FormCreate(Sender: TObject);
- // set RichEdit controls 1 and 3 to RTF mode, but 2 to Plain Text
- begin
- RichEdit1.PlainText := False;
- RichEdit2.PlainText := True;
- RichEdit3.PlainText := False;
- KeyPreview := True; { to trap hotkeys }
- end;
-
- end.
-
-