第一部分:Delphi 7 基础入门
实例 1:你的第一个 Delphi 程序 - "Hello, World!"
这是学习任何编程语言的经典第一步,我们将创建一个窗口,并在点击按钮后显示一个消息框。

目标:
- 创建一个新的 Delphi 项目。
- 在窗体上放置一个按钮。
- 为按钮编写点击事件,弹出一个 "Hello, World!" 的消息框。
步骤:
-
启动 Delphi 7:
- 打开 Delphi 7 IDE (集成开发环境)。
- 选择
File -> New -> Application,这将创建一个默认的空白窗体(Form1)。
-
设计窗体:
(图片来源网络,侵删)- 在右侧的
Standard组件面板中,找到Button组件(图标是一个按钮)。 - 点击
Button组件,然后在窗体上拖动鼠标,画出一个按钮,它的默认名称是Button1。 - 选中
Button1,在对象查看器 中找到Caption属性,将其值从Button1修改为点击我。
- 在右侧的
-
编写代码:
-
双击窗体上的
点击我按钮,Delphi 会自动切换到代码编辑器,并生成一个事件处理过程:procedure TForm1.Button1Click(Sender: TObject); begin end;
-
在
begin和end;之间输入以下代码:ShowMessage('Hello, World!');ShowMessage是 Delphi 的一个标准函数,用于显示一个简单的消息框。
(图片来源网络,侵删)
-
-
运行程序:
- 按
F9键,或者点击工具栏上的绿色运行按钮。 - 程序编译并运行,你会看到一个窗口,上面有一个“点击我”的按钮。
- 点击按钮,就会弹出一个包含 "Hello, World!" 文本的消息框。
- 按
代码解释:
procedure TForm1.Button1Click(Sender: TObject);:定义一个名为Button1Click的过程,它属于TForm1类,当Button1被点击时,这个过程会被自动调用。Sender: TObject:是所有事件处理器的标准参数,代表触发该事件的控件。ShowMessage('...'):调用一个内置函数,显示一个模态消息框。
实例 2:变量、常量与基本运算
目标: 学习如何在 Delphi 中声明和使用变量、常量,并进行基本的算术运算,并将结果显示在标签上。
步骤:
-
创建新项目:
File -> New -> Application。
-
设计窗体:
- 从
Standard面板拖放两个TEdit组件(文本框)到窗体,分别命名为Edit1和Edit2。 - 从
Standard面板拖放一个TButton组件,命名为Button1,Caption设为计算。 - 从
Standard面板拖放一个TLabel组件(标签),命名为Label1,Caption设为结果:。
- 从
-
编写代码:
-
双击
计算按钮,编写如下代码:procedure TForm1.Button1Click(Sender: TObject); var num1, num2, sum: Integer; // 声明三个整型变量 pi: Real; // 声明一个实型变量 appName: String; // 声明一个字符串变量 const MaxValue = 100; // 声明一个常量 begin // 从文本框中获取值并转换为整数 num1 := StrToInt(Edit1.Text); num2 := StrToInt(Edit2.Text); // 执行加法运算 sum := num1 + num2; // 给其他变量赋值 pi := 3.14159; appName := 'Delphi 7 算法演示'; // 使用 Format 函数格式化字符串,显示在 Label1 上 Label1.Caption := Format('%s: %d + %d = %d, PI = %.2f', [appName, num1, num2, sum, pi]); end;
-
-
运行程序:
- 按
F9运行程序。 - 在
Edit1和Edit2中输入数字,10和20。 - 点击
计算按钮,Label1会显示格式化后的结果。
- 按
代码解释:
var ... begin ... end;:var块用于声明在过程中使用的局部变量。Integer,Real,String:是 Delphi 的基本数据类型。- 是赋值运算符。
StrToInt():将字符串转换为整数。Format():一个强大的函数,用于按照指定格式化字符串,类似于 C 语言的printf。
第二部分:核心组件与编程技巧
实例 3:使用 TStringGrid 创建一个简易表格
目标:
学习使用 TStringGrid 组件来显示和编辑一个二维表格数据。
步骤:
-
创建新项目:
File -> New -> Application。
-
设计窗体:
- 从
Additional面板拖放一个TStringGrid组件到窗体,默认名为StringGrid1。 - 从
Standard面板拖放一个TButton,Caption设为填充数据。
- 从
-
编写代码:
-
使用对象查看器设置
- 选中
StringGrid1,在对象查看器中找到RowCount属性,将其设为5(5行)。 - 找到
ColCount属性,将其设为3(3列)。
- 选中
-
在代码中设置
- 双击窗体空白处,在
FormCreate事件中初始化网格:procedure TForm1.FormCreate(Sender: TObject); begin StringGrid1.RowCount := 5; StringGrid1.ColCount := 3; // 设置表头 StringGrid1.Cells[0, 0] := '姓名'; StringGrid1.Cells[1, 0] := '年龄'; StringGrid1.Cells[2, 0] := '城市'; end;
- 双击窗体空白处,在
-
双击
填充数据按钮,编写代码:procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin // 填充示例数据 StringGrid1.Cells[0, 1] := '张三'; StringGrid1.Cells[1, 1] := '25'; StringGrid1.Cells[2, 1] := '北京'; StringGrid1.Cells[0, 2] := '李四'; StringGrid1.Cells[1, 2] := '30'; StringGrid1.Cells[2, 2] := '上海'; StringGrid1.Cells[0, 3] := '王五'; StringGrid1.Cells[1, 3] := '28'; StringGrid1.Cells[2, 3] := '广州'; end;
-
-
运行程序:
- 按
F9运行,你会看到一个3列5行的表格。 - 点击
填充数据按钮,表格中会填入预设的数据,你还可以直接在网格中编辑单元格内容。
- 按
代码解释:
StringGrid1.Cells[Col, Row]:用于访问或设置指定单元格的文本,注意,索引是从0开始的。FormCreate事件:在窗体创建时触发,是进行初始化工作的好地方。
实例 4:文件操作 - 读写文本文件
目标:
学习使用 TFileStream 和 TStringList 来读写文本文件。
步骤:
-
创建新项目:
File -> New -> Application。
-
设计窗体:
- 添加一个
TMemo组件(多行文本框),命名为Memo1。 - 添加两个
TButton按钮,Caption分别为读取文件和保存文件。
- 添加一个
-
编写代码:
- 双击
读取文件按钮:procedure TForm1.Button1Click(Sender: TObject); var sl: TStringList; // 使用 TStringList 来处理文本行 begin sl := TStringList.Create; // 创建 TStringList 对象 try // 假设文件名为 'C:\temp\mydata.txt',请确保该文件存在 sl.LoadFromFile('C:\temp\mydata.txt'); Memo1.Text := sl.Text; // 将文件内容加载到 Memo 中 finally sl.Free; // 释放对象,避免内存泄漏 end; end; - 双击
保存文件按钮:procedure TForm1.Button2Click(Sender: TObject); var sl: TStringList; begin sl := TStringList.Create; try sl.Text := Memo1.Text; // 将 Memo 的内容赋给 TStringList sl.SaveToFile('C:\temp\mydata_saved.txt'); // 保存到文件 ShowMessage('文件已成功保存!'); finally sl.Free; end; end;
- 双击
-
运行程序:
- 在
C:盘创建一个名为temp的文件夹,并在其中创建一个名为mydata.txt的文本文件,输入一些内容。 - 运行程序,点击
读取文件,Memo1中会显示文件内容。 - 在
Memo1中修改内容,点击保存文件,程序会在C:\temp\目录下创建一个新的文件mydata_saved.txt。
- 在
代码解释:
TStringList:一个非常方便的类,用于管理字符串列表,提供了LoadFromFile和SaveToFile等便捷方法。Create和Free:在 Delphi 中,几乎所有需要手动创建的对象(使用Create),都必须在不再使用时手动释放(使用Free),否则会造成内存泄漏。try...finally...end结构可以确保即使发生错误,Free也一定会被执行。
第三部分:数据库应用 (核心优势)
实例 5:使用 TADOTable 连接 Access 数据库
这是 Delphi 的强项之一,我们将创建一个程序来浏览和编辑一个 Microsoft Access 数据库。
准备工作:
- 创建 Access 数据库:
- 创建一个名为
db1.mdb的 Access 数据库(可以使用 Microsoft Access 或 OLE DB 创建器)。 - 在该数据库中创建一个名为
Employees的表。 Employees表结构如下: | 字段名 | 数据类型 | 说明 | | :--- | :--- | :--- | | ID | 自动编号 | 主键 | | Name | 文本 | 员工姓名 | | Department | 文本 | 部门 | | Salary | 数字 | 工资 |
- 创建一个名为
- 配置 Delphi:
- 在 Delphi 7 中,选择
Project -> Options。 - 在
Packages选项卡中,确保dbGo包被勾选(它包含了 ADO 组件)。 - 在
Forms选项卡中,确保dbAware被勾选(它使窗体数据感知)。
- 在 Delphi 7 中,选择
步骤:
-
创建新项目:
File -> New -> Application。
-
设计窗体:
- 从
dbGo(ADO) 组件面板中,拖放以下组件到窗体:TADOConnection:命名为ADOConnection1。TADOTable:命名为ADOTable1。TDataSource:命名为DataSource1。
- 从
Data Controls组件面板中,拖放以下数据感知控件:TDBEdit:用于编辑字段。TDBComboBox:用于下拉选择。TDBGrid:用于表格显示。TDBNavigator:用于浏览记录。
- 组件关联:
- 选中
ADOConnection1,在对象查看器中设置ConnectionString属性,点击Build...按钮,选择Microsoft Jet 4.0 OLE DB Provider,然后选择你创建的db1.mdb文件。 - 选中
ADOTable1,设置Connection属性为ADOConnection1,设置TableName属性为Employees。 - 选中
DataSource1,设置DataSet属性为ADOTable1。 - 选中所有
DB开头的控件(如DBEdit1),设置它们的DataSource属性为DataSource1,并分别设置DataField属性为Name,Department,Salary等。 - 将
DBNavigator1的DataSource也设置为DataSource1。
- 选中
- 从
-
编写代码:
-
双击窗体空白处,在
FormCreate事件中连接数据库并打开表:procedure TForm1.FormCreate(Sender: TObject); begin // 尝试连接,如果连接字符串为空则提示 if ADOConnection1.ConnectionString = '' then begin ShowMessage('请先在 ADOConnection1 中设置连接字符串!'); Exit; end; try ADOConnection1.Connected := True; // 打开连接 ADOTable1.Active := True; // 打开表 except on E: Exception do ShowMessage('连接数据库失败: ' + E.Message); end; end;
-
-
运行程序:
- 按
F9运行程序。 - 程序会自动连接到
db1.mdb并显示Employees表的内容。 - 你可以使用
DBNavigator来浏览、添加、删除和修改记录。 - 修改
DBEdit或DBGrid中的数据,更改会自动保存到数据库中(因为ADOTable1的Active属性为True,它处于自动提交模式)。
- 按
代码解释:
- 数据感知控件:这些
DB开头的控件能自动与数据源(DataSource)关联,并显示、编辑当前记录的相应字段。 - 组件链:
ADOTable1(数据集) ->DataSource1(数据源) ->DBEdit1(显示控件),数据流从上到下传递。 ADOConnection1.Connected := True:建立与数据库的物理连接。ADOTable1.Active := True:打开数据集,使其可以访问数据。
第四部分:进阶与实用技巧
实例 6:多窗体编程
目标: 学习如何在主窗体中打开一个子窗体,并进行数据交互。
步骤:
-
创建主窗体:
File -> New -> Application,窗体名为Form1。- 在
Form1上放一个按钮Button1,Caption为打开子窗体。
-
创建子窗体:
File -> New -> Form,会创建一个新的窗体Form2。- 在
Form2上放一个TEdit(Edit1) 和一个TButton(Button2),Button2的Caption为返回值。
-
编写代码:
- 主窗体 (
Form1) 代码:// Button1 的点击事件 procedure TForm1.Button1Click(Sender: TObject); var frm2: TForm2; // 声明一个 Form2 类型的变量 begin frm2 := TForm2.Create(Self); // 创建 Form2 的实例 try if frm2.ShowModal = mrOk then // 以模态方式显示 begin // 如果用户点击了 Form2 的 "确定" 按钮 (mrOk) ShowMessage('子窗体返回的值是: ' + frm2.Edit1.Text); end; finally frm2.Free; // 关闭后释放子窗体 end; end; - 子窗体 (
Form2) 代码:- 在
private部分添加一个方法,用于返回值:// 在 Form2 的 interface 部分的 type 下 public function GetEditText: string;
- 在
implementation部分实现这个方法:function TForm2.GetEditText: string; begin Result := Edit1.Text; end;
- 为
Button2的OnClick事件编写代码:procedure TForm2.Button2Click(Sender: TObject); begin ModalResult := mrOk; // 设置模态结果为 mrOk Close; // 关闭窗体 end;
- 在
- 主窗体 (
-
运行程序:
- 运行
Form1。 - 点击
打开子窗体,Form2出现。 - 在
Form2的Edit1中输入一些文字,如 "你好,主窗体!"。 - 点击
返回值按钮,Form2关闭,Form1的消息框会显示你输入的文字。
- 运行
代码解释:
TForm2.Create(Self):创建Form2的一个实例。Self表示所有者是Form1,这有助于在窗体间正确管理内存。ShowModal:以模态方式显示窗体,会阻塞父窗体,直到子窗体关闭。ModalResult:一个属性,用于设置窗体的返回值,常用值有mrOk(确定),mrCancel(取消),mrNone(无) 等。mrOk:是ModalResult的一个预定义常量,表示用户点击了确定。
总结与学习建议
- 勤动手:不要只看代码,一定要亲手创建每一个实例,修改参数,观察结果。
- 善用帮助:Delphi 7 自带的帮助文档非常强大,选中任何组件、属性或方法,按
F1键即可查看详细说明。 - 理解事件驱动:Delphi 是事件驱动的,理解哪个控件在什么情况下会触发哪个事件,是掌握 Delphi 的关键。
- 学习 VCL 框架:深入理解
TComponent,TControl,TWinControl等类的继承关系,会让你对组件有更深刻的认识。 - 从简单到复杂:先掌握单窗体的基本操作,再学习多窗体、文件、数据库,最后挑战网络和自定义组件。
虽然 Delphi 7 已经比较老旧,但其核心的 VCL 框架和 Pascal 语言思想至今仍有很强的生命力,通过学习 Delphi 7,你可以打下坚实的桌面应用程序开发基础,祝你学习愉快!
