实 验
3.10.1 设计由按钮类组件实现的功能窗体
【实验目的】
熟悉 Delphi 中按钮型组件的使用,锻炼代码编写。
【实验要求】 按要求设计一窗体,并实现其功能。
【示范模仿】 设计一点菜窗口,用户只能在“龙虾、青蟹、鲍鱼”中选择一项,对佐料“酱油、芥末、 醋”任意选择哪些项,提交后生成选择内容的文本。
(1) 进入Delphi开发环境
单击Windows的【开始】菜单【开始】→【程序】→【Borland Delphi 7】→【Delphi 7】。 (2) 创建项目 缺省时Delphi创建了一个项目和一个窗体单元文件,我们直接对窗体设置大小和字体等属 性。
(3) 添加组件 首先往窗体中添加一个Edit组件Edit1、一个RadioGroup组件RadioGroup1、一个GroupBox 组件GroupBox1 和二个Button组件Button1~Button2,再在GroupBox1 中加三个CheckBox组
件CheckBox1~CheckBox3。
(4) 设置组件属性 组件属性设置如表 3-17 所示。
表 3-17 组件属性设置
组 件 |
属 性 |
属性值 |
组 件 |
属 性 |
属性值 |
Edit1 |
Text |
[空串] |
Form1 |
Caption |
按钮组件练习 |
RadioGroup1 |
Caption |
海鲜 |
GroupBox1 |
Caption |
佐料 |
Items |
龙虾(&L) 青蟹(&C) 鲍鱼(&A) |
CheckBox1 |
Caption |
酱油(&S) |
|
CheckBox2 |
Caption |
芥末(&M) |
|||
CheckBox3 |
Caption |
醋(&V) |
|||
Button1 |
Caption |
提交(&R) |
Button2 |
Caption |
关闭(&C) |
设置完组件属性后,窗体中组件及其布局如图 3.14 所示。
(5) 添加并编写组件事件代码
为按钮 Button1 添加 OnClick 事件,响应过程为 Button1Click;Button1Click 过程的作 用是按用户设置的 RadioGroup1 和 CheckBox1~CheckBox2 的值提交内容,从而让 Edit1 组件作出相应的显示,其代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var choice:string;
begin
if RadioGroup1.ItemIndex<>-1 then begin
case RadioGroup1.itemindex of
0:choice:='龙虾';
1:choice:='青蟹';
2:choice:='鲍鱼';
end; Edit1.Text:='你选择了' choice;
if CheckBox1.Checked then Edit1.Text:=Edit1.Text '、酱油'; if CheckBox2.Checked then Edit1.Text:=Edit1.Text '、芥末'; if CheckBox3.Checked then Edit1.Text:=Edit1.Text '、醋'; end
else
Edit1.Text:='你没有点任何海鲜!';
end;
为按钮Button2 添加OnClick事件,响应过程为Button2Click,Button2Click过程用来关闭窗 体,其代码如下:
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
(6) 保存程序 将单元文件保存为“Unit3_ex1.pas”,将项目文件保存为“Project3_ex1.dpr”。 (7) 运行程序
单击工具栏中【Run】按钮运行程序。运行后,分别在单选按钮和复选框中输入数据,单 击【提交】按钮,窗体将按选择的内容显示在文本框中。
图 3.14 实验 3.1.1 的界面 图 3.15 实验 3.1.2 的界面
【学以致用】
按图 3.15 设计窗体,当用户选择后,按【确定】按钮,将 选择内容显示在 Edit 组件中,注意各组件上的快捷键。按【取 消】按钮,将 Edit 组件内容清空。
【探索求新】
设计一表决器,表决器中有 6 个候选项(如:北京、上海、 深圳、广州、武汉、南京),单选按钮有 1、2、3、4,当选择 3 时,只能选择 3 个候选城市,通过程序自动限制复选框的选择 数量,【提交】后将选择的城市显示在编辑框中,见图 3.16。
【挑战新高】
用窗体方式设计一摇号器,输入一个整数 n,代表摇号范
围,输入一个整数 m(m<n),代表摇出 m 个不重复的随机数, 要求:每次摇号得出不同的结果,随机数出现概率均衡,窗体 随摇出数量多少而自动改变大小,见图 3.17。
图 3.17 实验 3.1.4 运行效果
提示:Random()为随机数函数。
3.10.2 设计由列表类组件实现的功能窗体
【实验目的】
熟悉 Delphi 中列表型组件的使用,锻炼代码编写。
图 3.16 实验 3.1.3 界面
【实验要求】 按要求设计一窗体,并实现其功能。
【示范模仿】 用列表框设计一表决窗口,从候选城市中选出若干城市,并可以对选出的城市进行
排序。
(1) 进入 Delphi 开发环境
单击 Windows 的【开始】菜单【开始】→【程序】→【Borland Delphi 7】→【Delphi 7】。
(2) 创建项目
缺省时 Delphi 创建了一个项目和一个窗体单元文件,我们直接对窗体设置大小和字体 等属性。
(3) 添加组件
首先往窗体中添加二个 ListBox 组件 ListBox1~ListBox2、七个 Button 组件 Button1~
Button7。
(4) 设置组件属性 组件属性设置如表 3-18 所示。
表 3-18 组件属性设置
组 件 |
属 性 |
属性值 |
组 件 |
属 性 |
属性值 |
ListBox1 |
Items |
北京 上海 天津 重庆 广州 杭州 南京 |
Button1 |
Caption |
>> |
Button2 |
Caption |
> |
|||
Button3 |
Caption |
< |
|||
Button4 |
Caption |
<< |
|||
Button5 |
Caption |
↑ |
|||
Button6 |
Caption |
↓ |
|||
Button7 |
Caption |
退出 |
设置完组件属性后,窗体中组件及其布局如图 3.18 所示。
(5) 添加并编写组件事件代码
图 3.18 实验 3.2 界面
为按钮 Button1 添加 OnClick 事件,响应过程为 Button1Click;Button1Click 过程的作
用是将所有候选项都提交到已选项列表中,其代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
for i:=0 to ListBox1.Items.Count-1 do
begin //将 ListBox1 中所有选项加到 ListBox2 中
ListBox2.Items.Add(ListBox1.Items.Strings[i]);
end;
//将 ListBox1 中所有选项删除
for i:=ListBox1.Items.Count-1 downto 0 do
ListBox1.Items.Delete(i);
showbtnen;
end;
为按钮Button2 添加OnClick事件,响应过程为Button2Click,Button2Click过程用来将当前 选中的候选项提交到已选项列表中,其代码如下:
procedure TForm1.Button2Click(Sender: TObject);
begin
for Item:=0 to ListBox1.Items.Count-1 do if ListBox1.Selected[Item] then
begin ListBox2.Items.Add(ListBox1.Items.Strings[Item]); ListBox1.Items.Delete(item);
break;
end; showbtnen; end;
我们可以发现,几个按钮的事件中,都调用了showbtnen过程,它是用来设置按钮灰显的, 使得按钮的使用符合环境状况,其代码如下:
procedure TForm1.ShowBtnEn;
begin
if ListBox1.Count>0
then button2.Enabled:=true else button2.Enabled:=false;
if ListBox2.Count>0
then button5.Enabled:=true else button5.Enabled:=false;
if ListBox1.SelCount>0
then button3.Enabled:=true else button3.Enabled:=false;
if ListBox2.SelCount>0
then button4.Enabled:=true else button4.Enabled:=false;
button6.Enabled:=false;
for i:=1 to ListBox2.Count-1 do if ListBox2.Selected[i] then
begin button6.Enabled:=true; break; end;
button7.Enabled:=false;
for i:=0 to ListBox2.Count-2 do if ListBox2.Selected[i] then
begin button7.Enabled:=true; break; end;
end;
(6) 保存程序 将单元文件保存为“Unit3_ex2.pas”,将项目文件保存为“Project3_ex2.dpr”。 (7) 运行程序
单击工具栏中【Run】按钮运行程序。运行后,分别在候选项中选中选项,单击【>】 按钮,即可提交至已选列表中,或直接单击【>>】按钮,将所有候选选项提交至已选列 表中。
【学以致用】 刚才,我们仅仅完成了【>】和【>>】事件,只能从候选列表中提交至已选列表中,
而无法将错选的选项返回候选列表,请同学们完成【<】和【<<】功能。
【探索求新】 上题中,当选中已选列表的选项时,可通过单击【↑】或【↓】调整次序,请完成该
2 个按钮事件。
【自学成材】 上题中,还可以通过直接用鼠标拖拽候选项至已选列表,或拖拽已选项至候选列表,
请完成相应事件。