home *** CD-ROM | disk | FTP | other *** search
/ PC World Plus! (NZ) 2001 June / HDC50.iso / Runimage / Delphi50 / Demos / Doc / Textedit / MDIEDIT.PAS < prev    next >
Pascal/Delphi Source File  |  1999-08-11  |  6KB  |  250 lines

  1. unit MDIEdit;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs,
  7.   Menus, StdCtrls, ComCtrls;
  8.  
  9. type
  10.   TEditForm = class(TForm)
  11.     MainMenu1: TMainMenu;
  12.     File1: TMenuItem;
  13.     New1: TMenuItem;
  14.     Open1: TMenuItem;
  15.     Save1: TMenuItem;
  16.     Saveas1: TMenuItem;
  17.     Print1: TMenuItem;
  18.     N2: TMenuItem;
  19.     Exit1: TMenuItem;
  20.     Edit1: TMenuItem;
  21.     Cut1: TMenuItem;
  22.     Copy1: TMenuItem;
  23.     Paste1: TMenuItem;
  24.     Delete1: TMenuItem;
  25.     N3: TMenuItem;
  26.     Selectall1: TMenuItem;
  27.     Character1: TMenuItem;
  28.     Left1: TMenuItem;
  29.     Right1: TMenuItem;
  30.     Center1: TMenuItem;
  31.     N4: TMenuItem;
  32.     Wordwrap1: TMenuItem;
  33.     N5: TMenuItem;
  34.     Font1: TMenuItem;
  35.     Editor: TRichEdit;
  36.     PopupMenu1: TPopupMenu;
  37.     Cut2: TMenuItem;
  38.     Copy2: TMenuItem;
  39.     Paste2: TMenuItem;
  40.     SaveFileDialog: TSaveDialog;
  41.     FontDialog1: TFontDialog;
  42.     Printersetup1: TMenuItem;
  43.     Close1: TMenuItem;
  44.     PrinterSetupDialog1: TPrinterSetupDialog;
  45.     PrintDialog1: TPrintDialog;
  46.     procedure Exit1Click(Sender: TObject);
  47.     procedure New1Click(Sender: TObject);
  48.     procedure AlignClick(Sender: TObject);
  49.     procedure Wordwrap1Click(Sender: TObject);
  50.     procedure Cut1Click(Sender: TObject);
  51.     procedure Copy1Click(Sender: TObject);
  52.     procedure Paste1Click(Sender: TObject);
  53.     procedure Selectall1Click(Sender: TObject);
  54.     procedure Delete1Click(Sender: TObject);
  55.     procedure Edit1Click(Sender: TObject);
  56.     procedure Saveas1Click(Sender: TObject);
  57.     procedure Save1Click(Sender: TObject);
  58.     procedure Font1Click(Sender: TObject);
  59.     procedure Close1Click(Sender: TObject);
  60.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  61.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  62.     procedure FormCreate(Sender: TObject);
  63.     procedure Printersetup1Click(Sender: TObject);
  64.     procedure Print1Click(Sender: TObject);
  65.     procedure Open1Click(Sender: TObject);
  66.   private
  67.     { Private declarations }
  68.     PathName: string;
  69.   public
  70.     { Public declarations }
  71.     procedure Open(const AFileName: string);
  72.   end;
  73.  
  74. var
  75.   EditForm: TEditForm;
  76.  
  77. const
  78.   DefaultFileName = 'Untitled';
  79.  
  80. implementation
  81.  
  82. uses Clipbrd, Printers, MDIFrame;
  83.  
  84. {$R *.DFM}
  85.  
  86. procedure TEditForm.Exit1Click(Sender: TObject);
  87. begin
  88.   FrameForm.Exit1Click(Sender);
  89. end;
  90.  
  91. procedure TEditForm.New1Click(Sender: TObject);
  92. begin
  93.   FrameForm.New1Click(Sender);
  94. end;
  95.  
  96. procedure TEditForm.Open1Click(Sender: TObject);
  97. begin
  98.   FrameForm.Open1Click(Sender);
  99. end;
  100.  
  101. procedure TEditForm.AlignClick(Sender: TObject);
  102. begin
  103.   Left1.Checked := False;
  104.   Right1.Checked := False;
  105.   Center1.Checked := False;
  106.   with Sender as TMenuItem do Checked := True;
  107.   with Editor.Paragraph do
  108.     if Left1.Checked then
  109.       Alignment := taLeftJustify
  110.     else if Right1.Checked then
  111.       Alignment := taRightJustify
  112.     else if Center1.Checked then
  113.       Alignment := taCenter;
  114. end;
  115.  
  116. procedure TEditForm.Wordwrap1Click(Sender: TObject);
  117. begin
  118.   with Editor do
  119.   begin
  120.     WordWrap := not WordWrap; { toggle word wrapping }
  121.     if WordWrap then
  122.       ScrollBars := ssVertical
  123.     else
  124.       ScrollBars := ssBoth;
  125.     WordWrap1.Checked := WordWrap; { set menu item check }
  126.   end;
  127. end;
  128.  
  129. procedure TEditForm.Cut1Click(Sender: TObject);
  130. begin
  131.   Editor.CutToClipboard;
  132. end;
  133.  
  134. procedure TEditForm.Copy1Click(Sender: TObject);
  135. begin
  136.   Editor.CopyToClipboard;
  137. end;
  138.  
  139. procedure TEditForm.Paste1Click(Sender: TObject);
  140. begin
  141.   Editor.PasteFromClipboard;
  142. end;
  143.  
  144. procedure TEditForm.Selectall1Click(Sender: TObject);
  145. begin
  146.   Editor.SelectAll;
  147. end;
  148.  
  149. procedure TEditForm.Delete1Click(Sender: TObject);
  150. begin
  151.   Editor.ClearSelection;
  152. end;
  153.  
  154. procedure TEditForm.Edit1Click(Sender: TObject);
  155. var
  156.   HasSelection: Boolean;
  157. begin
  158.   Paste1.Enabled := Clipboard.HasFormat(CF_TEXT);
  159.   Paste2.Enabled := Paste1.Enabled;
  160.   HasSelection := Editor.SelLength > 0;
  161.   Cut1.Enabled := HasSelection;
  162.   Cut2.Enabled := HasSelection;
  163.   Copy1.Enabled := HasSelection;
  164.   Copy2.Enabled := HasSelection;
  165.   Delete1.Enabled := HasSelection;
  166. end;
  167.  
  168. procedure TEditForm.Open(const AFileName: string);
  169. begin
  170.   PathName := AFileName;
  171.   Caption := ExtractFileName(AFileName);
  172.   with Editor do
  173.   begin
  174.     Lines.LoadFromFile(PathName);
  175.     SelStart := 0;
  176.     Modified := False;
  177.   end;
  178. end;
  179.  
  180. procedure TEditForm.Saveas1Click(Sender: TObject);
  181. begin
  182.   SaveFileDialog.FileName := PathName;
  183.   if SaveFileDialog.Execute then
  184.   begin
  185.     PathName := SaveFileDialog.FileName;
  186.     Caption := ExtractFileName(PathName);
  187.     Save1Click(Sender);
  188.   end;
  189. end;
  190.  
  191. procedure TEditForm.Save1Click(Sender: TObject);
  192. begin
  193.   if PathName = DefaultFileName then
  194.     SaveAs1Click(Sender)
  195.   else
  196.   begin
  197.     Editor.Lines.SaveToFile(PathName);
  198.     Editor.Modified := False;
  199.   end;
  200. end;
  201.  
  202. procedure TEditForm.Font1Click(Sender: TObject);
  203. begin
  204.   FontDialog1.Font := Editor.Font;
  205.   if FontDialog1.Execute then
  206.     Editor.SelAttributes.Assign(FontDialog1.Font);
  207. end;
  208.  
  209. procedure TEditForm.Close1Click(Sender: TObject);
  210. begin
  211.   Close;
  212. end;
  213.  
  214. procedure TEditForm.FormClose(Sender: TObject; var Action: TCloseAction);
  215. begin
  216.   Action := caFree;
  217. end;
  218.  
  219. procedure TEditForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  220. const
  221.   SWarningText = 'Save changes to %s?';
  222. begin
  223.   if Editor.Modified then
  224.   begin
  225.     case MessageDlg(Format(SWarningText, [PathName]), mtConfirmation,
  226.       [mbYes, mbNo, mbCancel], 0) of
  227.       idYes: Save1Click(Self);
  228.       idCancel: CanClose := False;
  229.     end;
  230.   end;
  231. end;
  232.  
  233. procedure TEditForm.FormCreate(Sender: TObject);
  234. begin
  235.   PathName := DefaultFileName;
  236. end;
  237.  
  238. procedure TEditForm.Printersetup1Click(Sender: TObject);
  239. begin
  240.   PrinterSetupDialog1.Execute;
  241. end;
  242.  
  243. procedure TEditForm.Print1Click(Sender: TObject);
  244. begin
  245.   if PrintDialog1.Execute then
  246.     Editor.Print(PathName);
  247. end;
  248.  
  249. end.
  250.