码迷,mamicode.com
首页 > 其他好文 > 详细

component to string

时间:2015-07-27 00:15:11      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

component to string

string to component

ObjectTextToBinary

ObjectBinaryToText

ReadComponent

技术分享
#include <memory>       //For STL auto_ptr class
 
class MyScrollBar : public TScrollBar
{
__published:    // IDE-managed Components
private:    // User declarations
public:        // User declarations
    __fastcall MyScrollBar(TComponent* Owner);
};
 
__fastcall MyScrollBar::MyScrollBar(TComponent* Owner)
    : TScrollBar(Owner)
{
}
 
void RegisterClassesWithStreamingSystem(void)
{
  // Make sure that, as part of the startup
  // code, the streaming classes are registered
  // with the streaming system.
 
  #pragma startup RegisterClassesWithStreamingSystem
 
  Classes::RegisterClass(__classid(MyScrollBar));
}
 
MyScrollBar *ScrollBar1;
 
String __fastcall ComponentToString(TComponent *c)
{
  String as;
  std::auto_ptr<TMemoryStream> pms(new TMemoryStream);
  std::auto_ptr<TStringStream> pss(new TStringStream(as));
 
  try
  {
    pms->WriteComponent(c);
    pms->Seek(0, soFromBeginning);
    ObjectBinaryToText(pms.get(), pss.get());
    pss->Seek(0, soFromBeginning);
    as = pss->DataString;
  }
  catch(...)
  {
    ShowMessage("Streaming error.");
  }
 
  return as;
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Memo1->Text = ComponentToString(ScrollBar1);
}
 
TComponent *__fastcall StringToComponent(String as)
 
{
  std::auto_ptr<TMemoryStream> pms(new TMemoryStream);
  std::auto_ptr<TStringStream> pss(new TStringStream(as));
  TComponent *pc;
 
  try
  {
    ObjectTextToBinary(pss.get(), pms.get());
    pms->Seek(0, soFromBeginning);
  }
  catch(...)
  {
    ShowMessage("Streaming error.");
  }
 
  pc = pms->ReadComponent(NULL);
  return pc;
}
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  TComponent *temp = StringToComponent(Memo1->Text);
  ScrollBar1->Free();
 
  ScrollBar1 = dynamic_cast<MyScrollBar *>(temp);
  ScrollBar1->Parent = Form1;
  ScrollBar1->Visible = TRUE;
}
 
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
  ScrollBar1 = new MyScrollBar(Form1);  // Form1 will clean up the scroll bar.
  ScrollBar1->Parent = Form1;
  ScrollBar1->Visible = TRUE;
  ScrollBar1->Top = 48;
  ScrollBar1->Left = 250;
  ScrollBar1->Name = "Ricksbar";
}
View Code

 

component to string

标签:

原文地址:http://www.cnblogs.com/cb168/p/4679004.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!