比如我设置好了一个TFont的类font_one,那我如何把这个font_one全部保存到数据库中,然后用的时候可以存数据库中提取,直接辅给对象就行了,还有我在运行状态下,在一个窗口上添加了好几个label,edit,image等vcl控件,我能否也把这个form也保存到数据库中(不但保存vcl控件,还要保存每一个空间的位置,属性等),在存数据库中读出来直接赋值给一个form?

解决方案 »

  1.   

    有好处啊!比如我的这个程序要求客户可以自己配置窗口上的控件摆放位置,控件的数量,颜色,字体号,text值等(在这里是有特殊要求),那我怎么保存这些设置,以便客户下次还能调出来?
      

  2.   

    可以存到数据库啊,也可以写ini来完成
      

  3.   

    呵呵,用注册表或INI文件就行了:
    例如,在MyIni.ini文件中有如下小节(Section):
    [edit1]
    left=10
    top=20[edit2]
    left=10
    top=50
    用控件的名称做为节名,在需要时,直接读取该节中的属性值,如Left,Top等,即可。
      

  4.   

    INI文件的使用请参阅:
    http://hubdog.csdn.net/Recommend/rcIniFile.htm注册表的使用请参阅:
    http://www.powerba.com/develop/delphi/article/20000913005.htm
      

  5.   

    用ini或者注册表进行保存的我也考虑过,不过我的那个很多,比如这行字要显示这个字体,那行字就另外一个字体了,能否用一个TFont的类进行流化然后保存到数据库,用的时候在强制转化为TFont的实例,不知可否?
      

  6.   

    给你一个保存form的例子,其他的都按照这个方法绝对可行,不过像TFont不知道行不行!写入
    var 
      Str1 : TFileStream; 
    begin 
       begin 
        Str1 := TFileStream.Create (SomeFileName, 
          fmOpenWrite or fmCreate); 
    try 
          Str1.WriteComponentRes (         OutputForm.ClassName, OutputForm);//save the entire component 
        finally 
          Str1.Free; 
        end; 
      end; 
    end; 
      
    读取  
    var 
      Str1: TFileStream; 
      TempForm1: TOutputForm; 
    begin 
        Str1 := TFileStream.Create (SomeFileName, 
          fmOpenRead); //open a stream 
        try 
          TempForm1 := TOutputForm.Create (Application); //temp object       Str1.ReadComponentRes (TempForm1); OutputForm.Free; //destroy the existing component 
          OutputForm := TempForm1;         
    OutputForm.Show;       
        finally 
          Str1.Free; 
        end; 
      end; 
    end;
      

  7.   

    上面用的是文件流,如果想保存到数据库把FileStream替换为MemoryStream就行了