怎样保存用户界面信息?(200分)

  • 主题发起人 主题发起人 Donn
  • 开始时间 开始时间
D

Donn

Unregistered / Unconfirmed
GUEST, unregistred user!
结束程序时,怎样保存用户界面信息,以便下次运行时重现这次界面。包括各控件的位置、
大小、字体等等。

有什么函数?否则,用注册表还是文件保存数据,或其他可靠的控件,何者最佳?




 
这个已经实现了大部分你要的:
http://www.obsof.com/public/dynaform.zip
 
我用ini文件
 
我是在CurrUser主键下,"/Software/程序名称/窗体名称"来保存的。
写一个统一的函数,动态传入要保存的窗体即可 !
 
ini or 注册表
 
著名的控件库RxLib中的RxFormStorage控件,
使用非常方便,傻瓜式操作!指定要保存的控件的要保存的属性就可以了,
可以指定保存在INI文件中或注册表中,给个文件名或键名就行。
 
如果用数据库的话,那可不是聪明人干的,用INI是最好的方法。

具体控制INI的方法如下:

  从INI文件中获取字符串

  var

  strResult:pchar;

  begin

  GetPrivateProfileString(

  'windows', // []中标题的名字

  'NullPort', // =号前的名字

  'NIL', // 如果没有找到字符串时,返回的默认值

  strResult, //存放取得字符

  100, //取得字符的允许最大长度

  'c:/forwin95/win.ini' // 调用的文件名

  );

  edit1.text:=strResult; //显示取得字符串

  从.INI文件中获取整数

  edit1.text:=inttostr(GetPrivateProfileInt(

  'intl', // []中标题的名字

  'iCountry', // =号前的名字

  0,// 如果没有找到整数时,返回的默认值

  'c:/forwin95/win.ini' // 调用的文件名

  ));

  向.INI文件写入字符串

  WritePrivateProfileString(

  'windows', // []中标题的名字

  'load', // 要写入“=”号前的字符串

  'accca', //要写入的数据

  'c:/forwin95/win.ini' // 调用的文件名

  );

  向.INI文件写入整数

  WritePrivateProfileSection(

  'windows', // []中标题的名字

  'read=100', // 要写入的数据

  'c:/forwin95/win.ini' // 调用的文件名

  );

  上面的方法是调用API函数,下面介绍另一种不用API从.INI文件中获取字符的方法

  var MyIni: TIniFile;

  begin

  MyIni := TIniFile.Create('WIN.INI');//调用的文件名

  edit1.text:=MyIni.ReadString('Desktop', 'Wallpaper', '');//取得字符

  end;

  向.INI文件中写入字符的方法

  var MyIni: TIniFile;

  begin

  MyIni := TIniFile.Create('WIN.INI');//调用的文件名

  DelphiIni.WriteString('Desktop', 'Wallpaper', 'c:/a.bmp');

  end;

 


 
i use two procedures : writecomponentresfile and readcomponentresfile,
and save the info into res files. it's ok.

thx for doxpix's help.
 
用devexpress控件组中
dxForumLibrary
 
用INI文件最简单!用注册表也行,方法类似。


interface

uses
IniFilest;
.
.
.
.
const
INIFILE = 'BBTS.INI';
var
bbtsini: TIniFile;
SysDir: array[0..255] of char;

implementation

bbtsini:= TIniFile.Create(INIFILE); {建立自己的保存文件}

bbtsini.WriteString('LOGIN', 'IsSave', 'y');{你可以写自己的东西}
bbtsini.WriteString('LOGIN', 'UserName', ''); {例子是记录了用户的名字和服务器的名字}
bbtsini.WriteString('LOGIN', 'ServerName', '');
bbtsini.UpdateFile;


edit_username.Text:= bbtsini.ReadString('login', 'UserName', '');{ 读需要的数据项}
edit_server.Text:= bbtsini.ReadString('login', 'ServerName', '');


 
那个两个过程倒是简单,但是还是会额外生出一个文件,有违
绿色软件之精神。不过倒是多了一种选择,学了一点。
不知道直接写到EXE里有没有希望?
 
别忘了把ini,注册表的单元加上
 
多人接受答案了。
 
后退
顶部