请教?(50分)

  • 主题发起人 主题发起人 sugzh
  • 开始时间 开始时间
S

sugzh

Unregistered / Unconfirmed
GUEST, unregistred user!
恢复上一次程序的运行状态(主要是指主窗体及字窗体的位置,大小,状态等等,是不是可以在上一次程序退出时,将窗体的各种信息写入一个特定的INI文件中。待再一次运行程序时,怎样利用INI文件中的信息?
 
对,就是用你说的方法,将要保存的状态信息在退出时存入INI文件或注册表中。
 
将主窗体及字窗体的位置,大小,状态存入INI文件或注册表中,起动时加入如下语句
var TempIniFile:TIniFile;

procedure TMainForm.FormCreate(Sender);
begin
......;
......;
with MainForm,TempIniFile do
begin
Caption:= ReadString('Form','Caption','');
Height:=ReadInteger('Form','Height',300);
....;
end;


end;
 
这个问题连50分都不值,看一看已答问题关于IniFile问题讨论的比较详细。
MicroStar的这段程序有一点问题
 
他忘了
TempIniFile:=Tinifile.Create('c:/temp.ini');

TempIniFile.Free;
 
const
IniFileName = 'MyApp.Ini'
//Use Windows directory

procedure TForm1.FormShow(Sender: TObject);
var
IniFile : TIniFile;
begin
IniFile := TIniFile.Create(IniFileName);
Top := IniFile.ReadInteger('Form1', 'Top', Top);
Left := IniFile.ReadInteger('Form1', 'Left', Left);
Width := IniFile.ReadInteger('Form1', 'Width', Width);
Height := IniFile.ReadInteger('Form1', 'Height', Height);
IniFile.Free;
if Left < 0 then Left := 0;
if Top < 0 then Top := 0;
if Width < 310 then Width := 310;
if Height <= 250 then Height := 250;
if (Left + Width) > Screen.Width then Left := Screen.Width - Width;
if (Top + Height) > Screen.Height then Top := Screen.Height -Height;
end;
procedure TForm1.FormClose(Sender: TObject
var Action: TCloseAction);
var
IniFile : TIniFile;
begin
IniFile := TIniFile.Create(IniFileName);
IniFile.WriteInteger('Form1', 'Top', Top);
IniFile.WriteInteger('Form1', 'Left', Left);
IniFile.WriteInteger('Form1', 'Width', Width);
IniFile.WriteInteger('Form1', 'Height', Height);
IniFile.Free;
end;
 
为什么不换换思路?你在 IDE 中设置的控件属性编译执行
后为什么都能出现?
Delphi 真是太酷了,她可以把对象的属性写到流中,还
可以读出来...
善用这种思路吧,很有前途的哟 *Q*
( 详见 TReader and TWriter 的帮助!!!)
 
可以用流的方式写入注册表,注册表里面支持流的存储!
 
忘了夹一句,本论坛里面有关于注册表的使用!
 
//write form
function SaveForm(aForm:TForm
aFilename : string):boolean;
begin
result:=false;
if aFilename<>'' then
begin
WriteComponentResFile(Filename, aForm);
result:=true;
end
else
ShowMessage('error');
end;

//read form
function OpenForm(aFilename:String):TForm;
var
aForm : TForm;
begin
Result:=nil;
try
aForm := TForm.Create(Application);
ReadComponentResFile(Filename, aForm);
Result:=aForm;
except
ShowMessage('error');
end;
end;
 
Use Rxlib, It has a component can do all thie!
 
为什么非要用流,直接写入注册表或INI对于一般程序都足够,用流更复杂!
 
To CJ:

请教一下,Rxlib能否在D4下安装,最新版本多少? 先谢过了!
 
看一下TREGINIFILE和TINIFILE的帮助吧.也许你会有收获
另外,偶认为,关于窗体本身可以不做记录,如用分辨率可以确定窗体大小等,不用存的,只是一些控件的状态需要记录时一般可以用INIFILE
不知SUGZH的目的如何?


 
http://202.120.100.49/tqz/component.htm
RXLIB在D4下可以用,有专门FOR D4的包,最新好象是2.5或者2.6吧,我忘记了
到以上站点去D/L吧
 
都向注册表里写,有删不掉,你们也太欺负Win9x了!
 
要简单的话,自己建个文本,定个格式不就行了.
 
提问的人已经好久没来了,分了
 
后退
顶部