关于软件设置保存的一个问题(100分)

  • 主题发起人 主题发起人 treeys
  • 开始时间 开始时间
T

treeys

Unregistered / Unconfirmed
GUEST, unregistred user!
我用数据库(DELPHI)做了一个通信录管理软件,我也把它给打包了,程序安装后,我设置了软件中的一些功能如(字体的属性颜色等)但到了第二次打开程序的时候,所有的设置都还原了,请问程序得怎么样编写才不会再出现上面的那种状况?
 
字体的属性颜色等
存在哪啊???????????????
 
必须要有一个文件来保存你改的信息,这是ini文件的制作,到时候读取ini文件就不会还原了!
 
必须装配置保存在INI文件或者注册表里,
然后在下次程序装载的时候读入并做一些必要的初始化工作。
 
可以在主窗体这两个事件里做:
OnCreate — 做初始化的工作
OnClose — 做保存设置的工作
 
在程序关闭的时候保存一下要保存的信息到INI文件,或者在注册表中开个主键,保存在那个
主键下,程序打开的时候就去搜索以前保存的信息,将它读出来
 
哦~~~,有人回答了,比我早两秒
 
请问3h你所说的“必须装配置保存在INI文件或者注册表里,
然后在下次程序装载的时候读入并做一些必要的初始化工作。
and 可以在主窗体这两个事件里做:
OnCreate — 做初始化的工作
OnClose — 做保存设置的工作”要怎么样来实现?如果可以请写邮件给我winlsb@163.net!
 
我有例子不过那个INI文件是我自己写的,不是用Tinifile的,那时侯我还不会用Tinifile呢
我的程序中的目的和你一样,给你发过去了。
 
放一个CheckBox和Edit[8D]
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, [red]INIFiles[/red];
procedure TForm1.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
With TINIFile.Create('a.ini')do
begin
WriteBool('MySetting', 'CheckBox1_Checked', CheckBox1.Checked);
WriteString('MySetting', 'Edit1_Text', Edit1.Text);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
With TINIFile.Create('a.ini')do
begin
CheckBox1.Checked := ReadBool('MySetting', 'CheckBox1_Checked', False);
Edit1.Text := ReadString('MySetting', 'Edit1_Text', '');
end;
end;
 
谢谢各位了!
 
用注册表来保存可能较好些!
 
拿分你得结束问题才能拿分呀老凶:)
 
是的,用注册表很容易而且没有多余的文件
实现方法如下
uses 加入registry;
OnClose中加入
var
reg:tregistry;
begin
reg.tregistry.create;
reg.rootkey:=HKEY_CURRENT_USER;//设根键
reg.openkey('自己想一个','自己想一个',true);//打开主键
reg.writeString('text1text',edit1.text);//写入edit1的TEXT值
reg.writeinteger('textleft',edit1.left);//写入edit1的left值
reg.Closekey;
reg.free
end;

OnCreate中写入
var
reg:tregistry;
e:string;//edit1的text内容
l:integer;//edit1的left值
begin
reg.tregistry.create;
reg.rootkey:=HKEY_CURRENT_USER;//设根键
reg.openkey('自己想一个','自己想一个',true);//打开主键
e:=reg.readString('text1text',edit1.text);//写入edit1的TEXT值
l:=reg.readinteger('textleft',edit1.left);//写入edit1的left值
reg.Closekey;
reg.free
end;
这样就OK了因为现在没有delphi所以无法测试随手写的不要全抄看懂了再下手写!
大概的原理就是这样的了祝你成功
 
说来说去都是一些同样的正确答案,问题该结束了,也该留点空间自己发挥!
 
我认为设置字体这一类的用ini比较好。如果这些都要用注册表,那注册表要多大啊:)
 
同意楼上的说法,一般“选项”记录倒是用注册表比较方便,记录一些整形、布尔型,复杂一点的嘛
用INI好了,还不会用INI的话,看看DELPHI的帮助,我就是看那个学会的,下面摘抄帮助:
procedure TForm1.FormActivate(Sender: TObject);
var
DelphiIni: TIniFile;
begin
DelphiIni := TIniFile.Create('c:/windows/delphi32.ini');
with DelphiInido
begin
if ReadBool('AutoSave', 'EditorFiles', True) = True then
Canvas.TextOut(10, 10, 'Auto saving editor files.')
else
Canvas.TextOut(10, 10, 'Not auto saving editor files.');
if ReadBool('AutoSave', 'DesktopFile', True) = True then
Canvas.TextOut(10, 50, 'Auto saving desktop file.')
else
Canvas.TextOut(10, 50, 'Not auto saving desktop file.');
end;
DelphiIni.Free;
end;
 
怎么样做出来了吗?
关于你说的字体和颜色的问题,可以考虑枚举型与字符型的转换,但这种方法比较麻烦,
我先找找别的方法,也可以再问问别的高手。
 
后退
顶部