打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
奇迹重现 Delphi 2005赏析-4


  (5)编写代码

  我们可以通过在主窗口下面的分页中,进行代码和设计窗口的切换。如下图所示:


  我们可以点击code页,来到代码窗口,可以看到Delphi 为我们添加了许多的代码。如下图所示:


  剩下的当然就是我们自己来编写自己的代码了。

  在代码窗口对Twinform类的定义后面中添加下面的代码:

//自定义变量
type
 suijishu = array [ 1 .. 10 ] of integer ; //用来保存 加数和被加数
 deshu = array [ 1 .. 10 ] of integer ; //用来保存 每道题的得数,所填的数,与此比较,判断对误

var

 sjs : suijishu ; //定义suijishu类型的一个实例
 ds : deshu ; //定义deshu类型的一个实例
 temp : integer ; //定义一个临时变量
 tishu : integer ; //定义一个变量,存储已经做得题数
 shijian : integer ; //定义一个变量,存储做题所用的时间

  在implementation段后面,添加下面的代码:

//自定义过程
procedure fenpei( ) ; //给sjs数组分配随即数值
var
 i : integer ;
begin
 Randomize ;

 for i : = 1 to 10 do
 begin
  sjs [ i ] : = Random ( 10 ) ;
 end ;
end ;

procedure jisuan ( ) ; //得到结果,并保存到ds数组中
var
 i : integer ;
begin
 temp : = 0 ;
 for i : = 1 to 10 do
 begin
  temp : = temp + sjs [ i ] ;
  ds [ 1 ] : = temp ;
 end ;
end ;

  这里我们定义了两个过程fenpei 和 jisuan 。fenpei用来给sjs数组分配随即数值,这样就可以出题了,jisuan将得到算数的结果,并保存到ds数组中

  做题时,首先是要点击“出题”按钮。所以要在TWinForm . Button1 _ Click事件中添加代码,调用fenpei和jisuan过程来初始化题目并得到答案。之后显示在label3中,并且开始计时,在label4中显示正在做第几题。下面是这里所要添加的代码:

procedure TWinForm . Button1 _ Click ( sender : System . Object ; e : System . EventArgs ) ;
begin
 //添加自己的代码
 fenpei ;
 jisuan ;
 label3 . text : = Convert . ToString ( sjs [ 1 ] ) + ' + ' + Convert . ToString ( sjs [ 2 ] ) + ' + ' + Convert . ToString ( sjs [ 3 ] ) + ' + ' + Convert . ToString ( sjs [ 4 ] ) + ' + ' + Convert . ToString ( sjs [ 5 ] ) + ' + ' + Convert . ToString ( sjs [ 6 ] ) + ' + ' + Convert . ToString ( sjs [ 7 ] ) + ' + ' + Convert . ToString ( sjs [ 8 ] ) + ' + ' + Convert . ToString ( sjs [ 9 ] ) + ' + ' + Convert . ToString ( sjs [ 10 ] ) + ' = ' ;

 timer1 . Enabled : = true ;
 button1 . Enabled : = false ;
 button2 . Enabled : = true ;
 shijian : = 0 ;
 tishu : = 1 ;

 richtextbox1 . Visible : = false ;
 label4 . text : = '第' + Convert . ToString ( tishu ) + '题' ;

 textbox1 . Clear ;

end ;

  之后我们需要在文本框( textbox1 )中填写得数,点击“下一题” ,就可以从新开始一道新的题目了。 但为了统计所做题目相关信息,如:正误等,所以我们还要在福文本框中添加相应的信息。

  按照前面的构思我们要在TWinForm . button2 _ Click事件中加入下面的代码:

procedure TWinForm . button3 _ Click ( sender : System . Object ; e : System . EventArgs ) ;
begin
//添加自己的代码

if textbox1 . Text = Convert . ToString ( ds [ 1 ] ) then
begin
 richtextbox1 . Text : = richtextbox1 . text + label3 . Text + textbox1 . Text + ' 正确' + chr ( 13 ) + chr ( 10 ) ;
 fenpei ;
 jisuan ;
 label3 . Text : = Convert . ToString ( sjs [ 1 ] ) + ' + ' + Convert . ToString ( sjs [ 2 ] ) + ' + ' + Convert . ToString ( sjs [ 3 ] ) + '+ ' + Convert . ToString ( sjs [ 4 ] ) + ' + ' + Convert . ToString ( sjs [ 5 ] ) + ' + ' + Convert . ToString ( sjs [ 6 ] ) + ' + ' + Convert . ToString ( sjs [ 7 ] ) + ' + ' + Convert . ToString ( sjs [ 8 ] ) + ' + ' + Convert . ToString ( sjs [ 9 ] ) + ' + ' + Convert . ToString ( sjs [ 10 ] ) + ' = ' ;
 TextBox1 . Text : = ' ' ;
 tishu : = tishu + 1 ;
 label4 . text : = '第' + Convert . ToString ( tishu ) + '题' ;

 end
else
begin
 richtextbox1 . Text : = richtextbox1 . text + label3 . Text + textbox1 . Text + ' 错; 正确得数为 :' + Convert . ToString ( ds [ 1 ] ) + chr ( 13 ) + chr ( 10 ) ;
 fenpei ;
 jisuan ;
 label3 . Text : = Convert . ToString ( sjs [ 1 ] ) + ' + ' + Convert . ToString ( sjs [ 2 ] ) + ' + ' + Convert . ToString ( sjs [ 3 ] ) + ' + ' + Convert . ToString ( sjs [ 4 ] ) + ' + ' + Convert . ToString ( sjs [ 5 ] ) + ' + ' + Convert . ToString ( sjs [ 6 ] ) + ' + ' + Convert . ToString ( sjs [ 7 ] ) + ' + ' + Convert . ToString ( sjs [ 8 ] ) + ' + ' + Convert . ToString ( sjs [ 9 ] ) + ' + ' + Convert . ToString ( sjs [ 10 ] ) + ' = ' ;
 textbox1 . Text : = ' ' ;
 tishu : = tishu + 1 ;
 label4 . text : = ' 第' + Convert . ToString ( tishu ) + '题' ;
end ;
end ;

  对于“完成“按钮,我们所要做的就是在此按钮被点击时,让福文本框的可见性变为true,这样就可以显示刚才所保存的所有做题信息了。

  代码如下所示:

procedure TWinForm . Button3 _ Click ( sender : System . Object ; e : System . EventArgs ) ;

begin
 //添加自己的代码
 button1 . Enabled : = true ;
 button3 . Enabled : = false ;
 button2 . Enabled : = false ;
 richtextbox1 . Text : = richtextbox1 . text + '作题数 :' + Convert . ToString ( tishu ) + ' 用时 :' + Convert . ToString ( shijian ) + '秒' ;
 richtextbox1 . Visible : = true ;
 timer1 . Enabled : = false ;

end ;

  我们还要在钟表触发事件中添加代码,用来显示做题时的时间信息.代码如下:

procedure TWinForm . Timer1 _ Tick ( sender : System . Object ; e : System . EventArgs ) ;
begin
 //添加自己的代码
 label2 . text : = '用时 :' + Convert . ToString ( shijian ) + '秒' ;
 shijian : = shijian + 1 ;
end ;

  最后,就是在窗体初始化时,对相关变量信息的设置。代码如下:

procedure TWinForm . TWinForm _ Load ( sender : System . Object ; e : System . EventArgs ) ;
begin
 //添加自己的代码
 shijian : = 0 ;
 tishu : = 1 ;
end ;

  运行界面如下:


(点击放大)

  这样我们的软件就完工了。当然我希望大家通过这个简单的实例,大家在编写和使用的过程中,能体会到Delphi为我们提供的完美的服务。

   五、结束语

   Delphi 2005总的来说还是挺直得一用的工具,无论从大的功能方面,还是小的细节方面,都时很不错的。但是,当你用了微软的工具之后,也许你对这些功能就不觉得很惊奇了。最重要的是,对于硬件的需求来说,Delphi 2005确实比较吃内存,如下图所示:



  这是我在主频2.8G的inter p4 处理器,256m ddr333的机器上的测试,虽然,不象之前大家所传的必须要使用512m内存那么夸张,但是可以看到在还是比较吃内存的。最重要的一点,Delphi 2005 将Delphi带入了.NET时代是一大进步,也是广大Delphi用户的一件幸事,但在其中添加C#等工程就显得画蛇添足。毕竟Delphi用户,再学习C#是一件比较艰难的事情,即使学习之后,难道真的有必要使用Delphi吗?微软的VC#,和Borland自己的C# builder不是更专业吗?我不解...


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
C# 中对 Session 的“(string)”、“.ToString()”与“Conv...
小菜和大鸟的编程故事之七:工厂模式不好用了?
c#中的排序算法(动态数组ArrayList) - 欢迎来到jay的空间 - 博客园
Delphi: StringList Delimiter is always a space character even if Delimiter is set
如何实现gridview的更新,删除,而不直接是相对于数据库的操作
实现编码的自动增长
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服