home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / cb / setup / cbuilder / data.z / PIEREG.CPP < prev    next >
C/C++ Source or Header  |  1997-02-28  |  4KB  |  136 lines

  1. //---------------------------------------------------------------------------
  2. // Borland C++Builder
  3. // Copyright (c) 1987, 1997 Borland International Inc.  All Rights Reserved.
  4. //---------------------------------------------------------------------------
  5. #pragma hdrstop   //since we include .cpp files we can't use pre compiled headers
  6. #include <SysUtils.hpp>
  7. #include <memory>          //For use of auto_ptr
  8.  
  9. #if !defined (REGISTER_ALL_CONTROLS)
  10.   #include  "piereg.h"
  11.   #include "pies.cpp"
  12. #else
  13.   #include "source\piereg.h"
  14.   #include "source\pies.cpp"
  15. #endif
  16. #pragma resource "*.dfm"
  17. //#pragma resource "*.res"    //IDE links .res automatically for components
  18.  
  19. //---------------------------------------------------------------------------
  20. namespace Piereg{
  21. void __fastcall Register()
  22. {
  23.   TComponentClass classes[1] = {__classid(TPie)};
  24.   RegisterComponents("Samples", classes, 0);
  25.   RegisterComponentEditor(__classid(TPie), __classid(TPieEditor));
  26.   RegisterPropertyEditor(__typeinfo(TAngles),
  27.                          NULL,
  28.                          "",
  29.                          __classid(TAnglesProperty));
  30. }
  31. } //namespace
  32.  
  33. //---------------------------------------------------------------------------
  34. // TAngleEditorDlg
  35.  
  36. __fastcall TAngleEditorDlg::TAngleEditorDlg(TComponent* AOwner) : TForm(AOwner) { }
  37. __fastcall TAngleEditorDlg::TAngleEditorDlg(TComponent* AOwner, int Dummy) : TForm(AOwner, Dummy) { }
  38. __fastcall TAngleEditorDlg::TAngleEditorDlg(HWND ParentWindow) : TForm(ParentWindow) { }
  39. __fastcall TAngleEditorDlg::~TAngleEditorDlg(void) { }
  40.  
  41. void __fastcall TAngleEditorDlg::STrackBarChange(TObject* /*Sender*/)
  42. {
  43.   SetStartAngle(STrackBar->Position);
  44. }
  45.  
  46. void __fastcall TAngleEditorDlg::ETrackBarChange(TObject* /*Sender*/)
  47. {
  48.   SetEndAngle(ETrackBar->Position);
  49. }
  50.  
  51. void __fastcall TAngleEditorDlg::SetStartAngle(Integer Value)
  52. {
  53.   STrackBar->Position = Value;
  54.   SAngleLabel->Caption = "StartAngle = " + String(Value);
  55.   FAngles->StartAngle = Value;
  56. }
  57.  
  58. void __fastcall TAngleEditorDlg::SetEndAngle(Integer Value)
  59. {
  60.   ETrackBar->Position = Value;
  61.   EAngleLabel->Caption = "EndAngle = " + String(Value);
  62.   FAngles->EndAngle = Value;
  63. }
  64.  
  65. void __fastcall TAngleEditorDlg::SetAngles(TAngles* Value)
  66. {
  67.   FAngles = Value;
  68.   FOrigStart = Value->StartAngle;
  69.   FOrigEnd = Value->EndAngle;
  70.   SetStartAngle(Value->StartAngle);
  71.   SetEndAngle(Value->EndAngle);
  72. }
  73.  
  74. void __fastcall TAngleEditorDlg::CancelClick(TObject* /*Sender*/)
  75. {
  76.   SetStartAngle(FOrigStart);
  77.   SetEndAngle(FOrigEnd);
  78. }
  79.  
  80. //---------------------------------------------------------------------------
  81. // TAnglesProperty
  82.  
  83. __fastcall TAnglesProperty::TAnglesProperty(void) : TClassProperty() { }
  84. __fastcall TAnglesProperty::~TAnglesProperty(void) { }
  85.  
  86. void __fastcall TAnglesProperty::Edit()
  87. {
  88.   //We use the auto_ptr so that the object is destroyed automatically
  89.   //on exit of the function.
  90.   //  std::auto_ptr<TAngles> Angles(new TAngles());
  91.   std::auto_ptr<TAngleEditorDlg> AngleEditor(new TAngleEditorDlg(Application));
  92.  
  93.   AngleEditor->EditorAngles = (TAngles*)GetOrdValue();
  94.   AngleEditor->ShowModal();
  95. }
  96.  
  97. TPropertyAttributes __fastcall TAnglesProperty::GetAttributes()
  98. {
  99.   return (TPropertyAttributes() << paDialog << paSubProperties);
  100. }
  101.  
  102. //---------------------------------------------------------------------------
  103. //TPieEditor
  104. __fastcall TPieEditor::TPieEditor(TComponent* AComponent, TFormDesigner* ADesigner)
  105.                       : TDefaultEditor(AComponent, ADesigner) { }
  106. __fastcall TPieEditor::~TPieEditor(void) { }
  107.  
  108. void __fastcall TPieEditor::EditProperty(TPropertyEditor* PropertyEditor,
  109.                                          bool& Continue,
  110.                                          bool& /*FreeEditor*/)
  111. {
  112.   String PropName(PropertyEditor->GetName());
  113.   if (strcmpi(PropName.c_str(),"ANGLES") == 0){
  114.     PropertyEditor->Edit();
  115.     Continue = false;
  116.   }
  117. }
  118.  
  119. int __fastcall TPieEditor::GetVerbCount()
  120. {
  121.   return 1;
  122. }
  123.  
  124. String __fastcall TPieEditor::GetVerb(Integer Index)
  125. {
  126.   if (Index == 0)
  127.     return  "Edit Angles";
  128.   else return "";
  129. }
  130.  
  131. void __fastcall TPieEditor::ExecuteVerb(Integer Index)
  132. {
  133.   if (Index == 0) Edit();
  134. }
  135. //---------------------------------------------------------------------------
  136.