home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1996 August / VPR9608A.BIN / del20try / install / data.z / SDIMAIN.PAS < prev    next >
Pascal/Delphi Source File  |  1996-05-08  |  7KB  |  264 lines

  1. { This sample application demonstrates the following features of the
  2.   TOLEContainer:
  3.  
  4.   - Toolbar negotiation
  5.   - Status bar hints while inplace editing
  6.   - Using the TOLEContainer's dialogs including InsertObject,
  7.     ObjectProperties and PasteSpecial.
  8.   - Using the TOLEContainer's constructors CreateLinkToFile,
  9.     CreateObjectFromFile.
  10.   - Menu merging during in-place activation
  11. }
  12. unit sdimain;
  13.  
  14. interface
  15.  
  16. uses
  17.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  18.   ComCtrls, Buttons, ExtCtrls, Menus, OleCtnrs, StdCtrls;
  19.  
  20. type
  21.   TMainForm = class(TForm)
  22.     MainMenu1: TMainMenu;
  23.     File1: TMenuItem;
  24.     Exit1: TMenuItem;
  25.     Help1: TMenuItem;
  26.     About1: TMenuItem;
  27.     Toolbar: TPanel;
  28.     SpeedButton1: TSpeedButton;
  29.     LinkButton: TSpeedButton;
  30.     CopyButton: TSpeedButton;
  31.     CutButton: TSpeedButton;
  32.     PasteButton: TSpeedButton;
  33.     OpenButton: TSpeedButton;
  34.     OpenDialog1: TOpenDialog;
  35.     StatusPanel: TPanel;
  36.     StatusBar: TStatusBar;
  37.     Save1: TMenuItem;
  38.     SaveAs1: TMenuItem;
  39.     SaveDialog1: TSaveDialog;
  40.     Open1: TMenuItem;
  41.     N2: TMenuItem;
  42.     SaveButton: TSpeedButton;
  43.     Edit1: TMenuItem;
  44.     Object1: TMenuItem;
  45.     N4: TMenuItem;
  46.     PasteSpecial1: TMenuItem;
  47.     Paste1: TMenuItem;
  48.     Copy1: TMenuItem;
  49.     Cut1: TMenuItem;
  50.     New1: TMenuItem;
  51.     Panel1: TPanel;
  52.     OleContainer1: TOleContainer;
  53.     procedure Exit1Click(Sender: TObject);
  54.     procedure Copy1Click(Sender: TObject);
  55.     procedure Paste1Click(Sender: TObject);
  56.     procedure Object2Click(Sender: TObject);
  57.     procedure LinkButtonClick(Sender: TObject);
  58.     procedure About1Click(Sender: TObject);
  59.     procedure Save1Click(Sender: TObject);
  60.     procedure File1Click(Sender: TObject);
  61.     procedure Open1Click(Sender: TObject);
  62.     procedure CutButtonClick(Sender: TObject);
  63.     procedure New1Click(Sender: TObject);
  64.     procedure FormCreate(Sender: TObject);
  65.     procedure Object1Click(Sender: TObject);
  66.     procedure Cut1Click(Sender: TObject);
  67.     procedure PasteSpecial1Click(Sender: TObject);
  68.     procedure Edit1Click(Sender: TObject);
  69.   private
  70.     ObjectFileName: TFileName;
  71.     procedure ShowHint(Sender: TObject);    
  72.   end;
  73.  
  74. var
  75.   MainForm: TMainForm;
  76.  
  77. implementation
  78.  
  79. uses about;
  80.  
  81. {$R *.DFM}
  82.  
  83. procedure TMainForm.ShowHint(Sender: TObject);
  84. begin
  85.   Statusbar.Panels[0].Text := Application.Hint;
  86. end;
  87.  
  88. procedure TMainForm.Exit1Click(Sender: TObject);
  89. begin
  90.   Close;
  91. end;
  92.  
  93. procedure TMainForm.Copy1Click(Sender: TObject);
  94. begin
  95.   OleContainer1.Copy;
  96.   PasteButton.Enabled := True;
  97. end;
  98.  
  99. procedure TMainForm.Paste1Click(Sender: TObject);
  100. begin
  101.   if (OleContainer1.State = osEmpty) or
  102.     (MessageDlg('Replace existing object?', mtConfirmation, mbOkCancel, 0) = mrOk) then
  103.   begin
  104.     OleContainer1.Paste;
  105.     CopyButton.Enabled := True;
  106.     CutButton.Enabled := True;
  107.   end;
  108. end;
  109.  
  110. procedure TMainForm.Object2Click(Sender: TObject);
  111. begin
  112.   if OleContainer1.State <> osEmpty then
  113.     OleContainer1.ObjectPropertiesDialog;
  114. end;
  115.  
  116. procedure TMainForm.LinkButtonClick(Sender: TObject);
  117. begin
  118.   if (OleContainer1.State = osEmpty) or
  119.     (MessageDlg('Replace existing object?', mtConfirmation, mbOkCancel, 0) = mrOk) then
  120.     with OpenDialog1 do
  121.       if OpenDialog1.Execute then
  122.       begin
  123.         OleContainer1.CreateLinkToFile(FileName, False);
  124.         ObjectFileName := FileName;
  125.         CutButton.Enabled := True;
  126.         CopyButton.Enabled := True;
  127.         PasteButton.Enabled := OleContainer1.CanPaste;
  128.       end;
  129. end;
  130.  
  131. procedure TMainForm.About1Click(Sender: TObject);
  132. begin
  133.   AboutBox := TAboutBox.Create(Self);
  134.   try
  135.     AboutBox.ShowModal;
  136.   finally
  137.     AboutBox.Free;
  138.   end;
  139. end;
  140.  
  141. procedure TMainForm.Save1Click(Sender: TObject);
  142. begin
  143.   with SaveDialog1 do
  144.   begin
  145.     SaveDialog1.FileName := ObjectFileName;
  146.     if (Length(FileName) = 0) or (Sender = SaveAs1) then
  147.     begin
  148.       if Execute then
  149.       begin
  150.         OleContainer1.SaveToFile(FileName);
  151.         ObjectFileName := FileName;
  152.       end
  153.     end
  154.     else
  155.       OleContainer1.SaveToFile(FileName);
  156.   end;
  157. end;
  158.  
  159. procedure TMainForm.File1Click(Sender: TObject);
  160. begin
  161.   with OleContainer1 do
  162.   begin
  163.     Save1.Enabled := Modified;
  164.     SaveAs1.Enabled := Modified;
  165.   end;
  166. end;
  167.  
  168. procedure TMainForm.Open1Click(Sender: TObject);
  169. begin
  170.   with OpenDialog1 do
  171.     if Execute then
  172.     begin
  173.       OleContainer1.CreateObjectFromFile(FileName, False);
  174.       ObjectFileName := FileName;
  175.       CutButton.Enabled := True;
  176.       CopyButton.Enabled := True;
  177.       PasteButton.Enabled := True;
  178.     end;
  179. end;
  180.  
  181. procedure TMainForm.CutButtonClick(Sender: TObject);
  182. begin
  183.   if OleContainer1.State <> osEmpty then
  184.     with OleContainer1 do
  185.     begin
  186.       Copy;
  187.       DestroyObject;
  188.       CopyButton.Enabled := False;
  189.       PasteButton.Enabled := OleContainer1.CanPaste;
  190.       ObjectFilename := '';
  191.     end;
  192. end;
  193.  
  194. procedure TMainForm.New1Click(Sender: TObject);
  195. begin
  196.   if (OleContainer1.State = osEmpty) or
  197.     (MessageDlg('Delete existing object?', mtConfirmation, mbOkCancel, 0) = mrOk) then
  198.     begin
  199.       with OleContainer1 do
  200.       begin
  201.         DestroyObject;
  202.         Object1Click(Sender);
  203.         DoVerb(PrimaryVerb);
  204.         ObjectFileName := '';        
  205.       end
  206.     end;
  207. end;
  208.  
  209. procedure TMainForm.FormCreate(Sender: TObject);
  210. begin
  211.   ObjectFileName := '';
  212.   Application.OnHint := ShowHint;
  213. end;
  214.  
  215. procedure TMainForm.Object1Click(Sender: TObject);
  216. begin
  217.   if (OleContainer1.State = osEmpty) or
  218.     (MessageDlg('Delete current OLE object?', mtConfirmation, mbOkCancel, 0) = mrOk) then
  219.     if OleContainer1.InsertObjectDialog then
  220.     begin
  221.       CutButton.Enabled := True;
  222.       CopyButton.Enabled := True;
  223.       PasteButton.Enabled := OleContainer1.CanPaste;
  224.       with OleContainer1 do
  225.         DoVerb(PrimaryVerb);
  226.     end;
  227. end;
  228.  
  229. procedure TMainForm.Cut1Click(Sender: TObject);
  230. begin
  231.   OleContainer1.Copy;
  232.   OleContainer1.DestroyObject;
  233.   CutButton.Enabled := False;
  234.   CopyButton.Enabled := False;  
  235.   PasteButton.Enabled := OleContainer1.CanPaste;  
  236. end;
  237.  
  238. procedure TMainForm.PasteSpecial1Click(Sender: TObject);
  239. begin
  240.   if (OleContainer1.State = osEmpty) or
  241.     (MessageDlg('Delete current OLE object?', mtConfirmation, mbOkCancel, 0) = mrOk) then
  242.   begin
  243.     if OleContainer1.PasteSpecialDialog then
  244.     begin
  245.       CutButton.Enabled := True;
  246.       CopyButton.Enabled := True;
  247.       PasteButton.Enabled := OleContainer1.CanPaste;
  248.     end;
  249.   end;
  250. end;
  251.  
  252. procedure TMainForm.Edit1Click(Sender: TObject);
  253. begin
  254.   with OleContainer1 do
  255.   begin
  256.     Cut1.Enabled := State <> osEmpty;
  257.     Copy1.Enabled := State <> osEmpty;
  258.     Paste1.Enabled := CanPaste;
  259.     PasteSpecial1.Enabled := CanPaste;
  260.   end;
  261. end;
  262.  
  263. end.
  264.