home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 May / PCP163A.iso / Runimage / Cbuilder4 / Examples / Doc / OleCtnrs / SDIMAIN.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1999-01-26  |  6.6 KB  |  190 lines

  1. //----------------------------------------------------------------------------
  2. //Borland C++Builder
  3. //Copyright (c) 1987, 1998 Borland International Inc. All Rights Reserved.
  4. //----------------------------------------------------------------------------
  5. //---------------------------------------------------------------------------
  6. #include <vcl.h>
  7. #pragma hdrstop
  8.  
  9. #include <memory>     //for STL auto_ptr
  10. #include "sdimain.h"
  11. #include "about.h"
  12. //---------------------------------------------------------------------------
  13. #pragma resource "*.dfm"
  14. TMainForm *MainForm;
  15. //---------------------------------------------------------------------------
  16. __fastcall TMainForm::TMainForm(TComponent* Owner)
  17.   : TForm(Owner)
  18. {
  19. }
  20. //---------------------------------------------------------------------------
  21. void __fastcall TMainForm::Exit1Click(TObject *Sender)
  22. {
  23.   if (OleContainer1->State != osEmpty){
  24.     switch(MessageDlg("Would you like to save the current OLE object?",
  25.                       mtConfirmation,
  26.                       TMsgDlgButtons() <<  mbYes << mbNo << mbCancel, 0)){
  27.     case mrYes:
  28.       Save1Click(Sender);
  29.     case mrNo:
  30.       Close();
  31.       break;
  32.     case mrCancel:
  33.       break;
  34.     }
  35.   }
  36.   else
  37.     Close();
  38. }
  39. //---------------------------------------------------------------------
  40. void __fastcall TMainForm::Save1Click(TObject *Sender)
  41. {
  42.     SaveDialog1->FileName = ObjectFileName;
  43.     if ((SaveDialog1->FileName.Length() == 0) || (Sender == SaveAs1))
  44.     {
  45.       if (SaveDialog1->Execute())
  46.       {
  47.         OleContainer1->SaveToFile(SaveDialog1->FileName);
  48.         ObjectFileName = SaveDialog1->FileName;
  49.       }
  50.     }
  51.     else
  52.       OleContainer1->SaveToFile(SaveDialog1->FileName);
  53. }
  54. //---------------------------------------------------------------------
  55. void __fastcall TMainForm::PasteSpecial1Click(TObject *Sender)
  56. {
  57.    if ((OleContainer1->State == osEmpty) ||
  58.     (MessageDlg("Delete current OLE object?", mtConfirmation,
  59.                 TMsgDlgButtons() <<  mbOK << mbCancel, 0) == mrOk))
  60.   {
  61.     if (OleContainer1->PasteSpecialDialog())
  62.     {
  63.       CutButton->Enabled = True;
  64.       CopyButton->Enabled = True;
  65.       PasteButton->Enabled = OleContainer1->CanPaste;
  66.     }
  67.   }
  68. }
  69. //---------------------------------------------------------------------
  70. void __fastcall TMainForm::Paste1Click(TObject *Sender)
  71. {
  72.   if ((OleContainer1->State == osEmpty) ||
  73.     (MessageDlg("Replace existing object?", mtConfirmation,
  74.                 TMsgDlgButtons() <<  mbOK << mbCancel, 0) == mrOk))
  75.   {
  76.     OleContainer1->Paste();
  77.     CopyButton->Enabled = True;
  78.     CutButton->Enabled = True;
  79.   }
  80. }
  81. //---------------------------------------------------------------------
  82. void __fastcall TMainForm::Open1Click(TObject *Sender)
  83. {
  84.     if (OpenDialog1->Execute()){
  85.       OleContainer1->CreateObjectFromFile(OpenDialog1->FileName, False);
  86.       ObjectFileName = OpenDialog1->FileName;
  87.       CutButton->Enabled = True;
  88.       CopyButton->Enabled = True;
  89.       PasteButton->Enabled = True;
  90.     }
  91. }
  92. //---------------------------------------------------------------------
  93. void __fastcall TMainForm::Object1Click(TObject *Sender)
  94. {
  95.    if ((OleContainer1->State == osEmpty) ||
  96.     (MessageDlg("Delete current OLE object?", mtConfirmation,
  97.                 TMsgDlgButtons() <<  mbOK << mbCancel, 0) == mrOk))
  98.     if (OleContainer1->InsertObjectDialog())
  99.     {
  100.       CutButton->Enabled = True;
  101.       CopyButton->Enabled = True;
  102.       PasteButton->Enabled = OleContainer1->CanPaste;
  103.       OleContainer1->DoVerb(ovPrimary);
  104.     }
  105. }
  106. //---------------------------------------------------------------------
  107. void __fastcall TMainForm::New1Click(TObject *Sender)
  108. {
  109.   if ((OleContainer1->State == osEmpty) ||
  110.     (MessageDlg("Delete existing object?", mtConfirmation,
  111.                 TMsgDlgButtons() <<  mbOK << mbCancel, 0) == mrOk))
  112.     {
  113.         OleContainer1->DestroyObject();
  114.         Object1Click(Sender);
  115.         OleContainer1->DoVerb(ovPrimary);
  116.         ObjectFileName = "";
  117.     }
  118. }
  119. //---------------------------------------------------------------------
  120. void __fastcall TMainForm::FormCreate(TObject *Sender)
  121. {
  122.   ObjectFileName = "";
  123.   Application->OnHint = ShowHint;
  124. }
  125. //---------------------------------------------------------------------
  126. void __fastcall TMainForm::LinkButtonClick(TObject *Sender)
  127. {
  128.    if ((OleContainer1->State == osEmpty) ||
  129.     (MessageDlg("Replace existing object?", mtConfirmation,
  130.                 TMsgDlgButtons() <<  mbOK << mbCancel, 0) == mrOk))
  131.       if (OpenDialog1->Execute())
  132.       {
  133.         OleContainer1->CreateLinkToFile(OpenDialog1->FileName, False);
  134.         ObjectFileName = OpenDialog1->FileName;
  135.         CutButton->Enabled = True;
  136.         CopyButton->Enabled = True;
  137.         PasteButton->Enabled = OleContainer1->CanPaste;
  138.       }
  139. }
  140. //---------------------------------------------------------------------
  141. void __fastcall TMainForm::File1Click(TObject *Sender)
  142. {
  143.     Save1->Enabled = OleContainer1->Modified;
  144.     SaveAs1->Enabled = OleContainer1->Modified;
  145. }
  146. //---------------------------------------------------------------------
  147. void __fastcall TMainForm::Edit1Click(TObject *Sender)
  148. {
  149.     Cut1->Enabled = OleContainer1->State != osEmpty;
  150.     Copy1->Enabled = OleContainer1->State != osEmpty;
  151.     Paste1->Enabled = OleContainer1->CanPaste;
  152.     PasteSpecial1->Enabled = OleContainer1->CanPaste;
  153. }
  154. //---------------------------------------------------------------------
  155. void __fastcall TMainForm::CutButtonClick(TObject *Sender)
  156. {
  157.    if (OleContainer1->State != osEmpty)
  158.       OleContainer1->Copy();
  159.       OleContainer1->DestroyObject();
  160.       CopyButton->Enabled = False;
  161.       PasteButton->Enabled = OleContainer1->CanPaste;
  162.       ObjectFileName = "";
  163. }
  164. //---------------------------------------------------------------------
  165. void __fastcall TMainForm::Cut1Click(TObject *Sender)
  166. {
  167.   OleContainer1->Copy();
  168.   OleContainer1->DestroyObject();
  169.   CutButton->Enabled = False;
  170.   CopyButton->Enabled = False;
  171.   PasteButton->Enabled = OleContainer1->CanPaste;
  172.  
  173. }
  174. //---------------------------------------------------------------------
  175. void __fastcall TMainForm::Copy1Click(TObject *Sender)
  176. {
  177.   OleContainer1->Copy();
  178.   PasteButton->Enabled = True;
  179. }
  180. //---------------------------------------------------------------------
  181. void __fastcall TMainForm::About1Click(TObject *Sender)
  182. {
  183.    std::auto_ptr<TAboutBox> AboutBox(new TAboutBox(this));
  184.    AboutBox->ShowModal();
  185. }
  186. //---------------------------------------------------------------------
  187. void __fastcall TMainForm::ShowHint(TObject *Sender)
  188. {
  189.   StatusBar->Panels->Items[0]->Text = Application->Hint;
  190. }