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

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, ActnMan, ActnCtrls, ActnMenus, BandActn, CustomizeDlg;
  7. type
  8.   TFormRichNote = class(TForm)
  9.     FontDialog: TFontDialog;
  10.     OpenDialog: TOpenDialog;
  11.     SaveDialog: TSaveDialog;
  12.     ColorDialog: TColorDialog;
  13.     ActionList: TActionList;
  14.     acCentered: TAction;
  15.     acUndo: TAction;
  16.     acCut: TAction;
  17.     acPaste: TAction;
  18.     acCopy: TAction;
  19.     acBold: TAction;
  20.     acItalic: TAction;
  21.     acRightAligned: TAction;
  22.     acLeftAligned: TAction;
  23.     acSave: TAction;
  24.     acFont: TAction;
  25.     acCountChars: TAction;
  26.     Images: TImageList;
  27.     SizeMenu: TPopupMenu;
  28.     Small1: TMenuItem;
  29.     Medium1: TMenuItem;
  30.     Large1: TMenuItem;
  31.     acHintColor: TAction;
  32.     ControlBar: TControlBar;
  33.     ComboFont: TComboBox;
  34.     BarMenu: TPopupMenu;
  35.     StatusBar: TStatusBar;
  36.     acExit: TAction;
  37.     ApplicationEvents1: TApplicationEvents;
  38.     ColorBox1: TColorBox;
  39.     Panel1: TPanel;
  40.     ControlBarLower: TControlBar;
  41.     RichEdit: TRichEdit;
  42.     ActionToolBar1: TActionToolBar;
  43.     ActionMainMenuBar1: TActionMainMenuBar;
  44.     ActionManager1: TActionManager;
  45.     CustomizeActionBars1: TCustomizeActionBars;
  46.     ActionToolBar2: TActionToolBar;
  47.     ActionToolBar3: TActionToolBar;
  48.     procedure BoldExecute(Sender: TObject);
  49.     procedure ItalicExecute(Sender: TObject);
  50.     procedure ChangeAlignment(Sender: TObject);
  51.     procedure AboutExecute(Sender: TObject);
  52.     procedure ExitExecute(Sender: TObject);
  53.     procedure OpenExecute(Sender: TObject);
  54.     procedure SaveAsExecute(Sender: TObject);
  55.     procedure BackColorExecute(Sender: TObject);
  56.     procedure FontExecute(Sender: TObject);
  57.     procedure CountCharsExecute(Sender: TObject);
  58.     procedure FormCreate(Sender: TObject);
  59.     procedure NewExecute(Sender: TObject);
  60.     procedure SaveExecute(Sender: TObject);
  61.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  62.     procedure PrintExecute(Sender: TObject);
  63.     procedure acSaveUpdate(Sender: TObject);
  64.     procedure acBoldUpdate(Sender: TObject);
  65.     procedure acItalicUpdate(Sender: TObject);
  66.     procedure RichEditChange(Sender: TObject);
  67.     procedure acCountcharsUpdate(Sender: TObject);
  68.     procedure acCutExecute(Sender: TObject);
  69.     procedure acCutUpdate(Sender: TObject);
  70.     procedure acCopyExecute(Sender: TObject);
  71.     procedure acPasteExecute(Sender: TObject);
  72.     procedure acPasteUpdate(Sender: TObject);
  73.     procedure acUndoExecute(Sender: TObject);
  74.     procedure acUndoUpdate(Sender: TObject);
  75.     procedure ActionListUpdate(Action: TBasicAction; var Handled: Boolean);
  76.     procedure ToolButton17Click(Sender: TObject);
  77.     procedure SetFontSize(Sender: TObject);
  78.     procedure ComboFontClick(Sender: TObject);
  79.     procedure RichEditSelectionChange(Sender: TObject);
  80.     procedure acHintColorExecute(Sender: TObject);
  81.     procedure BarMenuPopup(Sender: TObject);
  82.     procedure ShowHint(Sender: TObject);
  83.     procedure EndDock(Sender, Target: TObject; X, Y: Integer);
  84.     procedure ControlBarLowerDockOver(Sender: TObject;
  85.       Source: TDragDockObject; X, Y: Integer; State: TDragState;
  86.       var Accept: Boolean);
  87.   private
  88.     FileName: string;
  89.     Modified: Boolean;
  90.   public
  91.     function SaveChanges: Boolean;
  92.     function Save: Boolean;
  93.     function SaveAs: Boolean;
  94.     procedure BarMenuClick (Sender: TObject);
  95.     procedure CheckCapslock;
  96.   end;
  97. var
  98.   FormRichNote: TFormRichNote;
  99. implementation
  100. {$R *.DFM}
  101. // status bar panels
  102. const
  103.   sbpMessage = 0;
  104.   sbpCaps = 1;
  105.   sbpPosition = 2;
  106. /////////// Font operations
  107. procedure TFormRichNote.BoldExecute(Sender: TObject);
  108. begin
  109.   with RichEdit.SelAttributes do
  110.     if fsBold in Style then
  111.       Style := Style - [fsBold]
  112.     else
  113.       Style := Style + [fsBold];
  114. end;
  115. procedure TFormRichNote.ItalicExecute(Sender: TObject);
  116. begin
  117.   with RichEdit.SelAttributes do
  118.     if fsItalic in Style then
  119.       Style := Style - [fsItalic]
  120.     else
  121.       Style := Style + [fsItalic];
  122. end;
  123. procedure TFormRichNote.FontExecute(Sender: TObject);
  124. begin
  125.   FontDialog.Font.Assign (RichEdit.SelAttributes);
  126.   if FontDialog.Execute then
  127.   begin
  128.     RichEdit.SelAttributes.Assign (FontDialog.Font);
  129.     RichEditSelectionChange (Self);
  130.   end;
  131. end;
  132. // right + center + left actions
  133. procedure TFormRichNote.ChangeAlignment(Sender: TObject);
  134. begin
  135.   // change paragraph alignment using the TAlignment
  136.   // value saved in the tag of the action
  137.   RichEdit.Paragraph.Alignment := TAlignment (
  138.     (Sender as TAction).Tag);
  139. end;
  140. procedure TFormRichNote.AboutExecute(Sender: TObject);
  141. begin
  142.   MessageDlg (Application.Title + 'Demo' + #13#13
  143.     + 'written for the book "Mastering Delphi" by Marco Cant