home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Plus! (NZ) 2001 June
/
HDC50.iso
/
Runimage
/
Delphi50
/
Demos
/
Activex
/
Olectnrs
/
MDIMAIN.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1999-08-11
|
7KB
|
272 lines
{ This sample application demonstrates the following features of the
TOLEContainer:
- Toolbar negotiation
- Status bar hints while inplace editing
- Local popup menu with OLE verbs and standard OLE functions
(See the popup menu in MDICHILD.PAS)
- Using the TOLEContainer's dialogs including InsertObject,
ObjectProperties and PasteSpecial.
- Using the TOLEContainer's constructors CreateLinkToFile,
CreateObjectFromFile.
- Menu merging during in-place activation
- Using OLE object verbs.
}
unit mdimain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, Buttons, ExtCtrls, Menus, OleCtnrs;
type
TMainForm = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
Exit1: TMenuItem;
Window2: TMenuItem;
Tile1: TMenuItem;
Cascade1: TMenuItem;
Help1: TMenuItem;
About1: TMenuItem;
Toolbar: TPanel;
SpeedButton1: TSpeedButton;
New1: TMenuItem;
N1: TMenuItem;
TileHorizontally1: TMenuItem;
LinkButton: TSpeedButton;
CopyButton: TSpeedButton;
CutButton: TSpeedButton;
PasteButton: TSpeedButton;
OpenButton: TSpeedButton;
OpenDialog1: TOpenDialog;
StatusPanel: TPanel;
StatusBar: TStatusBar;
Save1: TMenuItem;
SaveAs1: TMenuItem;
Close2: TMenuItem;
CloseAll1: TMenuItem;
SaveDialog1: TSaveDialog;
Open1: TMenuItem;
N2: TMenuItem;
ArrangeIcons1: TMenuItem;
NewButton: TSpeedButton;
SaveButton: TSpeedButton;
procedure New1Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure Tile1Click(Sender: TObject);
procedure TileHorizontally1Click(Sender: TObject);
procedure Cascade1Click(Sender: TObject);
procedure Close1Click(Sender: TObject);
procedure Copy1Click(Sender: TObject);
procedure Paste1Click(Sender: TObject);
procedure Object2Click(Sender: TObject);
procedure LinkButtonClick(Sender: TObject);
procedure About1Click(Sender: TObject);
procedure Save1Click(Sender: TObject);
procedure File1Click(Sender: TObject);
procedure Window2Click(Sender: TObject);
procedure Open1Click(Sender: TObject);
procedure CutButtonClick(Sender: TObject);
procedure ArrangeIcons1Click(Sender: TObject);
procedure CloseAll1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure ShowHint(Sender: TObject);
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
uses MDIChild, about;
{$R *.DFM}
procedure TMainForm.ShowHint(Sender: TObject);
begin
Statusbar.Panels[0].Text := Application.Hint;
end;
procedure TMainForm.New1Click(Sender: TObject);
begin
MDIChildForm := TMDIChildForm.Create(Self);
with MDIChildForm do
begin
InsertObject1Click(Sender);
with OleContainer1 do
if NewInserted then
DoVerb(PrimaryVerb);
end;
end;
procedure TMainForm.Exit1Click(Sender: TObject);
begin
Close;
end;
procedure TMainForm.Tile1Click(Sender: TObject);
begin
TileMode := tbVertical;
Tile;
end;
procedure TMainForm.TileHorizontally1Click(Sender: TObject);
begin
TileMode := tbHorizontal;
Tile;
end;
procedure TMainForm.Cascade1Click(Sender: TObject);
begin
Cascade;
end;
procedure TMainForm.Close1Click(Sender: TObject);
begin
if ActiveMDIChild <> nil then
TMDIChildForm(ActiveMDIChild).Close;
end;
procedure TMainForm.Copy1Click(Sender: TObject);
begin
if ActiveMDIChild <> nil then
TMDIChildForm(ActiveMDIChild).OleContainer1.Copy;
end;
procedure TMainForm.Paste1Click(Sender: TObject);
begin
if ActiveMDIChild = nil then exit;
with TMDIChildForm(ActiveMDIChild).OleContainer1 do
if (State = osEmpty) or
(MessageDlg('Replace existing object?', mtConfirmation, mbOkCancel, 0) = mrOk) then
begin
Paste;
CutButton.Enabled := True;
CopyButton.Enabled := True;
end;
end;
procedure TMainForm.Object2Click(Sender: TObject);
begin
if ActiveMDIChild <> nil then
TMDIChildForm(ActiveMDIChild).OleContainer1.ObjectPropertiesDialog;
end;
procedure TMainForm.LinkButtonClick(Sender: TObject);
var
MDIChild: TMDIChildForm;
begin
if ActiveMDIChild = nil then
begin
if OpenDialog1.Execute then
begin
MDIChild := TMDIChildForm.Create(Self);
MDIChild.CreateFromFile(OpenDialog1.FileName, True);
end;
end
else
with TMDIChildForm(ActiveMDIChild) do
if (OleContainer1.State = osEmpty) or
(MessageDlg('Replace existing object?', mtConfirmation, mbOkCancel, 0) = mrOk) then
if OpenDialog1.Execute then
CreateFromFile(OpenDialog1.FileName, True);
end;
procedure TMainForm.About1Click(Sender: TObject);
begin
AboutBox := TAboutBox.Create(Self);
try
AboutBox.ShowModal;
finally
AboutBox.Free;
end;
end;
procedure TMainForm.Save1Click(Sender: TObject);
begin
with TMDIChildForm(ActiveMDIChild), SaveDialog1 do
if (Length(FileName) = 0) or (Sender = SaveAs1) then
begin
if Execute then
SaveFile(FileName);
end
else
SaveFile(FileName);
end;
procedure TMainForm.File1Click(Sender: TObject);
begin
if ActiveMDIChild <> nil then
with TMDIChildForm(ActiveMDIChild).OleContainer1 do
begin
Save1.Enabled := Modified;
SaveAs1.Enabled := Modified;
end
else
begin
Save1.Enabled := False;
SaveAs1.Enabled := False;
end;
Close2.Enabled := ActiveMDIChild <> nil;
CloseAll1.Enabled := ActiveMDIChild <> nil;
end;
procedure TMainForm.Window2Click(Sender: TObject);
begin
Tile1.Enabled := ActiveMDIChild <> nil;
TileHorizontally1.Enabled := ActiveMDIChild <> nil;
Cascade1.Enabled := ActiveMDIChild <> nil;
ArrangeIcons1.Enabled := ActiveMDIChild <> nil;
end;
procedure TMainForm.Open1Click(Sender: TObject);
begin
with OpenDialog1 do
if Execute then
begin
with TMDIChildForm.Create(Self) do
CreateFromFile(OpenDialog1.FileName, False);
CutButton.Enabled := True;
CopyButton.Enabled := True;
end;
end;
procedure TMainForm.CutButtonClick(Sender: TObject);
begin
if ActiveMDIChild <> nil then
with TMDIChildForm(ActiveMDIChild).OleContainer1 do
begin
Copy;
DestroyObject;
CutButton.Enabled := False;
CopyButton.Enabled := False;
PasteButton.Enabled := True;
end;
end;
procedure TMainForm.ArrangeIcons1Click(Sender: TObject);
begin
ArrangeIcons;
end;
procedure TMainForm.CloseAll1Click(Sender: TObject);
var
i: integer;
begin
for i := 0 to MDIChildCount - 1 do
MDIChildren[i].Close;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
Application.OnHint := ShowHint;
end;
end.