读书软件做自己的

原创 2001年05月12日 20:54:00
 

读书软件做自己的


   不知各位对E_book的读书效果是否感兴趣,它是用vb做的,其实在c++builder中也可以很轻松的实现类似效果。现在让我们step by step 吧!
  1)新建工程。单元存盘为"read.cpp"
  加入一个popupmenu; 窗体属性设置如下
  Name: MainForm;
  AutoScroll:false;
  BorderStyle:bsNone;
  Font:宋体,Fontsize:9;
  Position:poScreenCenter;
  PopupMenu:PopupMenu1;
   2)添加一panel,设置为:
  BevelOuter:bvNone;
  BorderStyle:bsSingle;
  Ctl3D:false;
  Name:Panel_1;
  Caption(置空);
  color:0x00CE9600; (淡蓝色)可自定
  3)a:把panel_1拉大(任意),在里面添加两个Panel,命名为Le_Pan,Ri_Pan;
  Le_Pan:
  Color:clBlack
  Align:alLeft;
  Width:20;
  其余同Panel_1;
  Ri_Pan:
  Align:alRight;
  其余同Le_Pan;
  b:
  在Panel_1内添加1个Label,设置属性为
  Transparent:true;
  Visible:false;
  选取Label1,敲Ctrl+c一次,再敲Ctrl+V 69次,(选70个Label)
  c:
  在Panel_1内添加两个Image控件,命名Back_Image,Face_Image;
  Back_Image的stretch 属性为true;
  Back_Image可以载入你想要的背景图片;
  4)添加一个Memo控件,属性为
  Name:Buf_Memo;
  Width:310;
  Visible:false;
  Enabled:false;
  Ctl3D:false;
  5)添加OpenDialog,OpenPictureDialog各一个;
  PopMenu1中建立3个按纽。
  1) caption:打开 Name:OpenN
  2) caption:背景 Name:BackN
  3) caption:退出 Name:CloseN;
  OpenDialog1的filter属性为:文本文件|*.txt|所有文件|*.*
  原理:先将文本文件内容装入memo中,再通过遍历label控件的办法把它显示出来。
  以下是单元文件:
  //
  #include
  #pragma hdrstop
  #include "Read.h"
  //
  #pragma package(smart_init)
  #pragma resource "*.dfm"
  TMainForm *MainForm;
  const int Page_Nums = 34; // 每页的行数
  int Now_Line; // 当前行
  bool End; //文章是否结束
  //
  __fastcall TMainForm::TMainForm(TComponent* Owner)
   : TForm(Owner)
  {
   Inin_face();
  }
  //
  void __fastcall TMainForm::Face_ImageMouseDown(TObject *Sender,
  TMouseButton Button, TShiftState Shift, int X, int Y)
  {
  //拖动窗口,这个技巧比较有用
   if(Button == mbLeft)
  { int SC_DragMove = 61458;
  ReleaseCapture();
  MainForm->Perform(WM-SYSCOMMAND,SC-DragMove, 0);
  }
  }
  //
  void __fastcall TMainForm::OpenNClick(TObject *Sender)
  {
  if(OpenDialog1->Execute())
  { Buf_Memo->Lines->LoadFromFile(OpenDialog1->FileName);
  Inin();
  }
  }
  //
  void__fastcall TMainForm::BackNClick(TObject *Sender)
  {
  if(OpenPictureDialog1->Execute())
  Back_Image->Picture->LoadFromFile(OpenPictureDialog1->FileName);
  }
  //
  void __fastcallTMainForm::CloseNClick(TObject *Sender)
  {
  Application->Terminate();
  }
  //
  void TMain Form::Print Page(int line_cou)
  //执行print书本内容
  {
  const int L-TOP = Label1->Height;
  //该参数用来设置行距
  const int TitleLineCount = Buf-Memo->Lines->Count; //memo总行数
  int LabelLeft = 40;
  int LabelTop = 38;
  if(line_cou < 0)
   //line_cou是标记现在的行位置
  line_cou = 0;
  int lineInx=0;
  //当前行数指针
  int i=0;
  bool vis=1;
  int c=Panel_1->ControlCount;
   // 得到Panel_1上的控件数
  TLabel *pLa;
   //定义TLabel类的指针
  while(i   {
  //遍历panel_1上的所有控件,这个方法很有用,
  if(Panel-1->Controls[i]->ClassNameIs("TLabel"))
  //判断控件类名
  { pLa=dynamic_cast< TLabel* >(Panel_1->Controls[i]); //强行转换指针类型
  pLa->Visible= vis;
  if(!vis) {i ++; continue;}
  //设置多余label为不可视
  pLa->Top= LabelTop;
  pLa->Left= LabelLeft;
  pLa->Caption=Buf_Memo->Lines->Strings[lineInx+line_cou];
   //用 label 显示行内容
  LabelTop+=L_TOP;
  }
  else
  //若不是想要的(label)类,继续判断下一个控件
  {i++; continue;}
  i++;
  lineInx++;
  if(LabelLeft < 300)
  if(lineInx+1 == Page_Nums)
  { LabelTop = 38;
  LabelLeft = 410;
  }
  if(lineInx+1 == 2*Page_Nums) //如果已经显示一页
  vis = 0;
  if(lineInx + line_cou == TitleLineCount-1) //如果全文结束
  vis = 0;
  }
  if(lineInx + line_cou < TitleLineCount-1)
  {
  Now_Line = line_cou + lineInx; //记录当前行数
  End = 0;
  }
  else
  End = 1;
  }
  //
  void TMainForm::Inin()
  {
  End = 0;
  PrintPage(0);
  }
  //
  void TMainForm::Inin_face()
  //初始化界面
  {
  Width = 740;
  //这里设置窗体大小
  Height = 495;
  Back_Image->SendToBack();
  Face_Image->BringToFront();
  Panel_1->Align = alClient;
  ack_Image->Align = alClient;
  Face_Image->Align = alClient;
  //这些初始化设置,虽然有违“所见即所得”的本意,但却使得在编辑时更方便
  }
  //
  void __fastcall TMainForm::Ri_PanClick(TObject *Sender)
  {
  //向前翻页
  if(!End)
  PrintPage(Now_Line);
  }
  //
  void __fastcall TMainForm::Le_PanClick(TObject *Sender)
  {
  //向后翻页
   if(End)
  PrintPage(Now_Line - 2*Page_Nums + 1);
  else
  PrintPage(Now_Line - 4*Page_Nums + 2);
  }
  //
  在最顶部加上
  头文件
  #include
  生成的文件就可以导入jpg图片文件作为背景颜色
  另外在头文件的public中,加上:
  public: // User declarations
  void PrintPage(int line_cou);
  // 主执行函数
  void Inin(void);
  // 初始化打开的文件
  void Inin_face(void);
  // 初始化界面
  对于初学者,需要指出的是,除了上面三个函数之外,其它的都在各自的Events(事件)页双击生成,然后写入函数主体。
  注意:由于TMemo类只能支持小于大约30k的文件,所以打开较大的文件也会报错,但用TRichedit类来代替TMemo即可。因为TRichedit类涉及到很多不确定因素(比如如果装vc,把某些dll换成旧版则可能会严重出错),这里还是用TMemo 做个例子。该代码在k6-2-350,win98,c++builder4中编译通过

《Google软件测试之道》读书笔记

Google软件测试之道
  • yyw794
  • yyw794
  • 2017年06月25日 08:39
  • 773

软件测试读书列表

转载地址:http://www.cnblogs.com/liangshi/archive/2011/03/07/1973525.html 列表格式为:图书分类、中文书名、英文书名、作者。排名...
  • hwhua1986
  • hwhua1986
  • 2015年04月14日 17:12
  • 443

软件测试读书列表

测试入门  软件测试(第2版)  Software Testing (2e), Ron Patton  一本测试入门的好书,较全面地介绍了各种测试领域和方法,为测试新手提供了正确的观念和宽泛的基...
  • qq_14935437
  • qq_14935437
  • 2017年04月19日 10:44
  • 636

软件测试读书列表

转载出处地址:http://www.cnblogs.com/liangshi/archive/2011/03/07/1973525.html 测试入门 软件测试(第2版) Soft...
  • zhouyou1986
  • zhouyou1986
  • 2013年12月28日 22:15
  • 1615

Tomcat 学习笔记

概述Tomcat 是一开源的 Java Web 服务器,是当今最流行的基于 Java 的 Web 应用服务器。Tomcat 具有以下特点: Apache软件基金会出口 开源软件 源代码是Java写的 ...
  • lihao21
  • lihao21
  • 2017年01月01日 23:51
  • 838

软件测试读书列表

转载出处地址:http://www.cnblogs.com/liangshi/archive/2011/03/07/1973525.html 测试入门  软件测试(第2版)  S...
  • jimodeyu88
  • jimodeyu88
  • 2015年05月09日 22:19
  • 269

读书、学习是为了让我们成为更出色的人同时做自己喜欢的事

前天第一次上算法设计与分析这门课,老师一开始没有给我们讲课程的大纲。而是从读书、好奇心、教育等话题谈起。 孩子,我要求你读书用功,不是因为我要你跟别人比成绩,而是因为,我希望你将来会拥有选择的权利,选...
  • zpf_nevergiveup
  • zpf_nevergiveup
  • 2017年02月23日 11:24
  • 336

《人生只有一次,去做自己喜欢的事》读书笔记

《人生只有一次,去做自己喜欢的事》读书笔记 做你自己喜欢的事情,与你喜欢的人在一起,上帝会高兴地帮你打开成功之门。—(美)摩西奶奶 (平凡但乐观的女子,她的人生可以用简单两个字来形容,却又那么的...
  • bigpudding24
  • bigpudding24
  • 2016年07月27日 18:30
  • 1053

为什么你需要专门的看板软件

It is now 10 years this month that I started work with Microsoft in the Team Foundation Server produ...
  • lchren
  • lchren
  • 2014年11月02日 16:00
  • 1803

软件测试读书列表 (2013.8)

转自:http://www.cnblogs.com/liangshi/archive/2011/03/07/1973525.html
  • shyu1989
  • shyu1989
  • 2014年10月08日 12:06
  • 816
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:读书软件做自己的
举报原因:
原因补充:

(最多只允许输入30个字)