(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不是更专业吗?我不解...