component to string

string to component

StringToComponent

ComponentToString

ObjectTextToBinary

ObjectBinaryToText

ReadComponent

RegisterClass

WriteComponentResFile

ReadComponentResFile

  1. #include <memory> //For STL auto_ptr class
  2.  
  3. class MyScrollBar : public TScrollBar
  4. {
  5. __published: // IDE-managed Components
  6. private: // User declarations
  7. public: // User declarations
  8. __fastcall MyScrollBar(TComponent* Owner);
  9. };
  10.  
  11. __fastcall MyScrollBar::MyScrollBar(TComponent* Owner)
  12. : TScrollBar(Owner)
  13. {
  14. }
  15.  
  16. void RegisterClassesWithStreamingSystem(void)
  17. {
  18. // Make sure that, as part of the startup
  19. // code, the streaming classes are registered
  20. // with the streaming system.
  21.  
  22. #pragma startup RegisterClassesWithStreamingSystem
  23.  
  24. Classes::RegisterClass(__classid(MyScrollBar));
  25. }
  26.  
  27. MyScrollBar *ScrollBar1;
  28.  
  29. String __fastcall ComponentToString(TComponent *c)
  30. {
  31. String as;
  32. std::auto_ptr<TMemoryStream> pms(new TMemoryStream);
  33. std::auto_ptr<TStringStream> pss(new TStringStream(as));
  34.  
  35. try
  36. {
  37. pms->WriteComponent(c);
  38. pms->Seek(, soFromBeginning);
  39. ObjectBinaryToText(pms.get(), pss.get());
  40. pss->Seek(, soFromBeginning);
  41. as = pss->DataString;
  42. }
  43. catch(...)
  44. {
  45. ShowMessage("Streaming error.");
  46. }
  47.  
  48. return as;
  49. }
  50.  
  51. void __fastcall TForm1::Button1Click(TObject *Sender)
  52. {
  53. Memo1->Text = ComponentToString(ScrollBar1);
  54. }
  55.  
  56. TComponent *__fastcall StringToComponent(String as)
  57.  
  58. {
  59. std::auto_ptr<TMemoryStream> pms(new TMemoryStream);
  60. std::auto_ptr<TStringStream> pss(new TStringStream(as));
  61. TComponent *pc;
  62.  
  63. try
  64. {
  65. ObjectTextToBinary(pss.get(), pms.get());
  66. pms->Seek(, soFromBeginning);
  67. }
  68. catch(...)
  69. {
  70. ShowMessage("Streaming error.");
  71. }
  72.  
  73. pc = pms->ReadComponent(NULL);
  74. return pc;
  75. }
  76.  
  77. void __fastcall TForm1::Button2Click(TObject *Sender)
  78. {
  79. TComponent *temp = StringToComponent(Memo1->Text);
  80. ScrollBar1->Free();
  81.  
  82. ScrollBar1 = dynamic_cast<MyScrollBar *>(temp);
  83. ScrollBar1->Parent = Form1;
  84. ScrollBar1->Visible = TRUE;
  85. }
  86.  
  87. __fastcall TForm1::TForm1(TComponent* Owner)
  88. : TForm(Owner)
  89. {
  90. ScrollBar1 = new MyScrollBar(Form1); // Form1 will clean up the scroll bar.
  91. ScrollBar1->Parent = Form1;
  92. ScrollBar1->Visible = TRUE;
  93. ScrollBar1->Top = ;
  94. ScrollBar1->Left = ;
  95. ScrollBar1->Name = "Ricksbar";
  96. }

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

component to string 自定义窗体的更多相关文章

  1. WPF自定义控件与样式(13)-自定义窗体Window & 自适应内容大小消息框MessageBox

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: 自定义 ...

  2. 通过用 .NET 生成自定义窗体设计器来定制应用程序

    通过用 .NET 生成自定义窗体设计器来定制应用程序 https://www.microsoft.com/china/MSDN/library/netFramework/netframework/Cu ...

  3. 【转】WPF自定义控件与样式(13)-自定义窗体Window & 自适应内容大小消息框MessageBox

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等. 本文主要内容: 自定义Window窗体样式: 基于自定义窗体实现自定义MessageB ...

  4. Winform自定义窗体样式,实现标题栏可灵活自定义

    最近在编写C/S结构应用程序时,感觉窗体的标题栏样式太死板了,标题文字不能更改大小.颜色.字体等,按钮不能隐藏等问题,在网上也查找了许多相关的资料,没有找到合适的解决方案,发现许多人也在寻求这个问题, ...

  5. wpf 自定义窗体的实现

    首先创建自定义窗体的资源文件 <ControlTemplate x:Key="BaseWindowControlTemplate" TargetType="Wind ...

  6. Unity 编辑器扩展自定义窗体

    这次看见Unity还可以自定义弹出窗体,让我很好奇.于是就去网上找文章看了看. 如果想自定义窗体需要把类放入Editor文件夹下面. 代码如下: using UnityEngine; using Un ...

  7. INNO SETUP卸载程序中加入自定义窗体

    原文:INNO SETUP卸载程序中加入自定义窗体 [Setup] AppName=My Program AppVerName=My Program v.1.2 DefaultDirName={pf} ...

  8. c#winform自定义窗体,重绘标题栏,自定义控件学习

    c#winform自定义窗体,重绘标题栏 虽然现在都在说winform窗体太丑了,但是我也能尽量让桌面应用程序漂亮那么一点点话不多说,先上图 重绘标题栏先将原生窗体设置成无边框,FormBoderSt ...

  9. Java 自定义窗体(标题栏、窗体背景)

    感谢大佬:https://blog.csdn.net/ltx06/article/details/28996839 最近在书上看到这篇文章,觉得挺有意思.与大家分享一下,具体可以参见明日科技出版的&l ...

随机推荐

  1. C#笔记之 函数可变参数

    (转自:http://blog.csdn.net/jackluangle/article/details/6539278) 其实函数的参数的可变是因为不确定函数的参数大小的原因才使用的.看下面一个列子 ...

  2. python基础之函数名称空间与作用域

  3. 理解 Promise 过程

    /** new Promise(fn1).then(function(val){ console.log(val); }) 主要是把 then 的函数抽取出来 , 利用闭包存放在 callback中, ...

  4. .Net版SQLite无法访问网络位置的数据库文件-winOpen,os_win.c 36702异常

    最近一个C#小程序,希望将SQLite数据库放在网络共享的位置,让多个客户端同时访问.却发现SQLite连接不上该网络位置的数据库,而如果数据库在本地则一切正常. 例如将SQLite数据库 test. ...

  5. elasticsearch聚合案例--分组、求最大值再求最大值的均值

    一.需求 A.B.C代表3个用户,第二列代表各自的得分,求A.B.C的最好成绩以及A.B.C最好成绩的均值 A 10 A 11 A 13 B 11 B 11 B 12 C 10 C 10 C 11 C ...

  6. [面试时]我是如何讲清楚TCP/IP是如何实现可靠传输的 转

    [面试时]我是如何讲清楚TCP/IP是如何实现可靠传输的 - shawjan的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/shawjan/article/det ...

  7. I.MX6 Android 5.1 纯Linux、U-Boot编译

    /***************************************************************************** * I.MX6 Android 5.1 纯 ...

  8. 【学习】Git和Github菜鸟入门

    Git 是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理. 目录(自己创建吧) 生成ssh密钥:ssh-keygen -t rsa -C "邮箱" ...

  9. Consul做服务发现

    使用Consul做服务发现的若干姿势 https://www.cnblogs.com/bossma/p/9756809.html 从2016年起就开始接触Consul,使用的主要目的就是做服务发现,后 ...

  10. Python笔记-2

    一.列表的定义及操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作. 1.列表的格式及赋值 列表,使用中括号括起来,元素之间用逗号隔开,列表中的元素具有明确的位 ...