百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

深入了解Delphi 7中的四种消息框

feilongw 2025-04-15 15:31 9 浏览

编程金钢钻,我爱Delphi(四)

各位小白,请允许我这样称呼你哦,因为本人所写的系列文章确实是给初学者看的。今天我们聊聊程序结构及语言特色。

当我们打开Delphi新建一个Windows程序时,Delphi会弹出一个窗口,我们改名为Form_main,保存时,假如我们命名为main(此名称不能和窗口的名称相同)单元,会给我们建立相应的两个文件:main.dfm和main.pas。前者是Delphi是保存窗口属性以及以后放在窗口中的控件的各种属性的文件,为二进制文件,不可编辑。后者才是存储我们的程序代码的文件。也就是说,一个窗口会对应两个文件。一般说来,一个窗口也是一个基本的模块,所以一个模块就应该两个文件。在IDE编程环境中,用F12键可以切换代码编程窗口和图形编程窗口。

在流行的可视化,也就是图形编程模式下,一般我们编程,都是先想好功能,然后设计好图形界面,最后后再编程实现各个按钮的功能。

在前期,我们做过一个例子程序,现在打开它,然后按F12键进入代码窗口,就可以看到Delphi的一个窗口的代码程序结构:


unit main;

interface

uses

Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;


type

Tfrm_main = class(TForm)

bt_test: TButton;

procedure bt_testClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;


var

frm_main: Tfrm_main;


implementation


{$R *.dfm}


procedure Tfrm_main.bt_testClick(Sender: TObject);

begin

showmessage(inttostr(frm_main.Width));

end;


end.

从上到下依次说:

1、关键字unit 后面就是本单元的名称。这里不能手工修改的,在右上角的工程里可以修改。新版本才有。Delphi7以前是不可以修改的。

2、接着是interface,表示接口,如果定义了接口,也许是放在这里吧,本人没有用过,所以这里从来没有见过有什么变化。

3、uses区,是本单元要引用到的其它单元文件,这里很重要,以后我们要用到其它单元的函数过程,必须把该单元的名称放在这里。

4、type区,直到第一个end;结束,这里定义了我们的窗口类,Tfrm_main = class(TForm)表示我们窗口的类是一个从TForm继承下来的类,类名叫Tfrm_main,bt_test: TButton;表示其中有一个按钮成员bt_test,是TButton类型。procedure bt_testClick(Sender: TObject);则是该按钮的响应Click(单击)的事件的申明。

5、private区是窗口类的私有申明区,public是公有申明区。位于私有区的申明的函数过程只有本单元可以访问。

6、var区是本单元的公有变量申明区,记住这和前面的public区不同,位于public区的变量必须在窗口对象建立和才能访问,而var区则不是,只要引用了该单元,就可以访问,所以也叫全局变量区。本例子中,只申明了frm_main的变量,类型就是前面定义的Tfrm_main。

7、implementation区,{$R *.dfm}为编译提示,暂时不用管。

8、函数过程代码区。本例只有一个过程:

procedure Tfrm_main.bt_testClick(Sender: TObject);

begin

showmessage(inttostr(frm_main.Width));

end;

这就是前面按钮申明的bt_testClick的实现方式,记住这里的事件前面加了类名Tfrm_main,表明它是一个窗口类的成员函数。为了说明局部变量,我改了一下本函数为如下:

procedure Tfrm_main.bt_testClick(Sender: TObject);

var

s:string;

begin

s:='您好';

showmessage(s+inttostr(frm_main.Width));

end;

这里的var区里定义的变量和前面的不同,是局部变量,只有本函数或者过程才能访问。

大家看这里不难看出,Delphi的函数或者过程是以begin开头,end;结束,一块一块的。

之所以为初学者仔细讲解程序结构,是为了以后的方便编程。后面我们的代码申明在哪里,是有讲究的。

frm_main.Width是访问窗口的宽度属性,大家也看到,frm_main是对象名称,不是类名,然后跟着一个圆点,然后是属性名称,就可以了,这非常方便,看起来很自然,大家和C++那种->符号对比一下,就觉得其好简洁。所以说,Delphi编程语言最大的特色就是简洁易懂,没有C++那种+=和=+这样容易搞昏头的写法。说到这,还没有讲到这语言是什么啊,就是Pascal语言,“Delphi这个名字源于古希腊的城市名。它集中了第三代语言的优点。以Object Pascal为基础,扩充了面向对象的能力,并且完美地结合了可视化的开发手段。

(1)Pascal语言结构严谨,可以很好地培养一个人的编程思想。

(2)Delphi是一门真正的面向对象的开发工具,并且是完全的可视化。

(3)Delphi使用了真编译,可以让你的代码编译成为可执行的文件,而且编译速度非常快。

(4)Delphi具有强大的数据库开发能力,可以让你轻松地开发数据库。”来自于百度。

而现在的程序,哪个不需要用到数据库做信息存储查询呢?所以,大家要想做程序,Delphi是上手最快 ,编程最快的。

说到这里,了解一点面向对象的知识就知道,程序只定义了窗口类,并没有生成窗口对象的frm_main的语句啊,怎么程序就可以访问其属性了呢?大家右击一下位于右上解工程窗口里的test1.exe,在弹出的窗口里点一下最下边的Options菜单,就打开工程属性窗口:

再点Application下面的Forms菜单,右边就会出现Forms页,其中Main_form下拉框是定义本程序的启动窗口,如果有多个窗口,这里可以选择其它。

下面的左边Auto_create forms表示Delphi自动生成的窗口,大家可以看到有frm_main窗口,说明是我们之所以能访问,是因为Delphi已经帮我们生成了。那么,如果系统有几十个窗口呢?如果都由Delphi自动生成,那么程序启动就很慢,也占用了很多系统资源,也没有那个必要,最合适的是由程序自己在调用的时候才生成。那这样方式我们读如何做呢?

请听下回分解吧?

相关推荐

java-verbose是什么意思 java -verbose

灵魂拷问:为什么short、byte会被提升为int?boolean到底多大?为什么short、byte会被提升为int?在学习Java语法的时候,知道short、byte、byte类型在做运...

Android Hanlder 揭密之路- 深入理解异步消息传递机制Looper、Handler、Message三者关系

Handler知识点梳理:Handler、Looper以及Message三者之间的关系前言Handler、Looper以及Message之间的关系,概括性来说,Looper负责的是创建一个Me...

csdn freemarker jquery 预览word

高质量人才助推高质量发展——西安市高新区“精益创业带动就业示范行动”系列活动西安市高新区“精益创业带动就业示范行动”系列活动已于8月日在高新区软件新城正式启动。本周五(8月日)上午点分,系列活动之“直...

android 修改菜单menu背景

教你把手机的状态栏和通知栏改造成安卓L风格说道颜值,就得吐槽一下安卓及一下的版本了。原生真的是丑,丑到没朋友。到了安卓,谷歌终于大刀阔斧的对安卓的颜值进行了大动刀。【下拉通知栏】那么,安卓有没有办法搞...

DCDC架构中 dcdc类型(dcdc的主要作用)

DC-DC工作原理,看完你就懂了上篇文章说了LDO的原理,那本篇就来说一下DCDC的工作原理吧。开关电源:是一种高频化电能转换装置,其主要利用电力电子开关器件(如晶体管、MOS管、可控晶闸管等),通过...

getPath(),getAbsolutePath(),getCanonicalPath() 区别

java获取文件路径1.前言Java开发中我们经常要获取文件的路径,比如读取配置文件等等。今天我们就关于文件的路径和如何读取文件简单地探讨一下。2.文件的路径文件的路径通常有相对路径与绝对...

android 多任务键app后台重新唤起生命周期 安卓任务管理器快捷键

好用的备忘录待办提醒APP任务管理工具怎么选?在这个信息高速流通的时代,选择一款合适的任务管理应用变得尤为关键。一个好的任务管理工具不仅能帮助我们更好地规划时间、提升效率,还能在快节奏的生活中保持条...

android数据包下载地址 数据包apk

《地牢猎手5》安卓怎么下载APK数据包下载万众期待的地牢猎手5终于推出啦,此次Gameloft在安卓平台首发推出,不过目前谷歌商店还未提供正式下载数据包,不过不用担心,蚕豆网小编为大家带来了地牢猎手...

51c大模型~合集24(c5.0模型)

北大校友打造的个智能体「我的世界」,背后原理揭晓了!来源:量子位北大校友打造的个智能体「我的世界」,背后原理揭晓了!团队全新公开页技术报告,详尽解密AI智能体如何产生专业化分工、社交互动、甚至传播虚拟...

ao3archive of own our如何使用

肖战ao3事件始末揭秘ao3是啥意思肖战粉丝举报AO3为什么惹众怒3月4日凌晨2时分,肖战工作室再次发表声明:肖战海外社交账号已无法正常登陆,任何更改均非本人及工作人员操作,后续动作均与肖战本人无关...

ansible变量运算 ansible查看变量的命令

Python中的Ansible库在Python中集成Ansible功能,主要通过以下两种方式实现,结合官方库和核心API可满足不同场景的自动化需求:一、AnsibleRunner库Ansible官方...

25个简单shell例子(shell实例讲解)

shell编程其实真的很简单(一)如今,不会Linux的程序员都不意思说自己是程序员,而不会shell编程就不能说自己会Linux。说起来似乎shell编程很屌啊,然而不用担心,其实shell编程真的...

ByConity ELT 测试体验

字节跳动开源云原生数仓引擎ByConity技术详解与应用导读本文介绍字节跳动开源的云原生数仓引擎,ByConity。主要包含四个主题:1.ByConity产生背景2.ByConity设计...

45个小众而实用的NLP开源字典和工具

从算法到产品:NLP技术的应用演变文章回顾了近几年NLP的发展历程,从项目实施的两个阶段中带我们梳理了NLP技术的应用演变。第一个与大家分享的Case,基于NLP展开。分为3个部分,分别是NLP的发展...

[美国]《速度与激情6》[HD-RMVB.1024x576.中英双字][2013年动作]

安利电影。爱情:不良教育里克(费雷o马丁内兹饰)和伊格莱西奥(弗朗西斯科o拜奥拉饰)是教会学校的同学,更是一对同性恋人。学校的莫雷神父以留下恩里克为诱饵占有了伊格莱西奥,但最终恩里克还是离开了教会...