加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

组件的持久化,delphi

发布时间:2020-12-15 09:57:07 所属栏目:大数据 来源:网络整理
导读:注意,需要注册类; 2.读入多个属性的时候,只会构造第一个控件; unit Unit1; interface uses ? Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,? Dialogs,StdCtrls; type ? TForm1 = class(TForm) ? ? mmo1: TMemo; ? ? btn1: TButt

注意,需要注册类;

2.读入多个属性的时候,只会构造第一个控件;


unit Unit1;

interface uses ? Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,? Dialogs,StdCtrls; type ? TForm1 = class(TForm) ? ? mmo1: TMemo; ? ? btn1: TButton; ? ? edt1: TEdit; ? ? btn2: TButton; ? ? procedure btn1Click(Sender: TObject); ? ? procedure btn2Click(Sender: TObject); ? private ? ? procedure ShowComponentProperties(AComponent: TComponent); ? ? { Private declarations } ? public ? ? { Public declarations } ? end; var ? Form1: TForm1; implementation {$R *.dfm} function CompTostr(AComponent: TComponent): string; var ? memstream: TMemoryStream; ? strStream: TStringStream; ? str: string; begin ? memstream := TMemoryStream.Create(); ? try ? ? strstream := TStringStream.Create(str); ? ? try ? ? ? memstream.WriteComponent(AComponent); ? ? ? memstream.Seek(0,soFromBeginning); ? ? ? classes.ObjectBinaryToText(memstream,strStream); ? ? ? strStream.Seek(0,soFromBeginning); ? ? ? Result := strStream.DataString; ? ? finally ? ? ? FreeAndNil(strStream); ? ? end; ? finally ? ? FreeAndNil(memstream); ? end; end; function StrToComp(Astr: string; Acomponent: TComponent): TComponent; var ? strStream: TStringStream; ? memStream: TMemoryStream; begin ? strStream := TStringStream.Create(Astr); ? try ? ? memStream := TMemoryStream.Create; ? ? try ? ? ? classes.ObjectTextToBinary(strStream,memStream); ? ? ? memStream.Seek(0,soFromBeginning); ? ? ? Result := memStream.ReadComponent(Acomponent); ? ? finally ? ? ? FreeAndNil(memStream); ? ? end; ? finally ? ? FreeAndNil(strStream); ? end; end; procedure TForm1.btn1Click(Sender: TObject); var ? str: string; begin ? mmo1.Clear; ? ShowComponentProperties(edt1); end; procedure TForm1.ShowComponentProperties(AComponent: TComponent); var ? str: string; begin ? str := compToStr(AComponent); ? mmo1.Lines.Add(str); end; procedure TForm1.btn2Click(Sender: TObject); var ? editclone: Tedit; begin ? editclone := TEdit(StrToComp(mmo1.Lines.Text,nil)); ? editclone.Parent := self; ? editclone.Name := editclone.Name + 'Clone'; ? editclone.Top := editclone.Top + 40; ? editclone.Visible := true; ? ShowComponentProperties(editclone); end; initialization Classes.registerClass(TEdit); end.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读