RichForm.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:13k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit RichForm;
  2. interface
  3. uses
  4.   SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs,
  5.   StdCtrls, ComCtrls, ExtCtrls, Menus, ActnList, ToolWin, ImgList, ClipBrd,
  6.   RichEdit, AppEvnts;
  7. type
  8.   TFormRichNote = class(TForm)
  9.     FontDialog: TFontDialog;
  10.     MainMenu: TMainMenu;
  11.     File1: TMenuItem;
  12.     Open1: TMenuItem;
  13.     Saveas1: TMenuItem;
  14.     Exit1: TMenuItem;
  15.     Font1: TMenuItem;
  16.     Bold1: TMenuItem;
  17.     Italic1: TMenuItem;
  18.     Paragraph1: TMenuItem;
  19.     LeftAligned1: TMenuItem;
  20.     Centered1: TMenuItem;
  21.     RightAligned1: TMenuItem;
  22.     Help1: TMenuItem;
  23.     About1: TMenuItem;
  24.     OpenDialog: TOpenDialog;
  25.     SaveDialog: TSaveDialog;
  26.     More1: TMenuItem;
  27.     ColorDialog: TColorDialog;
  28.     ActionList: TActionList;
  29.     acCentered: TAction;
  30.     acUndo: TAction;
  31.     acCut: TAction;
  32.     acPaste: TAction;
  33.     acCopy: TAction;
  34.     acBold: TAction;
  35.     acItalic: TAction;
  36.     acRightAligned: TAction;
  37.     acLeftAligned: TAction;
  38.     acSave: TAction;
  39.     Undo1: TMenuItem;
  40.     acFont: TAction;
  41.     acCountChars: TAction;
  42.     Images: TImageList;
  43.     SizeMenu: TPopupMenu;
  44.     Small1: TMenuItem;
  45.     Medium1: TMenuItem;
  46.     Large1: TMenuItem;
  47.     acHintColor: TAction;
  48.     HintColor1: TMenuItem;
  49.     ControlBar: TControlBar;
  50.     ToolBarFile: TToolBar;
  51.     ToolButton1: TToolButton;
  52.     ToolButton2: TToolButton;
  53.     ToolButton3: TToolButton;
  54.     ToolButton20: TToolButton;
  55.     ToolButton4: TToolButton;
  56.     ToolButton10: TToolButton;
  57.     ToolButton11: TToolButton;
  58.     ToolButton13: TToolButton;
  59.     ToolButton14: TToolButton;
  60.     ToolButton15: TToolButton;
  61.     ToolButton16: TToolButton;
  62.     ToolButton12: TToolButton;
  63.     ToolButton17: TToolButton;
  64.     ToolBarEdit: TToolBar;
  65.     ToolBarFont: TToolBar;
  66.     ComboFont: TComboBox;
  67.     ToolButton6: TToolButton;
  68.     ToolButton7: TToolButton;
  69.     ToolButton8: TToolButton;
  70.     ToolButton9: TToolButton;
  71.     BarMenu: TPopupMenu;
  72.     ToolBarMenu: TToolBar;
  73.     StatusBar: TStatusBar;
  74.     acExit: TAction;
  75.     ApplicationEvents1: TApplicationEvents;
  76.     ColorBox1: TColorBox;
  77.     Panel1: TPanel;
  78.     ControlBarLower: TControlBar;
  79.     RichEdit: TRichEdit;
  80.     procedure BoldExecute(Sender: TObject);
  81.     procedure ItalicExecute(Sender: TObject);
  82.     procedure ChangeAlignment(Sender: TObject);
  83.     procedure AboutExecute(Sender: TObject);
  84.     procedure ExitExecute(Sender: TObject);
  85.     procedure OpenExecute(Sender: TObject);
  86.     procedure SaveAsExecute(Sender: TObject);
  87.     procedure BackColorExecute(Sender: TObject);
  88.     procedure FontExecute(Sender: TObject);
  89.     procedure CountCharsExecute(Sender: TObject);
  90.     procedure FormCreate(Sender: TObject);
  91.     procedure NewExecute(Sender: TObject);
  92.     procedure SaveExecute(Sender: TObject);
  93.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  94.     procedure PrintExecute(Sender: TObject);
  95.     procedure acSaveUpdate(Sender: TObject);
  96.     procedure acBoldUpdate(Sender: TObject);
  97.     procedure acItalicUpdate(Sender: TObject);
  98.     procedure RichEditChange(Sender: TObject);
  99.     procedure acCountcharsUpdate(Sender: TObject);
  100.     procedure acCutExecute(Sender: TObject);
  101.     procedure acCutUpdate(Sender: TObject);
  102.     procedure acCopyExecute(Sender: TObject);
  103.     procedure acPasteExecute(Sender: TObject);
  104.     procedure acPasteUpdate(Sender: TObject);
  105.     procedure acUndoExecute(Sender: TObject);
  106.     procedure acUndoUpdate(Sender: TObject);
  107.     procedure ActionListUpdate(Action: TBasicAction; var Handled: Boolean);
  108.     procedure ToolButton17Click(Sender: TObject);
  109.     procedure SetFontSize(Sender: TObject);
  110.     procedure ComboFontClick(Sender: TObject);
  111.     procedure RichEditSelectionChange(Sender: TObject);
  112.     procedure acHintColorExecute(Sender: TObject);
  113.     procedure BarMenuPopup(Sender: TObject);
  114.     procedure ShowHint(Sender: TObject);
  115.     procedure EndDock(Sender, Target: TObject; X, Y: Integer);
  116.     procedure ControlBarLowerDockOver(Sender: TObject;
  117.       Source: TDragDockObject; X, Y: Integer; State: TDragState;
  118.       var Accept: Boolean);
  119.   private
  120.     FileName: string;
  121.     Modified: Boolean;
  122.   public
  123.     function SaveChanges: Boolean;
  124.     function Save: Boolean;
  125.     function SaveAs: Boolean;
  126.     procedure BarMenuClick (Sender: TObject);
  127.     procedure CheckCapslock;
  128.   end;
  129. var
  130.   FormRichNote: TFormRichNote;
  131. implementation
  132. {$R *.DFM}
  133. // status bar panels
  134. const
  135.   sbpMessage = 0;
  136.   sbpCaps = 1;
  137.   sbpPosition = 2;
  138. /////////// Font operations
  139. procedure TFormRichNote.BoldExecute(Sender: TObject);
  140. begin
  141.   with RichEdit.SelAttributes do
  142.     if fsBold in Style then
  143.       Style := Style - [fsBold]
  144.     else
  145.       Style := Style + [fsBold];
  146. end;
  147. procedure TFormRichNote.ItalicExecute(Sender: TObject);
  148. begin
  149.   with RichEdit.SelAttributes do
  150.     if fsItalic in Style then
  151.       Style := Style - [fsItalic]
  152.     else
  153.       Style := Style + [fsItalic];
  154. end;
  155. procedure TFormRichNote.FontExecute(Sender: TObject);
  156. begin
  157.   FontDialog.Font.Assign (RichEdit.SelAttributes);
  158.   if FontDialog.Execute then
  159.   begin
  160.     RichEdit.SelAttributes.Assign (FontDialog.Font);
  161.     RichEditSelectionChange (Self);
  162.   end;
  163. end;
  164. // right + center + left actions
  165. procedure TFormRichNote.ChangeAlignment(Sender: TObject);
  166. begin
  167.   // change paragraph alignment using the TAlignment
  168.   // value saved in the tag of the action
  169.   RichEdit.Paragraph.Alignment := TAlignment (
  170.     (Sender as TAction).Tag);
  171. end;
  172. procedure TFormRichNote.AboutExecute(Sender: TObject);
  173. begin
  174.   MessageDlg (Application.Title + 'Demo' + #13#13
  175.     + 'written for the book "Mastering Delphi" by Marco Cant