delphi 写界面程序 3.Delphi常用组件1.窗体
delphi 写界面程序 3.Delphi常用组件1.窗体
2024-11-25 01:53:19  作者:风的追求  网址:https://m.xinb2b.cn/know/emq148954.html
1.窗体

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

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

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

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

取值

功能

biSystemMenu

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

biMinimize

显示最小化按钮

biMaximize

显示最大化按钮

biHelp

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

BorderStyle

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

取值

功能

bsDialog

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

bsSingle

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

bsNone

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

bsSizeable

边框大小可改变的窗体

bsToolWindow

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

bsSizeToolWin

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

Name

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

Caption

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

Font

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

FormStyle

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

取值

功能

fsNormal

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

fsMDIChildMDI

MDI应用程序的子窗口

fsMDIFormMDI

MDI应用程序的父窗口

fsStayOnTop

在桌面最前端显示窗体

Icon

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

Position

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

取值

功能

poDesigned

与设计期间相同

poDefault

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

poDefaultPosOnly

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

poDefaultSizeOnly

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

poScreenCenter

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

poDesktopCenter

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

WindowsState

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

取值

功能

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中添加一个按钮“关闭”,如下图:


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

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;

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


该提示信息的含义是在窗体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关闭时要执行销毁动作,以便释放窗体所占用的内存。

程序运行效果如下图:


1.2 弹出对话框

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

输出对话框ShowMessage过程ShowMessageFmt过程MessageDlg函数MessageDlgPos函数CreateMessageDialog函数输入对话框InputBox函数InputQuery函数

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。

  • 盘点动漫人物的真实名字(动漫中的这些名字你读对了吗)
  • 2024-11-25动漫中的这些名字你读对了吗又到了开学季,很久没有坐在课堂上学习的你,还记得那些字典里的词?还记得那些考试时经常会用到的多音字吗?今天,动漫菌就来考考大家,看看动漫中这些易错字你能读对几个篠(xiǎo)“篠”这个字,许多人第一反。
  • 新手基民有什么建议(有奖真相来了)
  • 2024-11-25有奖真相来了有奖互动文末留言#2023年,你看好A股投资吗?为什么?#基金君将从中选出2位最佳留言赠送投资书籍《周期》留言截至1月30日中午12:002023,愿平安健康!,。
  • 七首能让你充满力量的歌 这5首歌可能会让你充满动力
  • 2024-11-25七首能让你充满力量的歌 这5首歌可能会让你充满动力你们心中有没有一首歌,听到就很有感觉,有某个被触动的瞬间下面推荐5首有这种魔力的歌曲1追梦赤子心,原唱GALA乐队;里面有句歌词是这样的;不求任何人满意只要对得起自己,关于理想我从来没选择放弃即使在灰。
  • 全球十大电梯品牌(揭秘全球一线品牌电梯排行榜靠前品牌)
  • 2024-11-25揭秘全球一线品牌电梯排行榜靠前品牌电梯给人类带来了很多便利随着时代的发展,电梯品牌已经深入人心,但市场尚未饱和,前景广阔许多人不知道应该选择哪一个全球电梯品牌下面,我将向您介绍全球一线品牌电梯排行榜,希望对您有所帮助电梯品牌排行榜主要。
  • 开车如何消除路怒症(开车的人都易得)
  • 2024-11-25开车的人都易得“路怒症”,意思是带着愤怒的心情在路上开车一些“有车一族”平时呈现出一副“好好先生”、“好好小姐”的模样,但没想到开车遇到鸡毛蒜皮点小事会换上另外一副让人意想不到的暴躁面孔患上“路怒症”的司机轻则怒骂。
  • 周星驰十大让人记住的配角(那些年周星驰演过的配角)
  • 2024-11-25那些年周星驰演过的配角周星驰在电影圈已经是大佬级别的人物了,他自成一派的无厘头氏搞笑让很多观众都尊称他一声“星爷”,而如今近些年周星驰也已经从台前转到幕后了,大概也是想要为新生代的演员们留一条活路不过在周星驰没火之前他也是。
  • 德芙巧克力为何叫此刻尽丝滑(德芙巧克力诞生的背后)
  • 2024-11-25德芙巧克力诞生的背后德芙是在巧克力品牌中非常知名的一个,他的产品广告总是会选择许多当红明星来代言人,拍摄广告视频广受年轻人的喜爱,这也是德芙在中国广受好评的原因之一,但其实很少有人知道,这样的大品牌德芙背后还有一个感人至。
  • 好看又耐人寻味的电影(多次戳中泪点的异域风情电影)
  • 2024-11-25多次戳中泪点的异域风情电影总结看过的多次戳中泪点的,异域风情浓厚的电影:《送信到哥本哈根》、《爱无国界》、《穿条纹睡衣的男孩》、《战火情人》、《走出非洲》、《布达佩斯饭店》、《情陷撒哈拉》、《涉外大饭店》、《素媛》、《追风筝的。
  • 感恩节哪天(感恩节的时间)
  • 2024-11-25感恩节的时间感恩节在2021年是11月25日星期四感恩节是美国和加拿大共有的重要节日,近年来,众多国内学者倡议设立“中华感恩节”以弘扬传统文化感恩节的假期一半会从星期四持续到星期天在最初刚有感恩节的时候,在美国的。
  • 三星发布galaxys22拍照性能(最强影像旗舰非ta莫属)
  • 2024-11-25最强影像旗舰非ta莫属无论是在硬件层面,还是在软件层面,在过去几年手机影像赛道的博弈中,各家几乎使出了浑身解数,力求在夜景拍摄体验方面有所突破日前,三星推出了全新一代旗舰手机GalaxyS22系列,凭借着先进的AI摄像系统。