Delphi程序设计-作业1

Delphi程序设计-作业1
一、问答题
1、结构化程序设计的基本原则是什么?
结构化程序设计的基本原则是:取消goto语句,程序中只允许顺序、分支和循环三种控制结构,其中每一种结构只能有一个入口和一个出口。任何算法都必须(也可以)由这三种基本结构及三种结构的嵌套所构成。
结构化程序设计要求采用自顶向下、逐步求精的设计方法和单入口、单出口的控制结构。
2、简述面向对象技术中"类"与"对象"的概念。结合Delphi中使用的组件,举例说明什么是类、什么是对象。
类是对象的抽象及描述,它是具有统一属性和方法的一类对象的统一描述体,是用来定义某类对象共有属性和方法的模板。而对象是类的实例。
在Delphi环境中,组件板上的组件就是类的概念,例如按钮组件就是按钮类。而用户在窗体上创建的一个按钮就是对象的概念(按钮对象)。用户可以在窗体上用按钮类创建若干个按钮对象,它们都是按钮类的实例。
3、在Delphi中,什么是对象的属性、方法和事件?
一个对象是由属性、方法和事件所组成。属性表示对象中的数据,方法是对象能够执行的动作,事件是能够引起对象反应的条件。
4、简述利用Delphi开发一个项目的基本步骤。
建立一个新的项目
建立窗体
在窗体上加入对象
检查和设定对象属性
编写对象的事件处理程序
编译、试运行,并进行代码调试
保存项目文件,退出Delphi 环境
5、下列哪些条目可作为Delphi的变量名,哪些不行,并说明原因。
abc 123 abc123 123abc file a!
合法的变量名是:abc abc123
不合法的变量名是:
123 123abc(不能是数字或数字开头)
file(变量名不能采用语言中的保留字)
a!(变量名中不能包含某些特殊符号,如"!")
6、写出下列函数或表达式的值。
① int(2.718) = 2.0
② round(2.718) = 3
③ odd(3) = true
④ chr(65) = ‘A‘
⑤ StrToInt(‘2005‘) = 2005
⑥ IntToStr(121) = ‘121‘
⑦ (23 mod 5) + (23 div 5) = 7
⑧ ( (x>=5) OR (x<=-5) ) AND ( x in [1..9] ) 当x=10时,表达式的值为假(或false)
7、将下列数学式子写成Delphi程序中的表达式
① 答案:sqr(sin(x+y)) / sin(sqr(x) + sqr(y))
② 答案 Sqrt(p*(p-a)*(p-b))
8、要想在程序中定义一个常量p,代表圆周率3.14,请写出该常量的定义语句。
const p = 3.14 ;
9、在Delphi程序代码中,打开一个老文件、以及创建并打开一个新文件所使用的过程各是什么?
打开一个老文

件:reset(文件变量名)
创建并打开一个新文件:rewrite(文件变量名)
或简答 reset 和rewrite
10、在一个单元中,全局变量和局部变量的含义是什么?说明在单元文件中如何定义这两种变量(可举例说明)。
局部变量只能在定义它的程序块中使用,且其生命周期也只存在于从程序块开始执行到程序块执行结束。在一个事件处理程序中的变量说明部分,能够定义一个局部变量,供该事件处理程序内部使用。
而全局变量可以在单元中的各程序块中使用(共享),且生命周期存在于整个单元代码的活动期中。
在Implementation保留字后(但不要在程序块里)定义的变量就是全局变量。
11、如果想查看showmessage过程的帮助信息,请你说出两种获取帮助信息的方式。
① 通过主菜单Help的Delphi Help命令调出帮助主页面,在"索引"页输入框中输入要查找的showmessage单词,即可找出相关的帮助信息。
② 在代码中如果调用了showmessage过程,可将光标置于该单词中,然后按F1键,即可找出该过程的帮助信息。
12、一个项目由一组文件组成。其中一些主要文件的后缀有:
.dpr .pas .dfm .dcu .~dpr .~pas .~dfm 等
请说出这些文件的中文名称及用途。
答:.dpr 项目文件,存放项目的主程序
.pas 单元文件,存放源代码,如事件处理程序等。
.dfm 窗体文件,数据文件,记录窗体上的数据信息(如组件位置等)
.dcu 目标文件,保存.pas编译后得到的结果。
.~dpr .~pas .~dfm 是备份文件,便于用户恢复到较早的一个项目版本。
13、用于摆放其他组件的组件可以称之为"容器组件"。除窗体组件外,请你再说出一个容器组件的名字。
答:Panel 或 GroupBox
14、简述Edit组件下面几个属性的用途:
Font Hint Name ReadOnly Text
答:
Font :设置编辑框内的字体属性
Hint :设置提示信息(当光标指向编辑框时弹出的提示信息)
Name :对象标识名
ReadOnly:设置只读属性。如为True ,则用户界面上编辑框只能显示信息,不能写(不能输入)。
Text : 该属性的值就是编辑框中的内容
15、简述Edit组件下面几个方法的功能:
Clear SetFocus SelectAll
答:Clear是清除编辑框中的内容;SetFocus是使编辑框获得焦点(光标进入编辑框中,编辑框变得可操作) ;SelectAll是选中编辑框中的全部文本。
16、简述Edit组件下面几个事件的引发条件:
OnChange OnClick OnEnter OnExit OnKeyPress
答:
OnChange 当编辑框中内容改变时引发该事件
OnClick :

当鼠标单击编辑框时引发该事件
OnEnter :当光标进入编辑框时引发该事件
OnExit :当光标离开编辑框时引发该事件
OnKeyPress :当在编辑框中输入文本时,每次按键都会引发该事件
17、ListBox、ComboBox和RadioGroup 三个组件都有一个Items属性,请说出该属性对三个组件的用途各是什么?
答:对ListBox:该属性的值(多行)为列表框中的内容。
对ComboBox:该属性的值(多行)为下拉选单中的内容。
对RadioGroup:该属性决定了一组单选按钮的个数和每个按钮的名称。
18:RadioGroup和CheckBox对象都是通过用户鼠标点击来确定输入。请你说出代码中如何获取用户在这两个对象上的选择。
答:
对RadioGroup对象,是通过对ItemIndex属性确定用户在一组单选按钮中的选择:该属性为0表示选择了第1个按钮,为1表示选择了第2个按钮,依此类推。
对CheckBox对象,是通过Checked属性确定选择状态。该属性为True表示选中状态,为False表示未选中状态。
19、你如何理解OpenDialog(打开文件对话框)和SaveDialog(保存文件对话框)这两个组件的基本功能?它们负责文件的打开和保存吗?
答:
两个组件对象只是提供了一个Windows的标准对话框。用户在对话框中可以指定要打开或要保存的文件的名字,并将用户在对话框中选择的文件名存入Filename属性中。
这两个组件对象并不执行打开或保存文件的操作。
20、简要回答"什么是Delphi?"
答:Delphi是面向对象的、可视化的集成开发环境。它使用对象Pascal作为基本的编程语言,它可用来开发各种图形用户界面的程序,特别是数据库的应用程序。
二、编程题
1、开发用户界面如下图所示的应用程序:
功能说明如下:
用户可以通过单选按钮选择运算类型(加减乘除),然后在两个输入框中输入操作数和被操作数,按"运算"键,答案显示在输出框。
在界面上,两个复选框的功能要求是:
当"预清"复选框被选中时,每当用户将焦点置入一个输入框,该输入框自动清空,否则输入框不清。
当"显示余数"复选框被选中后,在进行除法运算时,结果将显示商和余数(见图例),否则只显示整除的结果。
系统还有以下要求:
当输入框没有输入时就按运算键,系统要给出提示信息。
输入框只能接受数字字符,不能输入非数字字符。
输入的两个操作数都只能在1~100之间。
答案:
procedure TForm1.Button1Click(Sender: TObject); //运算按钮
var
x,y,z :integer;
begin
x:= strtoint(edit1.Text);
y:= strtoint

(edit2.Text);
case radiogroup1.itemindex of
0: z:= x+y ;
1: z:= x-y ;
2: z:= x*y ;
3: z:= x div y;
end;
edit3.text:=inttostr(z);
if checkbox2.checked and (radiogroup1.itemindex=3) then
if (x mod y<>0)then
edit3.text:=Edit3.text+‘ 余 ‘+ inttostr(x mod y) ;
end;
procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
begin //输入字母检查,必需是0~9
if key in [‘0‘..‘9‘] then
exit
else
key:=chr(0);
end;
procedure TForm1.Edit1Enter(Sender: TObject); //预清
begin
if checkbox1.checked then
edit1.Clear ;
end ;
procedure TForm1.Edit2Enter(Sender: TObject); //预清
begin
if checkbox1.checked then
edit2.Clear ;
end;
procedure TForm1.Edit1Exit(Sender: TObject); //检查edit1输入(空或越界)
var
x : integer ;
begin
if (edit1.Text=‘‘) then
begin
showmessage(‘缺第1操作数‘) ;
edit1.SetFocus ;
exit ;
end ;
x:= strtoint(edit1.Text);
if (x<1)or(x>100) then
begin
showmessage(‘第1操作数越界‘);
edit1.SetFocus ;
end ;
end;
procedure TForm1.Edit2Exit(Sender: TObject); //检查edit2输入(空或越界)
var
x : integer ;
begin
if (edit2.Text=‘‘) then
begin
showmessage(‘缺第2操作数‘) ;
edit2.SetFocus ;
exit ;
end ;
x:= strtoint(edit2.Text);
if (x<1)or(x>100) then
begin
showmessage(‘第2操作数越限‘);
edit2.SetFocus ;
end ;
end;
procedure TForm1.Button2Click(Sender: TObject); //退出按钮
begin
form1.close;
end;
-------------------------------------------------------------------------------------------------
2、开发用户界面如下图所示的应用程序:
功能说明:
该界面是一个教师信息录入界面。
用户在编辑框(Edit1)中输入姓名,利用单选按钮(RadioGroup1)指定性别,利用组合框(ComboBox1)选择或直接输入所在系,利用列表框(ListBox1)指定职称。当输入完上述信息后,单击"确定"按钮,教师信息将显示在右边的Memo1编辑窗口中。
提示:在组合框和列表框中可以预置少量测试数据。
答案:
通过RadioGroup1的Items属性设置两个单选按钮("男"和"女"),并将属性Column设置为2(按钮摆两列)。
通过ComboBox1的Items属性设置下拉选单中的系名。
通过ListBox1的Items属性设置列表框中的职称列表。
"确定"按钮的单击事件处理程序如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Lines.Add(edit1.Text);
 

 if radiogroup1.ItemIndex = 0 then
memo1.Lines.Add(‘男‘)
else
memo1.Lines.Add(‘女‘) ;
memo1.Lines.Add(combobox1.Text);
memo1.Lines.Add( listbox1.Items[listbox1.itemindex] );
end;
3、开发用户界面如下图(左)所示的应用程序,右图是设计界面。
功能说明:
单击开始按钮,时钟启动,每秒钟改变一次;单击停止按钮,时钟停止。
提示:该界面要建立一个Timer对象。还要用到Time和TimeToStr两个函数。
答案:
建立Timer1对象,并将Interval属性设置为1000(间隔1秒),将Enabled属性的初始值设置为False。
建立一个Panel1对象作为显示时间的面板。
代码如下:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
panel1.Caption := Timetostr(time);
end;
procedure TForm1.Button1Click(Sender: TObject); //开始按钮
begin
timer1.Enabled := true ;
end;
procedure TForm1.Button2Click(Sender: TObject); //停止按钮
begin
timer1.Enabled := false ;
end;
4、开发一个简单的编辑器,设计界面如下图所示:
该编辑器功能要求如下:
编辑窗口使用Memo组件实现,并为其设置垂直滚动条。
单击"打开文件"按钮,弹出打开文件对话框,用户指定要打开的文件后(限于纯本文件),文件内容加载到编辑窗口中。
单击"保存文件"按钮,弹出保存文件对话框,用户指定要保存的文件名后,编辑区的内容保存到指定文件中,然后清空编辑区。
单击"复制"按钮,编辑区中被选择的内容拷贝到剪贴板。
单击"剪切"按钮,编辑区中被选择的内容剪切到剪贴板。
单击"粘贴"按钮,剪贴板中的内容拷贝到编辑区当前光标处。
答案:
建立的组件有:memo1、opendialog1、savedialog1、button1~5
编码如下:
procedure TForm1.Button1Click(Sender: TObject); //打开文件
begin
if opendialog1.Execute then
memo1.Lines.LoadFromFile(opendialog1.FileName) ;
end;
procedure TForm1.Button2Click(Sender: TObject); //保存文件
begin
if savedialog1.Execute then
begin
memo1.Lines.SaveToFile(savedialog1.FileName) ;
memo1.Clear ;
end ;
end;
procedure TForm1.Button3Click(Sender: TObject); //复制
begin
memo1.CopyToClipboard ;
end;
procedure TForm1.Button4Click(Sender: TObject); //剪切
begin
memo1.CutToClipboard ;
end;
procedure TForm1.Button5Click(Sender: TObject); //粘贴
begin
memo1.PasteFromClipboard ;
end;
Delphi程序设计-作业2
班级 姓名 分数
一、问答题
1、在一个项目中,什

么是主窗体?如何指定一个主窗体?
答:主窗体是项目的主界面。当一个Delphi应用程序启动后,首先建立并出现在屏幕上的就是主窗体,而其他窗体则要根据用户的操作要求而出现。
默认情况下,项目中第一个建立的窗体就是主窗体。但在设计界面可以通过菜单项Project/Options进入窗体设置界面,指定项目中的某个窗体作为项目的主窗体。
2、通过窗体的BorderStyle属性可以将窗体设置为对话框样式。简述对话框式窗体的主要特征是什么?
答:当窗体设置为对话框时,窗体的标题栏上可以有关闭按钮,但没有最大、最小按钮,而且窗体大小在运行时不能改变(鼠标拖动窗体边框不起作用)。
3、如果在主窗体上有一个按钮,其功能是打开一个子窗体,请你简述在设计该项功能时需要做哪些编码工作(可举例说明)。
答:
① 在主窗体的单元代码中,要在uses子句中指定子窗体单元的名字。
例如主窗体Form1,对应的单元名为Unit1;子窗体Form2,对应的单元名是Unit2。
那么在Unit1的uses子句中要包含单元名Unit2。
② 在按钮的单击事件处理程序中,调用子窗体的Form2.Show或Form2.ShowModal方法打开Form2子窗体。
4、简述如何关闭模式子窗体并返回到调用它的主窗体中(要至少给出两种方法)。
答:
① 在代码中将子窗体的ModalResult属性设置为一非零值。
② 设置一个关闭子窗体的按钮,将按钮的ModalResult属性设置为一非零值。
5、建立一个MainMenu对象的作用是什么?它是否出现在运行界面上?PopupMenu对象与MainMenu对象有什么不同?
答:
MainMenu对象的作用是用于主菜单设计。双击该对象可以打开菜单设计窗口。
MainMenu对象本身并不出现在运行界面上。
PopupMenu对象是用于设计快捷菜单。
6、简述在一个窗体上设计多页面的操作步骤。
答:
首先建立一个PageControl对象,并排放好位置,它是设计页面的母板。然后单击PageControl对象,在弹出的快捷菜单中执行命令"New Page",即可建立一个页面。
7、菜单项有几种类型?简述复选框型菜单项的设计方法(包括必要的代码)。
答:
菜单项有3种类型:普通按钮型、复选框型和单选按钮型。
复选框型菜单项的设计方法如下:
假定菜单项的名字为N1,在菜单项单击事件处理程序中编写如下代码:
procedure TForm1.N1Click(Sender: TObject);
begin
N1.Checked := not N1.Checked ;
if N1.checked then
//执行菜单项选中时需要执行的动作
else
//执行菜单项未选中时需要执行的动作
 

 end ;
8、工具栏上的按钮有几种类型?简述单选按钮型按钮的设计方法(包括必要的代码)。
答:
工具栏上的按钮有3种类型:普通按钮型、复选框型和单选按钮型。单选按钮型工具栏按钮的设计方法如下:
建立工具条对象ToolBar1
在工具条上建立若干SpeedButton按钮。
将需要实现互斥功能的一组按钮的GroupIndex属性设定为非零的同一个值(同组)。
为每个按钮编写单击事件处理程序。例如为SpeedButton1编写代码如下:
procedure TForm1. SpeedButton1 Click(Sender: TObject);
begin // 对齐
选中SpeedButton1时所要执行的动作
end;
9、如何从一个项目中删除一个窗体及相应的单元文件?
答:利用菜单命令:Project / Remove From Project…
10、设置窗体的Font(字体)属性有什么作用?
答:可以为摆放在窗体上的对象(如标签、编辑框等)提供默认的字体设置。
二、编程题
1、设计一个屏幕编辑程序,如下图所示。其中前三个图分别给出3个主菜单的内容,最后一个图给出运行界面示例。
功能要求如下:
主菜单结构如上图所示。其中3个颜色菜单项为单选按钮型(确定编辑框背景颜色),2个字体菜单项为复选框型(确定编辑框中的字体)。
工具栏按钮有3个:左对齐、居中和右对齐(决定编辑框中文本对齐方式)。
请写出该项目中采用了哪些组件对象,关键属性如何设置,并列出编写的代码(适当给以注释)。
答:
组件有memo1(编辑框)、opendialog1和savedialog1(对话框)MainMenu1(主菜单)、toolbar1(工具条)、speedbutton1~3(工具栏上的按钮)等。
有关颜色的3个菜单项的RadioItem属性设置为True,GroupIndex属性设置为同一非零值。
3个快捷按钮(对齐)的GroupIndex属性设置为同一非零值。
有关代码如下:
procedure TForm1.N2Click(Sender: TObject); //"打开"菜单命令
begin
if opendialog1.Execute then
memo1.Lines.LoadFromFile(opendialog1.FileName);
end;
procedure TForm1.N3Click(Sender: TObject); //"保存"菜单命令
begin
if savedialog1.Execute then
memo1.Lines.SaveToFile(savedialog1.FileName);
end;
procedure TForm1.N5Click(Sender: TObject); //"退出"菜单命令
begin
close ;
end;
procedure TForm1.N7Click(Sender: TObject); //"剪切"菜单命令
begin
memo1.CutToClipboard ;
end;
procedure TForm1.N8Click(Sender: TObject); //"复制"菜单命令
begin
memo1.CopyToClipboard ;
end;
procedure TForm1.N9Click(Sender: TObject); //"粘贴"菜单命令
begin
memo1.

PasteFromClipboard ;
end;
procedure TForm1.N13Click(Sender: TObject); //"无色"选项
begin
N13.Checked := true ;
memo1.Color := clWindow ;
end;
procedure TForm1.N11Click(Sender: TObject); // "黄色"选项
begin
N11.Checked := true ;
memo1.Color := clyellow ;
end;
procedure TForm1.N12Click(Sender: TObject); //"绿色"选项
begin
N12.checked := true ;
memo1.Color := clLime ;
end;
procedure TForm1.N15Click(Sender: TObject); //粗体
begin
N15.Checked :=not N15.Checked ; //翻转
if N15.checked then
memo1.Font.Style:= memo1.Font.Style + [fsBold]
else
memo1.Font.Style:= memo1.Font.Style - [fsBold];
end;
procedure TForm1.N16Click(Sender: TObject); //斜体
begin
N16.Checked :=not N16.Checked ; //翻转
if N16.checked then
memo1.Font.Style:= memo1.Font.Style + [fsItalic]
else
memo1.Font.Style:= memo1.Font.Style - [fsItalic];
end;
procedure TForm1.SpeedButton1Click(Sender: TObject); //工具栏-左对齐
begin
memo1.Alignment := taLeftJustify ;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject); //工具栏-居中对齐
begin
memo1.Alignment := taCenter ;
end;
procedure TForm1.SpeedButton3Click(Sender: TObject); //工具栏-右对齐
begin
memo1.Alignment := taRightJustify ;
end;
2、编写一个多页面程序,要求用户在第1页输入姓名、年龄,第2页输入住址、邮编及电话,在第3页中,单击"综合"按钮,在Memo组件中显示汇总信息。
运行界面示例如下:
要求:写出项目中建立的主要组件对象,并给出"综合"按钮的单击事件处理程序代码。
答:
建立的组件对象有PageControl1、memo1、button1及若干label和edit对象等。
procedure TForm1.Button1Click(Sender: TObject); //"综合"按钮
begin
Memo1.Clear;
Memo1.Lines.Add(‘姓名:‘+ Edit1.Text);
Memo1.Lines.Add(‘年龄:‘+ Edit2.Text);
Memo1.Lines.Add(‘住址:‘+ Edit3.Text);
Memo1.Lines.Add(‘邮编:‘+ Edit4.Text);
Memo1.Lines.Add(‘电话:‘+ Edit5.Text);
end;
3、在第2题的基础上增加询问功能,即当用户单击"综合"按钮后,弹出一个询问框,询问用户是否还显示时间信息,如果用户回答"否",则只显示综合信息,如果用户回答"是",则在综合信息后再追加时间信息。下图是询问框及显示时间信息时的界面示例:
要求:询问框由项目的第2个窗体(form2)实现,要求设计成对话框样式。
请给出设计询问对话框的主要过程,并给出实现询问功能的"综合"按钮的代码。
答:
建立Form2,将其Caption属性

设置为"询问对话框"。将其BorderStyle属性设置为bsDialog 。
在Form2上建立一个Label对象和2个Button对象。将两个Button对象的Caption属性分别设置为"是"和"否",将它们的ModalResult属性分别设置为mrYes和mrNo。(也可以使用BitBtm按钮)
"综合"按钮的单击事件处理程序如下:
implementation
{$R *.dfm}
uses
unit2 ;
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear;
Memo1.Lines.Add(‘姓名:‘+ Edit1.Text);
Memo1.Lines.Add(‘年龄:‘+ Edit2.Text);
Memo1.Lines.Add(‘住址:‘+ Edit3.Text);
Memo1.Lines.Add(‘邮编:‘+ Edit4.Text);
Memo1.Lines.Add(‘电话:‘+ Edit5.Text);
if form2.ShowModal = mryes then
Memo1.Lines.Add(‘日期:‘+ datetimetostr(date));
end;
end.
Delphi程序设计-作业3
班级 姓名 分数
一、问答题
1、假定建好的一个paradox数据库位于D盘根目录下的mydb子目录里(该数据库就称之为mydb)。如果在窗体上建立了一个Database1对象,请你说出该对象如何与数据库相连(描述主要设置过程)。
答:
双击Database1,在打开的属性设置对话框中,先指定Driver name为STANDARD(即Paradox数据库),然后设置path=D:\mydb。
2、如果在界面上用二维表的格式显示mydb数据库中student表的内容,请你说出需要建立哪些数据库对象?它们的主要属性如何设置?
答:
依次建立Database1、Table1、DataSource1、DBGrid1对象。
Database1与mydb数据库相连;Connected属性置为true。
Table1的DatabaseName属性指定Database1中定义的数据库名字;TableName属性指定student.DB;Active属性置为True。
DataSource1的DataSet属性指定为Table1。
DBGrid1的DataSource属性指定为DataSource1。
3、对于DBGrid对象,如何通过它的属性设置使各列标题为中文显示?
答:
打开Columns属性对话框,加入数据集的所有字段(Add All Fields),然后对每一字段对象的Title属性进行设置,在Caption子属性中置入中文标题。
4、DBText、DBEdit、DBGrid都能显示来自数据库中的数据,请你说出它们的不同之处。
答:
DBText和DBEdit都能显示数据库当前记录某字段的值,但DBText是只读的,而DBEdit可读可写。
DBGrid可以显示数据集中多行多列数据。
5、在常用的数据控件中,只需指定DataSource而不需指定DataField的控件有哪些?
答:
DBGrid、DBNavigator
6、简述如何利用Table组件和Query组件实现对数据库的修改。
答:
对Table组件。通过其方法(如InsertRecord、Delete、Edit…Post等)实现对数据库的修改。

对Query组件,通过其SQL属性中的SQL语句(如delete、update、insert)实现对数据库的修改
7、Query组件的Open方法和ExecSQL方法的功能是什么?它们有什么不同?
答:
都是执行Query中的SQL语句。Open方法是执行查询语句,而ExecSQL方法是执行非查询语句。
8、当Query中的SQL语句带有参数时,在设计阶段如何为它们赋值,在运行时又如何为它们赋值?
答:
在设计阶段,在Query对象的Params属性中可以设置初始值。
在执行阶段,利用Query的ParamByName方法为参数赋值。
9、如何为数据集组件建立永久字段?建立永久字段的好处是什么?
答:
双击数据集组件对象,在打开的窗口中加入的字段就成为永久字段。
建立永久字段的好处是:可以在设计阶段对字段对象进行设置,并可以增加新的字段(计算字段和查找字段)。
10、什么是计算字段?在什么事件中计算该字段的值?
答:
计算字段要人工建立,其值不是来自数据库、而是在显示时通过计算获得。
在OnCalcFields事件中计算出计算字段的值。
二、上机题
1、熟悉delphi的数据库环境,并利用建表界面依次建立以下几张表:
系表:dep(dno,dname,tel)
学生表:student(sno,sname,sex,birthday,dno)
课程表:course(cno,cname,credit,ctime,quota)
选课表sc(sno,cno,grade)
注意:
定义各表的主码。
在student表的dno列上定义引用完整性约束(外来码)。
在上述表中插入一些测试数据。
2、编写一个如下图所示的查询语句练习界面。
用户在输入框输入一条查询语句,然后按"执行"按钮,查询结果显示在下面的表格里。
提示:将memo1对象中的查询语句存入Query对象的代码是:
query1.SQL := memo1.Lines ;
答案:
procedure TForm1.Button1Click(Sender: TObject); //执行按钮
begin
query1.Close;
query1.SQL := memo1.Lines ;
query1.Open ;
end;
3、编写界面如下图所示的"系-学生 主从查询"应用程序。两个按钮可以控制系记录的浏览,而学生信息总是显示当前系的学生记录。
提示:系学生数要动态计算。
答案:
procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
begin
query1.Close ; //根据当前系计算学生数
query1.ParamByName(‘dno‘).Value :=table1[‘dno‘] ;
query1.Open ;
query2.Close ; //根据当前系显示学生记录
query2.ParamByName(‘dno‘).Value :=table1[‘dno‘] ;
query2.Open ;
end;
procedure TForm1.Button1Cl

ick(Sender: TObject); //上一记录
begin
table1.Prior ;
end;
procedure TForm1.Button2Click(Sender: TObject); //下一记录
begin
table1.Next ;
end;
4、编写界面如下图所示的学生选课界面。
该界面的功能要求如下:
用户输入学号,然后按"确定" 键,程序检查是否有该学号:如果没有则给出提示信息;如果有则在表格里显示该学生可选的课程(即该学生没有选过的课程)。
用户在表格里选中一门课程,然后按"选课"键,完成一次选课操作(即在sc表中插入一条选课记录)。
用户输入课程号,然后按"查找"键,可以快速定位要找的课程(使该课程在表格里成为当前课程)。
答案:
procedure TForm1.Button3Click(Sender: TObject); //"确定"按钮
begin
query1.Close ; //判断学号是否存在
query1.ParamByName(‘sno‘).Value := edit1.Text;
query1.Open ;
if query1[‘sno‘]= null then
begin
showmessage(‘无此学生‘);
exit;
end;
query2.Close ; //显示学生可选课程
query2.ParamByName(‘sno‘).Value :=edit1.Text ;
query2.Open ;
end;
procedure TForm1.Button1Click(Sender: TObject);"查找"按钮
begin
query2.Locate(‘cno‘,edit2.Text,[]);
end;
procedure TForm1.Button2Click(Sender: TObject); "选课"按钮
begin
query3.Close ;
query3.ParamByName(‘sno‘).Value := edit1.Text ;
query3.ParamByName(‘cno‘).Value := query2[‘cno‘];
query3.ExecSQL ;
end;
5.编写界面如下图所示的系信息查询程序:
提示:"系学生数"列通过计算字段实现。
procedure TForm1.Table1CalcFields(DataSet: TDataSet); // 计算查找字段
begin
query1.Close ;
query1.ParamByName(‘dno‘).Value :=table1dno.Value ;
query1.Open ;
table1stu_num.Value := query1[‘num‘];
end;
Delphi程序设计-作业4
班级 姓名 分数
一、问答题
1、Image对象在设计阶段如何加载一幅图片,在运行时又如何加载一幅图片。
答:
在设计阶段,利用Image对象的Picture属性省略号按钮,在弹出的对话框中选择并加载一幅图片。
在运行阶段,利用Image对象的Picture属性的LodeFromFile方法,加载一幅图片。
2、如何让加载的图片充满Image对象的区域。
答:
将Image对象的Stretch属性设为True。
3、在设计阶段,对Animate对象而言,如何设置播放通用Window AVI动画(如文件拷贝、查找文件等),如何设置播放指定的动画文件。
答:
在Animate对象的CommonAVI属性中选择要播放的通用的Windo

ws动画。
在Animate对象的FileName属性中指定要播放的动画文件名。
4、举出MediaPlayer组件能够播放的媒体文件的后缀(不少于3种)。
答:
.mpg .avi .asf
5、在窗体上建立的MediaPlayer对象是一组播放按钮,而要在窗体上建立一个播放屏幕,如何实现?
答:
建立一个Panel对象作为屏幕,并调整好大小。
在代码中,编写如下语句:
MediaPlayer1.Display := Panel1;
MediaPlayer1.DisplayRect :=Rect(0,0,Panel1.Width,Panel1.Height);
6、在Image区域中,如果要在给定的两点之间画出直线,如何实现?
答:
首先利用Image的Canvas属性的MoveTo方法将画笔移到起始点,然后利用Canvas属性的LineTo方法从起始点画线到终点。
7、一个简单报表可以包含6个栏目,请说出它们的中文名字。
答:
报表页眉、报表页脚、报表标题、数据栏、数据列标题、汇总栏。
8、报表组件QuickRep的作用是什么,如何设定报表上打印哪些栏目?
答:
QuickRep的作用是提供设计报表的母板,通过QuickRep的Bands属性可以设定出现在报表上的栏目。
二、上机题
1、实现如下图所示的应用程序。当按"加载图片"按钮后,程序弹出文件对话框,要求用户指定加载的图像文件名。"退出"按钮的功能是退出该程序。
2、实现如下图所示的应用程序。当按"打开文件"按钮后,程序弹出文件对话框,要求用户指定播放的多媒体文件的名字。
打开文件对话框要给出常见的媒体文件的后缀。


相关文档
最新文档