unit Unit1;
// 单元声明(必须与文件名一致)
// 例如:文件保存为 Unit1.pas,这里就必须是 unit Unit1;
{$mode objfpc}{$H+}
// 编译器指令(类似C语言的宏定义)
// {$mode objfpc} → 启用对象Pascal扩展语法(类、继承等面向对象特性)
// {$H+} → 使用长字符串(默认设置,支持超过255字符的字符串)
interface
// 【接口部分开始】
// 这里声明的内容可以被其他单元访问(相当于公开的API)
uses
// 引用其他单元(类似C的#include或Java的import)
// 注意:Lazarus会自动添加窗体设计器需要的单元
Classes, // 基础类(包含TComponent等核心类)
SysUtils, // 系统工具(含文件操作、字符串处理等函数)
Forms, // 窗体核心(TForm类和相关功能)
Controls, // 控件基类(所有可视化控件的父类)
Graphics, // 绘图相关(画布、字体、颜色等)
Dialogs, // 对话框(ShowMessage、InputBox等)
StdCtrls; // 标准控件(按钮、输入框等)
const
// 【公开常量声明】
// 其他单元通过 Unit1.常量名 访问
MAX_RETRY = 3; // 最大重试次数
APP_NAME = '我的应用'; // 应用程序名称
type
// 【类型声明】
// { TForm1 } 是Lazarus特殊标记,关联窗体设计器(不要删除!)
{ TForm1 }
TForm1 = class(TForm) // 主窗体类(继承自TForm)
// ▼▼▼ 控件声明(由Lazarus自动生成,与窗体设计器同步)▼▼▼
Button1: TButton; // 按钮控件
Edit1: TEdit; // 文本输入框
// ▲▲▲ 不要手动修改这些声明(设计器会自动维护)▲▲▲
// ▼▼▼ 事件处理方法声明 ▼▼▼
procedure Button1Click(Sender: TObject); // 按钮点击事件
private
// 【私有成员】
// 仅限本单元内部使用(其他单元即使引用本单元也无法访问)
// 命名建议:字段以F开头,例如 FUserName
// 当前 .pas文件 所有位置都可以使用,其他单元 即使 uses 了当前单元,也不能使用
FUserName: string; // 用户名
FLoginCount: Integer; // 登录次数计数器
procedure InternalCheck; // 内部校验方法(外部不可调用)
// 用途:校验用户输入合法性
// 调用条件:仅在数据提交前调用
// 异常:可能抛出EInvalidInput
public
// 【公共成员】
// 其他单元可通过 Unit1.Form1.成员名 访问
// 当前 .pas文件 可以使用,以及 其他单元 uses 了当前单元 也可以使用
procedure SaveSettings; // 保存配置方法
property UserName: string read FUserName write FUserName; // 用户名属性
end;
var
// 【全局变量声明】
// 当前单元所有代码均可访问(慎用全局变量!)
Form1: TForm1; // 主窗体实例(Lazarus自动创建)
b : String; // 全局字符串变量B,在当前 .pas文件 的所有代码部分可使用
implementation // 实现部分开始
// 【实现部分】
// 包含具体的代码实现
const // 私有常量声明
// 【私有常量】
// 仅限本单元内部使用
K: set of char = ['A'..'Z', 'a'..'z', '0'..'9']; // 合法字符集
SECRET_KEY = 'ABC123'; // 加密密钥(外部不可见)
{$R *.lfm}
// 特殊指令:链接Lazarus窗体资源文件(.lfm)
// 重要:必须保留!否则窗体设计会丢失
{ TForm1 }
// 类方法实现
procedure TForm1.Button1Click(Sender: TObject);
// 按钮点击事件处理
// 参数 Sender 表示触发事件的对象(可用于区分多个按钮)
begin
if Edit1.Text <> '' then
begin
ShowMessage('你好:' + Edit1.Text);
FUserName := Edit1.Text; // 保存到私有字段
end;
end;
procedure TForm1.InternalCheck;
// 私有方法示例(外部无法调用)
begin
// 校验逻辑...
end;
initialization
// 【初始化代码】
// 程序启动时自动执行(适合初始化全局资源)
Randomize; // 初始化随机数种子
finalization
// 【终结代码】
// 程序退出时自动执行(必须释放初始化分配的资源)
if Assigned(GlobalConfig) then
GlobalConfig := ''; // 清理全局变量
end.
本文由 减速带 niecu.com 提供

4168

被折叠的 条评论
为什么被折叠?



