delphi 写界面程序 3.Delphi常用组件1.窗体
delphi 写界面程序 3.Delphi常用组件1.窗体
2024-11-06 03:00:47  作者:风的追求  网址:https://m.xinb2b.cn/tech/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。

  • 杨振宁长寿的养生秘诀(100岁杨振宁谈养生)
  • 2024-11-06100岁杨振宁谈养生1专心不久前,杨振宁先生在清华大学做了一次演讲,题目是“但愿人长久,千里共同途”,这他生日宴会的一个场景杨振宁先生1922年出生,目前寿高100岁这个时候,他依然精神矍铄,思维清晰,底气十足,让无数人。
  • 初学ui设计需学什么软件(ui设计用什么软件)
  • 2024-11-06ui设计用什么软件Ui设计用什么软件?作为ui设计师,你必须要熟练的使用以下几款设计软件,不然可能也无法胜任ui设计师的职位ui设计除了要学习一些基本的操作软件,如PSAIAEAXURE以外呢,还要学习比如配色,排版,。
  • 米家微波炉哪个牌子好(米家微波炉开箱)
  • 2024-11-06米家微波炉开箱今年春节不知道各位有多少天用在清理没吃完的年夜饭上?反正评价君一度觉得泡面都变得如此香甜可口了这其中的原因一部分是因为消化剩饭菜有些艰难,另一部分则是评价君家里没有微波炉,饭菜不管是蒸熟还是回锅,外形。
  • 刚买的玩偶可以直接放到床上吗
  • 2024-11-06刚买的玩偶可以直接放到床上吗刚买的玩偶,最好不要直接放在床上刚买的玩偶,最好要进行清洗或其他的消毒杀菌处理后才放床上或给小朋友玩,因为玩偶的材料,用材和制作过程会有很多的污染,比如胶水,颜料等等,还有运输过程,包装过程等等,都会。
  • 统筹发展和安全两件大事(坚持统筹发展和安全两件大事)
  • 2024-11-06坚持统筹发展和安全两件大事近期出版的《谈治国理政》第四卷,以一系列原创性的治国理政新理念新思想新战略,科学回答了中国之问、世界之问、人民之问、时代之问,进一步丰富和发展了党的理论创新成果,是一部闪耀着马克思主义真理光芒的纲领性。
  • 地支五行相生(古代的五行生克理论)
  • 2024-11-06古代的五行生克理论五行学说,是古人将抽象的阳阴五气具体化为木火土金水五种相类似的事物现象,并以之形象地揭示阳阴五气之间的关系及其长消运动变化规律的学说古代的五行学说认为,木火土金水五行之间的关系最基本的有二种情况,即比。
  • 隔空操作怎么使用(隔空操作的配置)
  • 2024-11-06隔空操作的配置[爱卡汽车导购原创]“隔空操作”是一个被科幻小说和科幻电影无数次描述的场景,未来的人们只需在空中挥舞肢体就可以达到特定的操作而现今的汽车上,在看不见摸不着的电磁波帮助下,也越来越多地出现此类隔空操作配。
  • 鹬蚌之争 渔翁得利(鹬蚌相争渔翁得利)
  • 2024-11-06鹬蚌相争渔翁得利鹬蚌在《战国策·燕策》里记载了这样一个故事:《苏代止赵王伐燕》赵且伐燕,苏代为燕谓惠王曰“今者臣来,过易水,蚌方出曝,而鹬啄其肉,蚌合箝其喙‘鹬曰:‘今日不雨,明日不雨,即有死蚌’蚌亦谓鹬曰:‘今日不。
  • 算命先生听声识人完整版(算命先生之我身边的离奇往事2)
  • 2024-11-06算命先生之我身边的离奇往事2受农村封建思想和家庭影响,我对这些“神妈妈”和算卦先生都很敬重,宁可信其有,不可信其无,毕竟他们的行为处事还是很唬人的,在我年幼的时候就留下了深刻的印象我记得那是七八岁的时候,自己还是个傻小子啥也不懂。
  • 养生长寿秘诀和方法(年过70想要健康长寿)
  • 2024-11-06年过70想要健康长寿问题:怎么才能每天都收到这种文章呢?答案:只需要点击右上角“关注”即可年过七十就需要在养生方面趋利避害,不要误入歧途,更不要执迷不悟,争取用保养身体尽数替代损伤身体一、不要用保健品替代药品保健品不要胡。
  • 云上长安战未央副本在哪(云上长安战未央副本进入方法)
  • 2024-11-06云上长安战未央副本进入方法首先在赛利亚处领取任务-[神秘的图纸],完成对话后,即可开启五陵地区完成任务后,在赛利亚房间右侧地区选择界面,即可选择进入五陵地区了进入五陵地区后,顺着城镇一直向左,就可以看到星罗馆,在里面可以找到李。