社区
语言基础/算法/系统设计
帖子详情
保存工作区的内容,兄弟们进来给点建议
myling
2003-08-23 09:26:45
在做一个程序,
需要将工作区的内容保存下来
就象工程文件
本来想的是直接写ini,
将窗体中的控件的属性都记录下来,下次打开的时候动态生成
可现在工作区的内容还包括图片,图片也保存下来?
这样行是行,但是感觉很笨,而且将来的图片会很多
有没有什么方法,能直接保存成一个文件,将来载入这个文件就行了?
难道是将所有的东东写到file中?然后再读?
欢迎大家讨论
...全文
45
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)
给想立志入行网络或已经初入行的朋友的
建议
今天有空,感觉和SPOTO有缘,随便写
点
东西给大家。很久没有混在技术论坛中,记忆里最近一次大概是在5、6年以前。 大学读的是土木,曾经也在建筑工地和设计院实习,我相信我可以把那些事情做好,但完全不是我想要的东西。96年有幸在实习的时候入了网络这个行,到现在是12年。 有朋友说看了以后感觉后面很多
建议
和网络行业没多大关系了。一开始写这篇东西的时候,只写了几
点
...
一个入行很长的老鸟给新手的一些
建议
——转
今天有空,随便写
点
东西给大家。很久没有混在技术论坛中,记忆里最近一次大概是在5、6年以前。 大学读的是土木,曾经也在建筑工地和设计院实习,我相信我可以把那些事情做好,但完全不是我想要的东西。96年有幸在实习的时候入了网络这个行,到现在是12年。 有朋友说看了以后感觉后面很多
建议
和网络行业没多大关系了。一开始写这篇东西的时候,只写了几
点
,为了这个题目。修改多天以后,我想...
中兴微电子集成电路IC设计岗面试体验感很棒,难度层层递进
图森未来测开# 今天面的三面,面得挺好的,但是要先实习。全程20分钟,问题记不太清,里面是大概,其实还有些其他问题的-----------------1.自我介绍+看代码有什么问题。今年10月份,滴滴国际化算法的实习刚刚转正,同时也联系了在京211博导,
兄弟
们,该选哪个,给
点
建议
,真的好纠结,有
点
读博情节 #晒一晒我的offer# #双非本。鼠鼠我啊,是从大厂捞人和大佬扭打的九月战争中退下来的炮灰鼠,以为到了十月就会有起色可到如今又经历什么呢,是被BYD骗机票,是被小公司开侮辱价,是被大厂外包面试放。
NET牛人应该知道些什么? (本答复不是标准答案,敬请
兄弟
们补充更正,不胜感激)...
任何一个使用.NET的人 1) 描述线程与进程的
区
别? 线程(Thread)与进程(Process)二者都定义了某种边界,不同的是进程定义的是应用程序与应用程序之间的边界,不同的进程之间不能共享代码和数据空间,而线程定义的是代码执行堆栈和执行上下文的边界。一个进程可以包括若干个线程,同时创建多个线程来完成某项任务,便是多线程。而同一进程中的不同线程共享代码和数据空间。用一个比喻来说,如果一个...
【转】.NET牛人应该知道些什么(本答复不是标准答案,敬请
兄弟
们补充更正,不胜感激)...
任何一个使用.NET的人 描述线程与进程的
区
别? 什么是Windows服务,它的生命周期与标准的EXE程序有什么不同 Windows上的单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗?这对于系统设计有什么影响? EXE和DLL之间的
区
别是什么? 什么是强类型,什么是弱类型?哪种更好些?为什么? PID是什么?在做系统...
语言基础/算法/系统设计
16,748
社区成员
33,247
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章