home *** CD-ROM | disk | FTP | other *** search
/ PC Format Collection 48 / SENT14D.ISO / tech / delphi / disk15 / mdiapp.pak / MAIN.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1995-08-24  |  4.8 KB  |  189 lines

  1. unit Main;
  2.  
  3. interface
  4.  
  5. uses WinTypes, WinProcs, SysUtils, Classes, Graphics, Forms, Controls, Menus,
  6.   StdCtrls, Dialogs, Buttons, Messages, ExtCtrls;
  7.  
  8. type
  9.   TMainForm = class(TForm)
  10.     MainMenu1: TMainMenu;
  11.     Panel1: TPanel;
  12.     StatusLine: TPanel;
  13.     File1: TMenuItem;
  14.     FileNewItem: TMenuItem;
  15.     FileOpenItem: TMenuItem;
  16.     Panel2: TPanel;
  17.     FileCloseItem: TMenuItem;
  18.     Window1: TMenuItem;
  19.     Help1: TMenuItem;
  20.     N1: TMenuItem;
  21.     FileExitItem: TMenuItem;
  22.     WindowCascadeItem: TMenuItem;
  23.     WindowTileItem: TMenuItem;
  24.     WindowArrangeItem: TMenuItem;
  25.     HelpAboutItem: TMenuItem;
  26.     OpenDialog: TOpenDialog;
  27.     FileSaveItem: TMenuItem;
  28.     FileSaveAsItem: TMenuItem;
  29.     Edit1: TMenuItem;
  30.     CutItem: TMenuItem;
  31.     CopyItem: TMenuItem;
  32.     PasteItem: TMenuItem;
  33.     WindowMinimizeItem: TMenuItem;
  34.     SpeedPanel: TPanel;
  35.     OpenBtn: TSpeedButton;
  36.     SaveBtn: TSpeedButton;
  37.     CutBtn: TSpeedButton;
  38.     CopyBtn: TSpeedButton;
  39.     PasteBtn: TSpeedButton;
  40.     ExitBtn: TSpeedButton;
  41.     procedure FormCreate(Sender: TObject);
  42.     procedure FileNewItemClick(Sender: TObject);
  43.     procedure WindowCascadeItemClick(Sender: TObject);
  44.     procedure UpdateMenuItems(Sender: TObject);
  45.     procedure WindowTileItemClick(Sender: TObject);
  46.     procedure WindowArrangeItemClick(Sender: TObject);
  47.     procedure FileCloseItemClick(Sender: TObject);
  48.     procedure FileOpenItemClick(Sender: TObject);
  49.     procedure FileExitItemClick(Sender: TObject);
  50.     procedure FileSaveItemClick(Sender: TObject);
  51.     procedure FileSaveAsItemClick(Sender: TObject);
  52.     procedure CutItemClick(Sender: TObject);
  53.     procedure CopyItemClick(Sender: TObject);
  54.     procedure PasteItemClick(Sender: TObject);
  55.     procedure WindowMinimizeItemClick(Sender: TObject);
  56.     procedure FormDestroy(Sender: TObject);
  57.   private
  58.     { Private declarations }
  59.     procedure CreateMDIChild(const Name: string);
  60.     procedure ShowHint(Sender: TObject);
  61.   public
  62.     { Public declarations }
  63.   end;
  64.  
  65. var
  66.   MainForm: TMainForm;
  67.  
  68. implementation
  69.  
  70. {$R *.DFM}
  71.  
  72. uses ChildWin;
  73.  
  74. procedure TMainForm.FormCreate(Sender: TObject);
  75. begin
  76.   Application.OnHint := ShowHint;
  77.   Screen.OnActiveFormChange := UpdateMenuItems;
  78. end;
  79.  
  80. procedure TMainForm.ShowHint(Sender: TObject);
  81. begin
  82.   StatusLine.Caption := Application.Hint;
  83. end;
  84.  
  85. procedure TMainForm.CreateMDIChild(const Name: string);
  86. var
  87.   Child: TMDIChild;
  88. begin
  89.   { create a new MDI child window }
  90.   Child := TMDIChild.Create(Application);
  91.   Child.Caption := Name;
  92. end;
  93.  
  94. procedure TMainForm.FileNewItemClick(Sender: TObject);
  95. begin
  96.   CreateMDIChild('NONAME' + IntToStr(MDIChildCount + 1));
  97. end;
  98.  
  99. procedure TMainForm.FileOpenItemClick(Sender: TObject);
  100. begin
  101.   if OpenDialog.Execute then
  102.     CreateMDIChild(OpenDialog.FileName);
  103. end;
  104.  
  105. procedure TMainForm.FileCloseItemClick(Sender: TObject);
  106. begin
  107.   if ActiveMDIChild <> nil then
  108.     ActiveMDIChild.Close;
  109. end;
  110.  
  111. procedure TMainForm.FileSaveItemClick(Sender: TObject);
  112. begin
  113.   { save current file (ActiveMDIChild points to the window) }
  114. end;
  115.  
  116. procedure TMainForm.FileSaveAsItemClick(Sender: TObject);
  117. begin
  118.   { save current file under new name }
  119. end;
  120.  
  121. procedure TMainForm.FileExitItemClick(Sender: TObject);
  122. begin
  123.   Close;
  124. end;
  125.  
  126. procedure TMainForm.CutItemClick(Sender: TObject);
  127. begin
  128.   {cut selection to clipboard}
  129. end;
  130.  
  131. procedure TMainForm.CopyItemClick(Sender: TObject);
  132. begin
  133.   {copy selection to clipboard}
  134. end;
  135.  
  136. procedure TMainForm.PasteItemClick(Sender: TObject);
  137. begin
  138.   {paste from clipboard}
  139. end;
  140.  
  141. procedure TMainForm.WindowCascadeItemClick(Sender: TObject);
  142. begin
  143.   Cascade;
  144. end;
  145.  
  146. procedure TMainForm.WindowTileItemClick(Sender: TObject);
  147. begin
  148.   Tile;
  149. end;
  150.  
  151. procedure TMainForm.WindowArrangeItemClick(Sender: TObject);
  152. begin
  153.   ArrangeIcons;
  154. end;
  155.  
  156. procedure TMainForm.WindowMinimizeItemClick(Sender: TObject);
  157. var
  158.   I: Integer;
  159. begin
  160.   { Must be done backwards through the MDIChildren array }
  161.   for I := MDIChildCount - 1 downto 0 do
  162.     MDIChildren[I].WindowState := wsMinimized;
  163. end;
  164.  
  165. procedure TMainForm.UpdateMenuItems(Sender: TObject);
  166. begin
  167.   FileCloseItem.Enabled := MDIChildCount > 0;
  168.   FileSaveItem.Enabled := MDIChildCount > 0;
  169.   FileSaveAsItem.Enabled := MDIChildCount > 0;
  170.   CutItem.Enabled := MDIChildCount > 0;
  171.   CopyItem.Enabled := MDIChildCount > 0;
  172.   PasteItem.Enabled := MDIChildCount > 0;
  173.   SaveBtn.Enabled := MDIChildCount > 0;
  174.   CutBtn.Enabled := MDIChildCount > 0;
  175.   CopyBtn.Enabled := MDIChildCount > 0;
  176.   PasteBtn.Enabled := MDIChildCount > 0;
  177.   WindowCascadeItem.Enabled := MDIChildCount > 0;
  178.   WindowTileItem.Enabled := MDIChildCount > 0;
  179.   WindowArrangeItem.Enabled := MDIChildCount > 0;
  180.   WindowMinimizeItem.Enabled := MDIChildCount > 0;
  181. end;
  182.  
  183. procedure TMainForm.FormDestroy(Sender: TObject);
  184. begin
  185.   Screen.OnActiveFormChange := nil;
  186. end;
  187.  
  188. end.
  189.