home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / delphi / jwrite.lzh / EXAMPLE / MAIN.PAS < prev    next >
Pascal/Delphi Source File  |  1996-04-30  |  8KB  |  276 lines

  1. (*-------------------------------------------------------------------------------------*)
  2. (*                                                                                     *)
  3. (*               Unit: Main                                                            *)
  4. (*                                                                                     *)
  5. (*               Copyright McCallum Whyman Associates Ltd 1996                         *)
  6. (*                                                                                     *)
  7. (*               Version 1.0                                                           *)
  8. (*                                                                                     *)
  9. (*               Author: Tony Whyman                                                   *)
  10. (*                                                                                     *)
  11. (*               Description: This module is part of the J-Write example application   *)
  12. (*                            and defines the main form for the MDI editor.            *)
  13. (*-------------------------------------------------------------------------------------*)
  14.  
  15. unit Main;
  16.  
  17. interface
  18.  
  19. uses WinTypes, WinProcs, SysUtils, Classes, Graphics, Forms, Controls, Menus,
  20.   StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, FileView;
  21.  
  22. type
  23.   TMainForm = class(TForm)
  24.     MainMenu1: TMainMenu;
  25.     Panel1: TPanel;
  26.     StatusLine: TPanel;
  27.     File1: TMenuItem;
  28.     FileNewItem: TMenuItem;
  29.     FileOpenItem: TMenuItem;
  30.     ModifiedPanel: TPanel;
  31.     Window1: TMenuItem;
  32.     Help1: TMenuItem;
  33.     N1: TMenuItem;
  34.     FileExitItem: TMenuItem;
  35.     WindowCascadeItem: TMenuItem;
  36.     WindowTileItem: TMenuItem;
  37.     WindowArrangeItem: TMenuItem;
  38.     HelpAboutItem: TMenuItem;
  39.     OpenDialog: TOpenDialog;
  40.     WindowMinimizeItem: TMenuItem;
  41.     SpeedPanel: TPanel;
  42.     OpenBtn: TSpeedButton;
  43.     SaveBtn: TSpeedButton;
  44.     CutBtn: TSpeedButton;
  45.     CopyBtn: TSpeedButton;
  46.     PasteBtn: TSpeedButton;
  47.     ExitBtn: TSpeedButton;
  48.     StatusPanel: TPanel;
  49.     ProgressMeter1: TProgressMeter;
  50.     InsertPanel: TPanel;
  51.     PrintBtn: TSpeedButton;
  52.     LineCounter: TPanel;
  53.     WrapNoneBtn: TSpeedButton;
  54.     WrapScreenBtn: TSpeedButton;
  55.     WrapPrinterBtn: TSpeedButton;
  56.     WrapAbsBtn: TSpeedButton;
  57.     PrinterSetupDialog1: TPrinterSetupDialog;
  58.     N2: TMenuItem;
  59.     PrintSetup1: TMenuItem;
  60.     procedure FormCreate(Sender: TObject);
  61.     procedure FileNewItemClick(Sender: TObject);
  62.     procedure WindowCascadeItemClick(Sender: TObject);
  63.     procedure UpdateMenuItems(Sender: TObject);
  64.     procedure WindowTileItemClick(Sender: TObject);
  65.     procedure WindowArrangeItemClick(Sender: TObject);
  66.     procedure FileCloseItemClick(Sender: TObject);
  67.     procedure FileOpenItemClick(Sender: TObject);
  68.     procedure FileExitItemClick(Sender: TObject);
  69.     procedure FileSaveItemClick(Sender: TObject);
  70.     procedure FileSaveAsItemClick(Sender: TObject);
  71.     procedure CutItemClick(Sender: TObject);
  72.     procedure CopyItemClick(Sender: TObject);
  73.     procedure PasteItemClick(Sender: TObject);
  74.     procedure WindowMinimizeItemClick(Sender: TObject);
  75.     procedure FormDestroy(Sender: TObject);
  76.     procedure HelpAboutItemClick(Sender: TObject);
  77.     procedure FormShow(Sender: TObject);
  78.     procedure PrintBtnClick(Sender: TObject);
  79.     procedure WrapNoneBtnClick(Sender: TObject);
  80.     procedure WrapScreenBtnClick(Sender: TObject);
  81.     procedure WrapPrinterBtnClick(Sender: TObject);
  82.     procedure WrapAbsBtnClick(Sender: TObject);
  83.     procedure PrintSetup1Click(Sender: TObject);
  84.   private
  85.     { Private declarations }
  86.     procedure CreateMDIChild(const Name: string);
  87.     procedure ShowHint(Sender: TObject);
  88.   public
  89.     { Public declarations }
  90.   end;
  91.  
  92. var
  93.   MainForm: TMainForm;
  94.  
  95. implementation
  96.  
  97. {$R *.DFM}
  98.  
  99. uses ChildWin, About;
  100.  
  101. procedure TMainForm.FormCreate(Sender: TObject);
  102. begin
  103.   Application.OnHint := ShowHint;
  104.   Screen.OnActiveFormChange := UpdateMenuItems;
  105.   AboutBox := TAboutBox.Create(Self);
  106. end;
  107.  
  108. procedure TMainForm.ShowHint(Sender: TObject);
  109. begin
  110.   StatusPanel.Caption := Application.Hint;
  111. end;
  112.  
  113. procedure TMainForm.CreateMDIChild(const Name: string);
  114. var
  115.   Child: TMDIChild;
  116. begin
  117.   { create a new MDI child window }
  118.   Child := TMDIChild.Create(Application);
  119.   Child.Caption := Name;
  120.   Child.FileEditor1.FileName := Name
  121. end;
  122.  
  123. procedure TMainForm.FileNewItemClick(Sender: TObject);
  124. var
  125.   Child: TMDIChild;
  126. begin
  127.   { create a new MDI child window }
  128.   Child := TMDIChild.Create(Application);
  129.   Child.Caption := 'NONAME' + IntToStr(MDIChildCount);
  130. end;
  131.  
  132. procedure TMainForm.FileOpenItemClick(Sender: TObject);
  133. begin
  134.   if OpenDialog.Execute then
  135.     CreateMDIChild(OpenDialog.FileName);
  136. end;
  137.  
  138. procedure TMainForm.FileCloseItemClick(Sender: TObject);
  139. begin
  140.   if ActiveMDIChild <> nil then
  141.     ActiveMDIChild.Close;
  142. end;
  143.  
  144. procedure TMainForm.FileSaveItemClick(Sender: TObject);
  145. begin
  146.   { save current file (ActiveMDIChild points to the window) }
  147.      With ActiveMDIChild As TMDIChild Do
  148.           Save1Click(Sender)
  149. end;
  150.  
  151. procedure TMainForm.FileSaveAsItemClick(Sender: TObject);
  152. begin
  153.   { save current file under new name }
  154.      With ActiveMDIChild As TMDIChild Do
  155.           SaveAs1Click(Sender)
  156. end;
  157.  
  158. procedure TMainForm.FileExitItemClick(Sender: TObject);
  159. begin
  160.   Close;
  161. end;
  162.  
  163. procedure TMainForm.CutItemClick(Sender: TObject);
  164. begin
  165.   {cut selection to clipboard}
  166.      With ActiveMDIChild As TMDIChild Do
  167.           Cut1Click(Sender)
  168. end;
  169.  
  170. procedure TMainForm.CopyItemClick(Sender: TObject);
  171. begin
  172.   {copy selection to clipboard}
  173.      With ActiveMDIChild As TMDIChild Do
  174.           Copy1Click(Sender)
  175. end;
  176.  
  177. procedure TMainForm.PasteItemClick(Sender: TObject);
  178. begin
  179.   {paste from clipboard}
  180.      With ActiveMDIChild As TMDIChild Do
  181.           Paste1Click(Sender)
  182. end;
  183.  
  184. procedure TMainForm.WindowCascadeItemClick(Sender: TObject);
  185. begin
  186.   Cascade;
  187. end;
  188.  
  189. procedure TMainForm.WindowTileItemClick(Sender: TObject);
  190. begin
  191.   Tile;
  192. end;
  193.  
  194. procedure TMainForm.WindowArrangeItemClick(Sender: TObject);
  195. begin
  196.   ArrangeIcons;
  197. end;
  198.  
  199. procedure TMainForm.WindowMinimizeItemClick(Sender: TObject);
  200. var
  201.   I: Integer;
  202. begin
  203.   { Must be done backwards through the MDIChildren array }
  204.   for I := MDIChildCount - 1 downto 0 do
  205.     MDIChildren[I].WindowState := wsMinimized;
  206. end;
  207.  
  208. procedure TMainForm.UpdateMenuItems(Sender: TObject);
  209. begin
  210.   WindowCascadeItem.Enabled := MDIChildCount > 0;
  211.   WindowTileItem.Enabled := MDIChildCount > 0;
  212.   WindowArrangeItem.Enabled := MDIChildCount > 0;
  213.   WindowMinimizeItem.Enabled := MDIChildCount > 0;
  214. end;
  215.  
  216. procedure TMainForm.FormDestroy(Sender: TObject);
  217. begin
  218.   Screen.OnActiveFormChange := nil;
  219. end;
  220.  
  221. procedure TMainForm.HelpAboutItemClick(Sender: TObject);
  222. begin
  223.      AboutBox.Show
  224. end;
  225.  
  226. procedure TMainForm.FormShow(Sender: TObject);
  227. begin
  228.   AboutBox.ShowModal
  229. end;
  230.  
  231. procedure TMainForm.PrintBtnClick(Sender: TObject);
  232. begin
  233.      With ActiveMDIChild As TMDIChild Do
  234.           Print1Click(Sender)
  235. end;
  236.  
  237. procedure TMainForm.WrapNoneBtnClick(Sender: TObject);
  238. begin
  239.      With ActiveMDIChild As TMDIChild Do
  240.           FileEditor1.WrapMode := opNone
  241. end;
  242.  
  243. procedure TMainForm.WrapScreenBtnClick(Sender: TObject);
  244. begin
  245.      With ActiveMDIChild As TMDIChild Do
  246.           FileEditor1.WrapMode := opWrapScreenWidth
  247.  
  248. end;
  249.  
  250. procedure TMainForm.WrapPrinterBtnClick(Sender: TObject);
  251. begin
  252.      With ActiveMDIChild As TMDIChild Do
  253.           FileEditor1.WrapMode := opPrinter
  254.  
  255. end;
  256.  
  257. procedure TMainForm.WrapAbsBtnClick(Sender: TObject);
  258. begin
  259.      With ActiveMDIChild As TMDIChild Do
  260.           FileEditor1.WrapMode := opAbsoluteWrap
  261.  
  262. end;
  263.  
  264. procedure TMainForm.PrintSetup1Click(Sender: TObject);
  265.  
  266. var I: integer;
  267.  
  268. begin
  269.      PrinterSetupDialog1.Execute;
  270.      For I := 1 to MDIChildCount Do
  271.          If MDIChildren[I] is TMDIChild Then
  272.             TMDIChild(MDIChildren[I]).FileEditor1.HandlePrinterChange(Sender)
  273. end;
  274.  
  275. end.
  276.