可以的..可以说很方便TFileStream.ReadComponentRes
TFileStream.WriteComponentRes还有两个过程 ObjectResourceToText(Input, Output:TStream);
ObjectTextToResource(...);是把frm文件 和 txt方式转化的delphi的底层处理都很巧妙,而且开源..呵呵
TFileStream.WriteComponentRes还有两个过程 ObjectResourceToText(Input, Output:TStream);
ObjectTextToResource(...);是把frm文件 和 txt方式转化的delphi的底层处理都很巧妙,而且开源..呵呵
解决方案 »
- 用SQL从服务器获取到时间,怎样更新到本机?
- 求助,有谁知道怎样在delphi中,将数据库转出为excell,打印?
- 请帮忙看看哪里出错了,如果找出马上结贴
- 如何禁止type library的自动功能?
- 想开发一个基于触摸屏的程序
- 请问屏幕保护的问题如何解决?
- nextGrid控件当DoubleBuffered :=true 的时候数据显示会花屏
- ado+sqlserver 的问题
- lcase(我是小菜)你在吗?想向您讨教一下安装文件的制作!欢迎用过installshield的同志指教!
- 编程会改变人的性格??
- 如何实现,在输入完Edit1的内容后,按回车,自动跳转到Edit2
- 不想在移动记录时Post,只想在按下某个键时Post,我该怎么办?
没办法写例程。
我只写关键地方把。TmpForm: TOutputForm;
...
if OpenDialog1.Execute then
begin
MyStream := TFileStream.Create(OpenDialog1.FileName, fmOpenRead)
TmpForm := TOutputForm.Create(Application);
MyStream.ReadComponentRes(TmpForm);
OutputForm.Free;//原来程序生成的OutputForm,free掉,换成新的
OutputForm := TmpForm;
OutputForm.Show;
OutputForm.OnMouseDown := OutputForm.FormMouseDown;
//这样为窗体 设置事件.
MyStream.Free;
end;
...//剩下的你应该 可以完成了吧
注意:
记住在 save 一个窗体的时候,与这个窗体关联的所有事件最好设成nil
因为下次你load进来,事件入口地址就不一样了,所以出于健壮考虑,save
前,把事件handle设成nil
例如:
...
OutputForm.OnMouseDown := nil;
MyStream.WriteComponentRes(OutputForm.ClassName, OutputForm);
OutputForm.OnMouseDown := OutputForm.FormMouseDown;//这里还要还原
...
procedure TForm2.Button6Click(Sender: TObject);
var Stream:TStream;
begin
//TFileStream.ReadComponentRes
// TFileStream.WriteComponentRes
//ObjectResourceToText(Input, Output:TStream);
// ObjectTextToResource(...);
// procedure WriteComponentRes(const ResName: string; Instance: TComponent
//);
Stream:=TFileStream.Create('d:\junqi_program\xxx.sgs',fmOpenReadWrite);
stream.WriteComponentRes('d:\junqi_program\xxx.sgs',form2);
stream.Free;
end;
成功的保存了属性文件。
但我还想请教:当我的一部分组件旋转一定角度以后应当如何读取这个属性文件呢?
谢谢!请留下联系方法:下个月我写完四国大战军旗程序我会送你一套的。
(包括部分原代码)
你只要保证组件个数不变,就行了。读取参看我上面的代码片段,[email protected]
呵呵,多谢