网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
Delphi使程序具有记忆功能
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式

The Bat!等等。这些软件在启动时能自动保持上一次关闭前的状
态,如窗口的初始位置、用户的设置(如窗口风格,横竖排列)等
等。能否使我们自己的程序也具有类似的功能呢?在本篇中我就要
介绍一种方法,使应用程序能够记住上一次关闭时的窗口状态。

    实现这种方法的关键是数据的存贮,目前有这几种办法:可以写
*.ini或*.inf文件;可以用Delphi提供的文件类来自定义一个文件;
可以用数据库接口(如ODBC)引入一种数据库文件,如Foxpro的
*.dbf和Access的*.mdb;还可以直接写Windows的注册表。

    我们推荐使用写注册表的办法,因为这种办法很方便,不需太
多额外的开销,程序比较简单,也不易被别人更改。

    要让应用程序记住上一次关闭时的窗口状态,其总体思路是:在
关闭程序时记录下本次程序结束时的信息,写入注册表中,在下次
程序启动时读注册表中相应信息,并赋给程序。在这个程序中需要
记录的信息是窗口关闭时的Top、Left、Height、Width。(注意:要
想使Delphi可以操作注册表,必须包括registry单元。)

    以下是源程序和相关注释:

unit Unit1;

interface

uses

Windows, Messages,……,registry;

//包括registry单元

type

TForm1 = class(TForm)

public

ww:TRegistry;

//声明一个TRegistry对象,我们就通过ww来实现对注册表的操作

//启动窗口时要做的一些工作

procedure TForm1.FormCreate(Sender: TObject);

begin

ww:=TRegistry.Create;

//创建ww对象

ww.RootKey :=HKEY_CURRENT_USER;

//注意:通过修改RootKey可以把信息写到注册表的每一个角落

ww.OpenKey(''software'',FALSE);

//打开键software,可以看到Borland,Netscape还有Microsoft也在
这个software键中

ww.CreateKey( ''王伟'');

//在software键中创建一个名为“王伟”的键值,使自己的名字和
Borland,Netscape,

//Microsoft并排在一起,是不是很Cool啊:)

ww.OpenKey( ''王伟'',FALSE);

//打开键"王伟"

ww.CreateKey(''XX单位XX管理系统'');

//创建应用程序的名称

ww.OpenKey(''XX单位XX管理系统'',TRUE);

ww.CreateKey(''位置'');

//创建应用程序中某一个要存贮的项目的名称,便于管理

ww.OpenKey(''位置'',TRUE);

if (ww.ReadString(''first'')<>''1'')then

//这是值得注意的一个地方,通过“first”来判断程序是否

begin

//是第一次写注册表,如果是第一次写则用程序给的默认值来

ww.WriteString(''first'',''1'');

//设置窗口的位置和大小。如果不是第一次启动应用程序则说明

Form1.WindowState:=(wsNormal);

//注册表中已经写了位置信息,就读这些信息并赋给Form。

Form1.Top:=10;

form1.Left:=10;

form1.Height:=100;

form1.Width:=100;

end

else

begin

if(ww.ReadString(''max'')=''y'') then

//判断上次关闭程序时,窗口是否是最大化的。如果是的话,则

Form1.WindowState:=(wsMaximized)

//继续使窗口拥有这一特征。

else

begin

Form1.top:=StrToInt(ww.ReadString(''top'')); //如果不是最大
化,则取位置和大小数据赋给From

Form1.left:=StrToInt(ww.ReadString(''left''));

Form1.height:=StrToInt(ww.ReadString(''height''));

Form1.width:=StrToInt(ww.ReadString(''width''));

end;

end;

end;

//关闭窗口时要做的一些工作

procedure TForm1.FormDestroy(Sender: TObject);

begin

ww.OpenKey(''位置'',FALSE);

//打开“位置”键

if Form1.WindowState=(wsMaximized) then

//如果当前程序是最大化,则把这一信息写入注册表,

ww.WriteString(''max'',''y'')

//便于下一次时使用。

else

begin

ww.WriteString(''max'',''n'');

//如果不是最大化,则把窗口的位置和大小数据写入注册表
  • 上一篇资讯: Delphi COM编程的一个BUG
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号