• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

BCB实现显示历史文件的功能

发布: 2007-7-04 20:47 | 作者: admin | 来源:  网友评论 | 查看: 36次 | 进入软件测试论坛讨论

领测软件测试网 孙航东

  现在,许多Windows应用程序都具有在文件选单中显示历史文件的功能,这使用户很容易再次访问这些文件。笔者利用Borland C++ Builder(BCB)提供的TRegedit类,成功地在注册表中实现了上述功能。现介绍如下:

  1.在C++ Builder中新建一个工程文件project1,并在Form1上添加如下控件:

  控件名称 属性 值

  TOpenDialog Name OpenDialog1

  TMainMenu Name MainMneu1

  同时在 MainMenu1控件中增加一个选单项,其属性为:

  Name Caption 

  Items1 打开文件

  2.在unit1.h中输入如下内容: 

  private:

  TRegistry Registry;

  String Items[3];

  //建立显示历史文件的数组

  int ItemsCount;

  void _fastcall TForm1::Display();//显示历史文件记录

  3.在Items的Click事件中输入如下内容:

   void __fastcall TForm1::Items1Click(TObject Sender)

   { 

   String TempFile,Files;

   OpenDialog1-〉Filter="All Files(*.*)|*.*";

   if(OpenDialog1-〉Execute())

   {

   Files=OpenDialog1-〉FileName;//取得文件名//

   for(int i=0;i〈3;i++)

   TempFile=Items[0];

   if(ItemsCount〈3)

   ItemsCount++;

   for(int i=I temsCount-1;i〉0;i--)

   Items[i]=Items[i-1];

  //对打开的历史文件进行排序

  Items[0]=Files;

  //使最近打开的文件在最前面

   }

   Display(); 

   }

  4.在unit.cpp中建立Display函数:

   void _fastcall TForm1::Display()

   {

  TMenuItem NewItem;

  while(MainMenu1-〉Items-〉Items[MainMenu1-〉Items-〉Count-1]-〉Count〉2)

   {

   MainMenu1-〉Items-〉Items[MainMenu1-〉Items-〉Count-1]-〉

   Delete(MainMenu1-〉Items-〉Items[MainMenu1-〉Items-〉Count-1]-〉Count-1);

  }//除去原有的历史文件列表

   for(int i=0;i〈ItemsCount;i++)

   {

   NewItem=new TMenuItem(MainMenu1);

   NewItem-〉Caption=Items[i];

   MainMenu1-〉Items-〉Items[MainMenu1-〉Items-〉Count-1]-〉Insert

   ( MainMenu1-〉Items-〉Items[MainMenu1-〉Items-〉Count-1]-〉Count,NewItem);

   }//建立新的历史文件列表

  }

   5.在Form1的Show事件中输入如下内容:

   void __fastcall TForm1::FormShow(TObject Sender)

   { Registry =new TRegistry;

  ItemsCount=0;

  Registry-〉RootKey=HKEY_LOCAL_MACHINE;

  Registry-〉OpenKey("SOFTWARE\\

  MYCOMPANY\\Remember",TRUE);

  //在注册表中打开主键,如果该主键不存在则新建该主键

  Items[0]=Registry-〉ReadString("Item1");

  //读items[i]字符串的值

  ItemsCount++;

  Items[1]=Registry-〉ReadString("Item2");

  ItemsCount++;

  Items[2]=Registry-〉ReadString("Item3");

  ItemsCount++; }

  6.在Form1的Show事件中输入如下内容:

  void __fastcall TForm1::FormClose(TObject Sender, TCloseAction &&Action)

   { if(ItemsCount〈3)

   for(int i=ItemsCount+1;i〈=3;i++)

   Items[i]="";

   Registry-〉WriteString("Item1",Items[0]);

   Registry-〉WriteString("Item2",Items[1]);

   Registry-〉WriteString("Item3",Items[2]);

   //向注册表写入items[i]字符串的值 }

  以上程序在中文Windows 98、C++ Builder 5.0环境中通过。 

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网