zoukankan      html  css  js  c++  java
  • component to string 自定义窗体

    component to string

    string to component

    StringToComponent

    ComponentToString

    ObjectTextToBinary

    ObjectBinaryToText

    ReadComponent

    RegisterClass

    WriteComponentResFile

    ReadComponentResFile

    #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

     RegisterClass(TPersistentClass(aFrom.ClassType));

    UnRegisterClass(TPersistentClass(aFrom.ClassType));

     dwscript,paxcompiler 支持pas格式的语法

    RegisterComponentEditor

    http://blog.csdn.net/henreash/article/details/7371897

    属性编辑器

    http://www.rgzz.sdedu.net/ebook/hdbook/computer/bc/DELPHIzhuanti/rmjq/028.htm

  • 相关阅读:
    LeetCode---Remove Duplicates from Sorted List II
    hackerrank---Sets
    hackerrank---Find a string
    push的时候隐藏底部的tabbar
    选择性编译代码:如 #ifdef __IPHONE_7_0
    客户端的文件存储文件夹代表意义
    设置非ARC
    KVC设置系统自带属性,不管是不是私有的属性
    一些关于队列,同步,异步的概念
    要求两个异步任务都完成后, 才能回到主线程:dispatch_group_t
  • 原文地址:https://www.cnblogs.com/cb168/p/4679004.html
Copyright © 2011-2022 走看看