1.窗体

在Delphi的组件面板中一共有500多个组件。我们从窗体开始逐步介绍常用组件。

用户界面是应用系统中直接面对用户的窗体,包括:主窗体、子窗体、弹出对话框窗体等。

1.1 Form组件1.1.1 Form组件的主要属性

用来设置窗体标题栏上的图标,取值如下:

取值

功能

biSystemMenu

可以使用控制菜单,也称为系统菜单。

biMinimize

显示最小化按钮

biMaximize

显示最大化按钮

biHelp

显示帮助按钮,只有窗体的BorderStyle属性设置为bsDialog或者BorderIcons中不包括biMinimize和biMaximize时,biHelp才会有效。

用来设置窗体的外观和边框,取值如下:

取值

功能

bsDialog

标准对话框窗体,边框大小不可以改变

bsSingle

单线边框窗体,可以改变大小

bsNone

无边框窗体,无标题栏,不可以改变大小

bsSizeable

边框大小可改变的窗体

bsToolWindow

与bsSingle风格相同,但标题栏较小,如果设置为该值,BorderIcons属性中的biMinimize和biMaximize不起作用

bsSizeToolWin

与bsSizeable风格相同,但标题栏较小,如果设置为该值,BorderIcons属性中的biMinimize和biMaximize不起作用

对象的名称,用来唯一标识对象。代码中使用该名称调用对象的属性和方法。

用来指定窗体标题栏中的文字,可以为空,为空时,与Name属性值相同。

用来设置窗体中文字的字体、颜色和字号等。

用来设置窗体的类型。在Windows中应用程序可以分为三类:多文档界面应用程序(MDI)、单文档应用程序(SDI)、对话框应用程序。该属性的取值如下:

取值

功能

fsNormal

普通窗体,既不是MDI应用程序的父窗口,也不是MDI应用程序的子窗口

fsMDIChildMDI

MDI应用程序的子窗口

fsMDIFormMDI

MDI应用程序的父窗口

fsStayOnTop

在桌面最前端显示窗体

用来指定标题栏中显示的图标

用来指定窗体的大小和显示的位置,取值如下:

取值

功能

poDesigned

与设计期间相同

poDefault

窗体每次显示时比上次往右下角移动一些位置,大小由操作系统决定

poDefaultPosOnly

窗体大小与设计期间相同,位置每次显示时比上次往右下角移动一些位置

poDefaultSizeOnly

窗体以设计期间的位置显示,大小由操作系统决定

poScreenCenter

窗体大小与设计期间相同,位置显示在屏幕中间,会考虑多个监视器时位置的调整

poDesktopCenter

窗体大小与设计期间相同,位置显示在屏幕中间,不考虑多个监视器时位置的调整

用来描述窗体显示的状态,取值如下:

取值

功能

wsNormal

窗体以普通状态显示,既不最大化也不最小化

wsMinimized

窗体以最小化状态显示

wsMaximized

窗体以最大化状态显示

1.1.2 Form的常用事件

事件

含义

OnCreate

窗体创建时产生此事件

OnShow

窗体显示前产生此事件

OnPaint

重画窗体、窗体大小改变、窗体上的其他窗体移去时产生此事件

OnActivate

窗体激活时(窗体获得焦点时)产生此事件

事件

含义

OnClose

窗体关闭时产生此事件

OnCloseQuery

窗体关闭时产生此事件

OnDestory

窗体被删除前产生此事件

OnDeactivate

窗体变为非激活状态时产生此事件

事件

含义

OnKeyDown

当窗体获得键盘的输入焦点,且有键按下时产生此事件

OnKeyPress

当窗体获得键盘的输入焦点,且有字符键按下时产生此事件

OnKeyUp

当窗体获得键盘的输入焦点,且按下键抬起时产生此事件

事件

含义

OnClick

单击窗体时产生此事件

OnDblClick

双击窗体时产生此事件

OnMouseDown

当鼠标放置在窗体上,且鼠标按下键时产生此事件

OnMouseMove

鼠标在窗体上移动时产生此事件

OnMouseUp

当鼠标放置在窗体上,且鼠标按键抬起时产生此事件

1.1.3 窗体的方法

窗体的常用方法:

方法

含义

Create

用来创建一个窗体并进行初始化,同时触发OnCreate事件

Close

关闭一个显示中的窗体,会调用CloseQuery方法决定是否可以关闭,同时触发OnClose事件

CloseQuery

用来判断窗体是否可关闭,返回一个逻辑值

Release

用于将窗体对象从内存中彻底删除

Show

显示窗体,同时触发OnShow事件

ShowModal

显示模式窗体,触发OnShow事件

Print

打印窗体

1.1.4 窗体的创建

创建应用程序时,Delphi会自动创建新的窗体,它是应用程序的主窗体。应用程序除了主窗体外,还可以拥有子窗体、对话框等,所以需要在程序设计时创建和显示新的窗体。创建窗体的方法包括:静态创建和动态创建。

创建窗体是在工程编辑设计时创建新窗体;

是在程序执行过程中通过代码生成窗体;

1.静态创建新窗体

示例:首先,创建应用程序,自动生成Form1,然后选择File|New|Form菜单,生成Form2,在Form1中添加两个按钮,分别为“打开窗体2”、“退出”,在Form2中添加一个按钮“关闭”,如下图:

delphi 写界面程序 3.Delphi常用组件1.窗体(1)

编写“退出”按钮的事件:

procedure TForm1.Button2Click(Sender: TObject); begin close; end;

编写"打开窗体2"的事件:

procedure TForm1.Button1Click(Sender: TObject); begin form2.show(); end;

编写窗体2上的”关闭“按钮的事件:

procedure TForm2.Button1Click(Sender: TObject); begin close; end;

此时运行程序,会出现如下图所示的提示信息:

delphi 写界面程序 3.Delphi常用组件1.窗体(2)

该提示信息的含义是在窗体1上引用了窗体2,询问是否添加引用。选择Yes,Delphi自动将窗体2的引用添加到窗体1的代码中,也可以选择No,然后在Unit1.pas中添加引用代码:

implementation {$R *.dfm} uses Unit2;

2.动态创建新窗体

示例:首先,创建应用程序,自动生成Form1,然后选择File|New|Form菜单,生成Form2,在Form1中添加两个按钮,分别为“打开窗体2”、“退出”,在Form2中添加一个按钮“关闭”,图与上例相同。

由于Delphi默认情况下会在执行程序时自动创建窗体,所以需要设置,选择Project|Options,单击Forms,在对话框右侧会出现Auto-create forms列表和Available forms列表,将Form2移动到Available forms列表,则Form2不会在内存中自动创建。

在Unit1.pas中 implementation 语句下面添加:

uses unit2;

编写“退出”按钮的事件:

procedure TForm1.Button2Click(Sender: TObject); begin close; end;

编写"打开窗体2"的事件:

procedure TForm1.Button1Click(Sender: TObject); begin form2 := TForm2.Create(nil); form2.Show; end;

编写窗体2上的”关闭“按钮的事件:

procedure TForm2.Button1Click(Sender: TObject); begin close; end;

编写窗体2的关闭事件:

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Release; end;

由于窗体2是动态创建的,所以在窗体2关闭时要执行销毁动作,以便释放窗体所占用的内存。

程序运行效果如下图:

delphi 写界面程序 3.Delphi常用组件1.窗体(3)

1.2 弹出对话框

对话框是与用户交互的最佳途径之一,在Delphi中提供了多种对话框:

1.ShowMessage过程

该过程显示一个简单的对话框,语法格式:

ShowMessage(<信息内容>);

该过程显示的对话框以应用程序的可执行文件名为标题,对话框中包含一个OK按钮,对话框的高度和宽度随信息内容不同而变化;信息内容是对话框中显示的文本,在信息内容中可以使用硬回车(#13)来使文本换行。

2.ShowMessageFmt过程

语法格式:

ShowMessageFmt(<信息内容>, <参数数组>);

如:

ShowMessageFmt('您的%s成绩是%d分。', ['外语', 98]);

3.MessageDlg函数

执行该函数,可以在屏幕的中心显示信息对话框,语法格式:

<变量> := MessageDlg(<信息内容>, <类型>, <按钮数组>, HelpCtx);

类型取值:

取值

说明

mtWarning

警告对话框

mtError

错误对话框

mtInformation

信息提示对话框

mtConfirmation

确认对话框

mtCustom

不含图标的一般对话框

按钮取值:

取值

说明

mbYes

Yes按钮,返回mrYes或6

mbNo

No按钮,返回mrNo或7

mbOk

OK按钮,返回mrOk或1

mbCancel

Cancel按钮,返回mrCancel或2

mbHelp

Help按钮

mbAbort

Abort按钮,返回mrAbort或3

mbRetry

Retry按钮,返回mrRetry或4

mbIgnore

Ignore按钮,返回mrIgnore或5

mbAll

All按钮,返回mrAll或8

mbNoToAll

NoToAll按钮,返回9

mbYesToAll

YesToAll按钮,返回10

也可以使用按钮常量,按钮常量的取值:

取值

说明

mbYesNoCancel

Yes、No、Cancel三个按钮

mbOkCancel

Ok、Cancel两个按钮

mbAbortRetryIgnore

Abort、Retry、Ignore三个按钮

HelpCtx指定当用户单击Help按钮或按下F1时,显示的帮助主题。

该函数根据用户单击的按钮返回相应的值。

4.MessageDlgPos函数

可以在屏幕指定位置显示对话框,语法格式:

<变量> := MessageDlg(<信息内容>, <类型>, <按钮数组>, HelpCtx, x, y);

x, y 表示显示的坐标位置。

5.CreateMessageDialog函数

该函数用于创建一个信息框窗体,语法格式:

<变量> := CreateMessageDialog(<信息内容>, <类型>, <按钮数组>);

该函数返回一个TForm类型的对话框,而且并不直接显示出来,在需要的时候,可以使用窗体的ShowModal方法弹出。

6.InputBox函数

显示一个接收用户输入的对话框,并返回用户输入的信息。语法格式:

<变量> := InputBox(<对话框标题>, <信息内容>, <默认内容>);

7.InputQuery函数

语法格式:

<变量> := InputBox(<对话框标题>, <信息内容>, <字符串变量>);

在该函数中,默认内容存在字符串变量中,当用户单击OK按钮,输入框中的文本将赋值到字符串变量,并返回True,若用户单击Cancel按钮,字符串变量中内容保持不变,并返回False。

,