社区
语言基础/算法/系统设计
帖子详情
保存工作区的内容,兄弟们进来给点建议
myling
2003-08-23 09:26:45
在做一个程序,
需要将工作区的内容保存下来
就象工程文件
本来想的是直接写ini,
将窗体中的控件的属性都记录下来,下次打开的时候动态生成
可现在工作区的内容还包括图片,图片也保存下来?
这样行是行,但是感觉很笨,而且将来的图片会很多
有没有什么方法,能直接保存成一个文件,将来载入这个文件就行了?
难道是将所有的东东写到file中?然后再读?
欢迎大家讨论
...全文
50
50
打赏
收藏
保存工作区的内容,兄弟们进来给点建议
在做一个程序, 需要将工作区的内容保存下来 就象工程文件 本来想的是直接写ini, 将窗体中的控件的属性都记录下来,下次打开的时候动态生成 可现在工作区的内容还包括图片,图片也保存下来? 这样行是行,但是感觉很笨,而且将来的图片会很多 有没有什么方法,能直接保存成一个文件,将来载入这个文件就行了? 难道是将所有的东东写到file中?然后再读? 欢迎大家讨论
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
50 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gardenyang
2003-08-26
打赏
举报
回复
海天子说得很队,必须注意registerclass,否则有些类是不能用的,例如qrlabel就在你创建之后不能用
gardenyang
2003-08-26
打赏
举报
回复
FrameSniper(§绕瀑游龙§) 在使用这两个函数的时候不能传递owner,我也不知道为什么,但是我用了这么长时间发现就是传递后你的控件会消失,解决的办法就是吧所有的控件都owner设置成为scrollbox(你需要保存的),至于她的parent就随便了。
阿德,这个方法我们一直在用,尤其是在动态报表上非常好用,不明白你为什么总是不成功,需不需要我给你发一段代码过来?不过是动态报表的,而且很小,很久以前我测试这个方法的时候写的,你可以看看!
huojiehai
2003-08-26
打赏
举报
回复
出错可能是在删除组件处出错,建议大家改进一下,我以前做的时候,每次读入前都是动态创建Form
lw549
2003-08-25
打赏
举报
回复
可以执行下面的过程两次,第三次出现
---------------------------
Project1
---------------------------
Access violation at address 00403676 in module 'Project1.exe'. Read of address FFFFFFD8.
---------------------------
确定
---------------------------
procedure TForm1.Button2Click(Sender: TObject);
begin
ReadComponent('d:\form1.ini',form1);
end;
lw549
2003-08-25
打赏
举报
回复
huojiehai(海天子)的方法非常棒!
不过我连续按几次后,就出现内存错误了。
//////////////////////////////////////////////
var
Form1: TForm1;
procedure SaveComponent(Con: TWinControl; Path: string);
procedure ReadComponent(Path: string; Con: TWinControl);
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
//
SaveComponent(form1,'d:\form1.ini');
end;
procedure SaveComponent(Con: TWinControl; Path: string);
var
BinStream:TMemoryStream;
StrStream: TStringStream;
s: string;
begin
BinStream := TMemoryStream.Create;
try
BinStream.WriteComponent(Con);
BinStream.Seek(0, soFromBeginning);
BinStream.SaveToFile(Path);
finally
BinStream.Free
end;
end;
procedure ReadComponent(Path: string; Con: TWinControl);
var
BinStream: TMemoryStream;
lp: integer;
Com: TComponent;
begin
//注意删除你不要的就可以了,自己做过滤
for lp := Con.ComponentCount - 1 downto 0 do
begin
Com := Con.Components[lp];
Con.RemoveComponent(Com);
Com.Free;
end;
BinStream := TMemoryStream.Create;
try
BinStream.LoadFromFile(Path);
BinStream.ReadComponent(Con);
finally
BinStream.Free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ReadComponent('d:\form1.ini',form1);
end;
end.
cnhgj
2003-08-25
打赏
举报
回复
热烈的讨论,俺是来学习的!继续!
huojiehai
2003-08-24
打赏
举报
回复
还要注意所有保存的类在FormCreate时都要RegisterClasses
huojiehai
2003-08-24
打赏
举报
回复
以上方法,只要是publish属性都可以保存,Image1中的图片也可以,试试看
huojiehai
2003-08-24
打赏
举报
回复
很简单啦,用TStream类的WriteComponent和ReadComponent就可以了,不知合不合你的要求
Example:
//保存
procedure SaveComponent(Con: TWinControl; Path: string);
var
BinStream:TMemoryStream;
StrStream: TStringStream;
s: string;
begin
BinStream := TMemoryStream.Create;
try
BinStream.WriteComponent(Con);
BinStream.Seek(0, soFromBeginning);
BinStream.SaveToFile(Path);
finally
BinStream.Free
end;
end;
//写回
procedure ReadComponent(Path: string; Con: TWinControl);
var
BinStream: TMemoryStream;
lp: integer;
Com: TComponent;
begin
//注意删除你不要的就可以了,自己做过滤
for lp := Con.ComponentCount - 1 downto 0 do
begin
Com := Con.Components[lp];
Con.RemoveComponent(Com);
Com.Free;
end;
BinStream := TMemoryStream.Create;
try
BinStream.LoadFromFile(Path);
BinStream.ReadComponent(Con);
finally
BinStream.Free;
end;
end;
dashi
2003-08-24
打赏
举报
回复
up
FrameSniper
2003-08-24
打赏
举报
回复
8个小时过去了,我还是没有看到什么地方说过WriteComponentResFile这个函数到底是对对象的什么信息进行流化处理的!
FrameSniper
2003-08-24
打赏
举报
回复
好,晚上回家试试!
myling
2003-08-24
打赏
举报
回复
我也爬起来顶
SXL_E3_TEC
2003-08-24
打赏
举报
回复
半夜爬起来顶一下:)
myling
2003-08-23
打赏
举报
回复
OK!
等我试试
解决了马上给分!
沾上了甩不掉
2003-08-23
打赏
举报
回复
很方便的,可以把内容写成流文件,需要的时候在读出来。文件里边包含了
空间的位置,颜色,大小等一切属性。动态建立的时候很麻烦的
ReadComponent
WriteComponent
你可以找一下上边两个函数的资料
gardenyang
2003-08-23
打赏
举报
回复
只需要button1:=Tbutton.create(scrollbox);
必须全部创建的都是这样的,保证隶属于这个scrollbox就肯定没有问题的,至于他的parent无所谓,还有一个问题 全部的对象必须直接隶属于scrollbox,不要变成objects[i].objects[i],这种形式 她不支持传递的关系
祝你好运!
gardenyang
2003-08-23
打赏
举报
回复
ReadComponentResFile
writeComponentResFile
感觉是不是可以用上面两个函数解决阿
myling
2003-08-23
打赏
举报
回复
大家给点意见呀
其实要是做的话,
我那种方法应该能做出来,
最多将所有的文件用流的形式合成一个
但是我想看看有没有更好的思路
有没有简单点的方法?
myling
2003-08-23
打赏
举报
回复
_weiKun_(Virus):
序列流进行,类,属性。。。得保存。
那么图片呢?
加载更多回复(30)
给年轻软件测试人员的10条
建议
!
上市公司测试总监,利用一个小时的时间,结合自己八年的
工作
经验,给年轻测试人员分享10条
建议
,听了这10条
建议
,你对软件测试会有一个全新的看法!
前端基础知识
点
-每天一个基本知识
点
(100+个前端小知识,你是否都知道?)
文章目录前言第一回合一、知识
点
:cookie(21/09/06)二、知识
点
:节流和防抖(21/09/07)三、知识
点
:var和let以及const(21/09/08)四:知识
点
:深拷贝和浅拷贝(21/09/09)五、知识
点
:作用域和作用域联(21/09/...
给想立志入行网络或已经初入行的朋友的
建议
今天有空,感觉和SPOTO有缘,随便写
点
东西给大家。很久没有混在技术论坛中,记忆里最近一次大概是在5、6年以前。 大学读的是土木,曾经也在建筑工地和设计院实习,我相信我可以把那些事情做好,但完全不是我想要的...
一个入行很长的老鸟给新手的一些
建议
——转
今天有空,随便写
点
东西给大家。很久没有混在技术论坛中,记忆里最近一次大概是在5、6年以前。 大学读的是土木,曾经也在建筑工地和设计院实习,我相信我可以把那些事情做好,但完全不是我想要的东西。96年有幸在...
中兴微电子集成电路IC设计岗面试体验感很棒,难度层层递进
今年10月份,滴滴国际化算法的实习刚刚转正,同时也联系了在京211博导,
兄弟
们,该选哪个,给
点
建议
,真的好纠结,有
点
读博情节 #晒一晒我的offer# #双非本。鼠鼠我啊,是从大厂捞人和大佬扭打的九月战争中退下来的...
语言基础/算法/系统设计
16,749
社区成员
33,245
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章