📄 main.pas
字号:
unit Main;
interface
uses WinTypes, WinProcs, SysUtils, Classes, Graphics, Forms, Controls, Menus,
StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ChildWin, ComCtrls,
ToolWin, ImgList;
type
TMainForm = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
FileNewItem: TMenuItem;
FileOpenItem: TMenuItem;
FileCloseItem: TMenuItem;
Window1: TMenuItem;
Help1: TMenuItem;
N1: TMenuItem;
FileExitItem: TMenuItem;
WindowCascadeItem: TMenuItem;
WindowTileItem: TMenuItem;
WindowArrangeItem: TMenuItem;
HelpAboutItem: TMenuItem;
OpenDialog: TOpenDialog;
FileSaveItem: TMenuItem;
FileSaveAsItem: TMenuItem;
Edit1: TMenuItem;
PasteItem: TMenuItem;
WindowMinimizeItem: TMenuItem;
SaveDialog: TSaveDialog;
CopyItem: TMenuItem;
CloseAll1: TMenuItem;
StatusBar: TStatusBar;
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
OpenBtn: TToolButton;
SaveBtn: TToolButton;
ToolButton3: TToolButton;
CopyBtn: TToolButton;
PasteBtn: TToolButton;
ToolButton6: TToolButton;
ExitBtn: TToolButton;
ImageList1: TImageList;
NewBtn: TToolButton;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FileNewItemClick(Sender: TObject);
procedure WindowCascadeItemClick(Sender: TObject);
procedure UpdateMenuItems(Sender: TObject);
procedure WindowTileItemClick(Sender: TObject);
procedure WindowArrangeItemClick(Sender: TObject);
procedure FileCloseItemClick(Sender: TObject);
procedure FileOpenItemClick(Sender: TObject);
procedure FileExitItemClick(Sender: TObject);
procedure FileSaveItemClick(Sender: TObject);
procedure FileSaveAsItemClick(Sender: TObject);
procedure PasteItemClick(Sender: TObject);
procedure WindowMinimizeItemClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure HelpAboutItemClick(Sender: TObject);
procedure CopyItemClick(Sender: TObject);
procedure CloseAll1Click(Sender: TObject);
private
procedure ShowHint(Sender: TObject);
end;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
uses About;
var
NumChildren: Cardinal = 0;
procedure TMainForm.FormCreate(Sender: TObject);
begin
Application.OnHint := ShowHint;
Screen.OnActiveFormChange := UpdateMenuItems;
end;
procedure TMainForm.ShowHint(Sender: TObject);
begin
{ Show hints on status bar }
StatusBar.SimpleText := Application.Hint;
end;
procedure TMainForm.FileNewItemClick(Sender: TObject);
begin
inc(NumChildren);
{ create a new MDI child window }
with TMDIChild.Create(Application) do
begin
Caption := 'NEW' + IntToStr(NumChildren);
{ bring up insert OLE object dialog and insert into child }
OleContainer.InsertObjectDialog;
end;
end;
procedure TMainForm.FileOpenItemClick(Sender: TObject);
begin
if OpenDialog.Execute then
with TMDIChild.Create(Application) do
begin
try
OleFileName := OpenDialog.FileName;
OleContainer.LoadFromFile(OleFileName);
Show;
except
Release; // free form on error
raise; // re-raise exception
end;
end;
end;
procedure TMainForm.FileCloseItemClick(Sender: TObject);
begin
if ActiveMDIChild <> nil then
ActiveMDIChild.Close;
end;
procedure TMainForm.FileSaveAsItemClick(Sender: TObject);
begin
if (ActiveMDIChild <> nil) and (SaveDialog.Execute) then
with TMDIChild(ActiveMDIChild) do
begin
OleFileName := SaveDialog.FileName;
OleContainer.SaveToFile(OleFileName);
end;
end;
procedure TMainForm.FileSaveItemClick(Sender: TObject);
begin
if ActiveMDIChild <> nil then
{ if no name is assigned, then do a "save as" }
if TMDIChild(ActiveMDIChild).OLEFileName = '' then
FileSaveAsItemClick(Sender)
else
{ otherwise save under current name }
with TMDIChild(ActiveMDIChild) do
OleContainer.SaveToFile(OLEFileName);
end;
procedure TMainForm.FileExitItemClick(Sender: TObject);
begin
Close;
end;
procedure TMainForm.PasteItemClick(Sender: TObject);
begin
if ActiveMDIChild <> nil then
with TMDIChild(ActiveMDIChild).OleContainer do
{ Before invoking dialog, check to be sure that there }
{ are valid OLE objects on the clipboard. }
if CanPaste then PasteSpecialDialog;
end;
procedure TMainForm.WindowCascadeItemClick(Sender: TObject);
begin
Cascade;
end;
procedure TMainForm.WindowTileItemClick(Sender: TObject);
begin
Tile;
end;
procedure TMainForm.WindowArrangeItemClick(Sender: TObject);
begin
ArrangeIcons;
end;
procedure TMainForm.WindowMinimizeItemClick(Sender: TObject);
var
I: Integer;
begin
{ Must be done backwards through the MDIChildren array }
for I := MDIChildCount - 1 downto 0 do
MDIChildren[I].WindowState := wsMinimized;
end;
procedure TMainForm.UpdateMenuItems(Sender: TObject);
var
DoIt: Boolean;
begin
DoIt := MDIChildCount > 0;
{ only enable options if there are active children }
FileCloseItem.Enabled := DoIt;
FileSaveItem.Enabled := DoIt;
CloseAll1.Enabled := DoIt;
FileSaveAsItem.Enabled := DoIt;
CopyItem.Enabled := DoIt;
PasteItem.Enabled := DoIt;
CopyBtn.Enabled := DoIt;
SaveBtn.Enabled := DoIt;
PasteBtn.Enabled := DoIt;
WindowCascadeItem.Enabled := DoIt;
WindowTileItem.Enabled := DoIt;
WindowArrangeItem.Enabled := DoIt;
WindowMinimizeItem.Enabled := DoIt;
end;
procedure TMainForm.FormDestroy(Sender: TObject);
begin
Screen.OnActiveFormChange := nil;
end;
procedure TMainForm.HelpAboutItemClick(Sender: TObject);
begin
with TAboutBox.Create(Self) do
begin
ShowModal;
Free;
end;
end;
procedure TMainForm.CopyItemClick(Sender: TObject);
begin
if ActiveMDIChild <> nil then
TMDIChild(ActiveMDIChild).OleContainer.Copy;
end;
procedure TMainForm.CloseAll1Click(Sender: TObject);
begin
while ActiveMDIChild <> nil do
begin
ActiveMDIChild.Release; // use Release, not Free!
Application.ProcessMessages; // let Windows take care of business
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -