用户界面设计
用户界面设计基本原则
窗体设计
菜单与工具栏设计
多页面设计
多文档窗口设计
多窗体设计
信息交互
用户界面设计基本原则
?控制权在用户
?使用图形界面
?界面与操作的一致性
?宽容性
?简洁与美观并重
窗体外观设计
窗体设计有关一个应用的整体形象
?AutoScroll 决定必要时是否出现滚动杆
?Bordericons 决定哪些按钮图标出现在
Form的标题栏上 。
?BorderStyle 决定 Form边框的作用与样

?Form的 showhint ( 为真 )
Bisystemmenu 决定一
个控制菜单 ( 或称系统
菜单 ) 是否出现在标题
栏上 。
biminimize 决定一个最
小化按钮是否出现在标
题栏上 。
bimaximize决定一个最
大化按钮是否出现在标
题栏上 。
Bordericons 决定标题栏上的内容
Bisystemmenu 为 True
但 biminimize 和 bimaximize 为 False
Bisystemmenu为 False,无按钮
但可以改变大小 ( 鼠标拖动边框 ) 。
BorderStyle 决定 Form边框的作用与样式
BorderStyle 为 bsDialog (不能改变大小 )
此时指定 Bordericons 的 biminimize 和 bimaximize
为 True 就矛盾了。
菜单与工具栏设计菜单




菜单设计的基本过程
?建立一个 TMainMenu类型的对象
?打开菜单设计器,设计菜单结构
?为菜单项设计功能
























PopupMenu组件菜











利用模板来建立菜单结构菜





系统已为我们新建了 20个 TMenuItem型对象






设计工具栏菜





SpeedButton ToolBar
按扭图标
?包含按扭小图标的目录是,c:\program
files\common files\Borland
shared\Images\Buttons
glyph 加图,
margin -1,图形居中
flat true (平面效果,只有
当鼠标移到按钮,才凸现
出来。否则形状同按钮 )
当 groupindex= 0时,同一
般按钮
当 groupindex>0时 表示状态
按钮。 down true/false
groupindex= 1 同属第一组
,组内起互斥作用。
allowallup true(可让按下的
按钮弹起来,一组只设一个
即可 )
showhint true,hint 提示文字






可实现在单一的 Form 中拥有多页数据
多 页 设 计
页控制组件 PageControl
多 页 设 计
建立 pagecontrol1页控制对象
多 页 设 计
建立 TabSheet 标签页对象
TabSheet1
Caption -文件拷贝
多 页 设 计
PageIndex属性
多 页 设 计



计※





Animate组件 - 演示 AVI文件
动画组件是一个窗口, 无声地显示 AVI( Audio Video
Interleaved) 剪辑 。 AVI剪辑是一系列位图祯, 象电影一样
。 所使用的文件可以是未压缩的 AVI文件, 也可以是使用
运行长度编码 ( RLE) 进行压缩的文件 。
在“文件拷贝”标签页上 建立动画对象 Animate
commonAVI-
aviCopyFile
filename 属性
指定 AVI文件
StartFrame StopFrame
Animate1 方法 Play
Animate1 事件 Onstart
开始演示时触发,可同
步其他过程



计※





多 页 设 计
属性 commonavi - avinone
filename – avi文件多


计※








计※





system\Tmediaplayer组件
属性
DeviceType
dtautoselect
Filename
.mpg文件



计※





TMediaPlayer 组件是一组按钮的组合 ( 如 Play,Stop,Eject
等 ),它们可以控制诸如 CD-ROM, MIDI 等多媒体设备
一个多媒体设备可以是硬件, 也可以是软件 。



计※





多窗体设计
?多窗体应用
?建立窗体
?普通窗体的显示、隐藏、关闭与释

?模式窗体的使用
在一个项目可以有一个以上的窗体,其
中只有一个是 主窗体 。
如何在它们之间切换呢?
如何操作不同的窗体?
多窗体设计
主窗体
建立窗体的方式
?在主项目文件中自动建立窗体
?在程序执行过程中建立窗体
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1,Form1);
Application.CreateForm(TForm2,Form2);
Application.CreateForm(TForm3,Form3);
Application.Run;
end.
首先建立的即主窗体。且主窗体被首先打开(显示)
uses …,unit2
Form2,TForm2;
form2:=Tform2.create(self);
要定义窗体变量, 要在 uses子句中指定必要
的单元 ( 如包括 Tform2的单元 )
在程序中建立窗体
普通窗体的显示、隐藏、关闭与释放
Tform.show方法
可以显示指定的窗体(实际上是将 form的 Visible
属性置为 True)。
Tform.hide方法
可 隐藏指定窗体 ( 实际是将 form的 Visible属性置
为 False。
Tform.Close方法
可以关闭一个窗体 。
Tform.release方法
将等待 form及其对象的所有事件处理程序完成后
,撤消 Form并释放所占用的内存 。
几点注意
?窗体建立后,主窗体是自动打开的,而子窗体
要由 show方法打开。
?在执行过程中主、子窗体都可以动态地显示
( show)或隐藏( Hide),而不影响其他动
作 。
?主窗体执行 close方法意味着程序的结束;子
窗体 Close后可用 show方法再次打开且不影响
其上的状态与动作。
?当子窗体用 release 方法撤消后,不能用 show
方法再打开,而必须用 create方法重新建立。
模式窗体( modal form)应用
使用窗体的 ShowModal 方法可以将一个
窗体作为一个模式窗体 modal form 来打开
I:= form2.showmodal
当用户打开一个模式窗体后, 就进入模
式窗体进行操作, 此时其他窗体呈不能激
活状态, 也就是说用户只能在模式窗体里
操作 。
只有在用户关闭模式窗体, 从模式窗体
退出后, 才能继续应用程序下面的工作 。
退出模式窗体
如何关闭并退出模式窗体呢?
只要在模式窗体中改变属性 ModalResult 为一非
零值, Delphi 就关闭模式窗体而回到调用它的窗
体, 同时 ShowModal 函数也将 ModalResult 属性值
作为函数值 ( 整型 ) 返回 。
ShowModal的隐含值为零 。
因此, 可以根据 ModalResult 属性值判断模式窗
体的退出选择 。
为增加可读性, 系统将属性 ModalResult定义为
TmodalResult类型 。
ModalResult的可选值 ShowModal函数值
mrNone 0
mrOk 1
mrCancel 2
mrAbort 3
mrRetry 4
mrIgnore 5
mrYes 6
mrNo 7
mrAll 8
close语句和关闭框使 ShowModal的函数值为 2
关闭模式窗体的方法,
更常用的方法是利用按钮组
件的 ModalResult属性,
该按钮 OnClick事件会自动
将其父窗体的 ModalResult
属性设置为它本身的
ModalResult值,
而无需编写任何代码。
例如,mrok
直接为该窗体的 ModalResult属性赋一非零值(如 mryes)
用 Bitbtm 按钮关闭模式窗体
属性 Kind 为 bkOK
则属性 modalResult 自动设
为 mrOK
Glyph自动选择合适图标。
Form1 窗体
procedure TForm1.Button1Click(Sender,TObject);
begin
edit1.text:=inttostr(form2.showmodal);
end;
procedure TForm1.Button2Click(Sender,TObject);
begin
form3.show;
end;
procedure TForm1.button3Click(Sender,TObject);
begin
Form3:=Tform3.Create(self);
end;
Unit1 单元代码
Form2 窗体
unit Unit2;
interface
uses
Windows,Messages,SysUtils,Classes,Graphics,Controls,
Forms,Dialogs,
StdCtrls,Buttons;
type
TForm2 = class(TForm)
BitBtn1,TBitBtn;
:
BitBtn10,TBitBtn;
end;
var
Form2,TForm2;
implementation
{$R *.DFM}
end.
Form3 窗体
Unit3 单元代码
procedure TForm3.Button1Click(Sender,TObject);
begin
hide;
end;
procedure TForm3.Button2Click(Sender,TObject);
begin
close;
end;
procedure TForm3.Button3Click(Sender,TObject);
begin
release;
end;
信息交互
?信息输入函数
?信息显示函数
?联机帮助信息
?提示帮助信息
?显示过程信息
信息输入函数
inputbox 函数 (Unit dialog)
class:=inputbox('输入班级 ','请输入 ','力 01');
ok 返回输入值; cancle 返回隐含值
信息输入函数
inputquery函数 (Unit dialog)
InputQuery(const ACaption,APrompt,string;
var Value,string),Boolean;
procedure TForm1.Button1Click(Sender,TObject);
var
NewString,string;
begin
Label1.Caption,= ’ Default String ';
if InputQuery('Input Box’,'Prompt’,NewString) then
Label1.Caption,= ’The new string is ' + NewString ;
end;
信息显示函数
?showmessage过程( Unit dialogs)
?messagedlg 函数 (Uunit dialogs)
?可在屏幕中心显示各种类型的提示信息
框, 并能获得用户的回答信息 。
信息显示函数
function MessageDlg(Msg,Atype,Abuttons,
HelpCtx),Word
① Msg 为一字符串常量, 即要显示的信息 。
② Atype 指定信息框的类型, 可以选如下的值,
?mtWarning 显示警告信息, 并显示一黄色感叹号 。
?mtError 显示错误信息, 框中包含一个红色停止符号
?mtInformation 显示一般通告信息 。
?MtConfirmation 显示确认信息 。
?mtCustom 显示用户自定义信息 。
③ Abuttons 决定那些按钮出现在信息框内, 该参数是一个
集合类型, 集合中可以选择如下选项:
MbYes,mbNo,mbOK, mbCancel, mbHelp,
mbAbort,mbRetry, mbIgnore, mbAll
信息显示函数
④ HelpCtx 指定要使用的 帮助信息, 0表示不使用
帮助信息 。
⑤ Word 为 MessageDlg 函数返回值, 即用户选择的
按钮 。 返回值如下:
mrNone, mrAbort, mrYes, mrOk, mrRetry,
mrNo,mrCancel,mrIgnore,mrAll
信息显示函数

messagedlg (‘ 是否要删除它 ’,
MtConfirmation,[mbYes,mbNo],0);
信息显示函数
另外,Delphi 根据常用按钮的搭配予定义了三个组
合好的集合:
mbYesNoCancel
mbOkCancel
mbAbortRetryIgnore
信息显示函数
messagedlg('软盘读写错误 ',mtError,
mbAbortRetryIgnore,0);
显示过程信息
显示过程信息
Timer1timer
ProgressBar1.StepIt