目录

基础组件

1. TButton(按钮)

2. TLabel(标签)

3. TEdit(编辑框)

4. TMemo(多行编辑框)

5. TComboBox(组合框)

6. TCheckBox(复选框)

7. TRadioButton(单选按钮)

8. TListBox(列表框)

9. TGroupBox(分组框)

10. TPanel(面板)

11. TImage(图像)

12. TMainMenu(主菜单)

13. TPopupMenu(弹出菜单)

14. TStatusBar(状态栏)

15. TToolBar(工具栏)

16. TTrackBar(滑动条)

17. TProgressBar(进度条)

18. TUpDown(上下按钮)

19. TDateTimePicker(日期时间选择器)

20. TMonthCalendar(月历)

21. TTimer(计时器)

22. TScrollBar(滚动条)

23. TTreeView(树形视图)

24. TListView(列表视图)

25. TPageControl(页面控制)

26. TTabSheet(标签页)

27. TSplitter(分割器)

28. TShape(形状)

29. TBevel(斜面)

30. TRichEdit(富文本编辑器)

31. TScrollBox(滚动框)

32. TStaticText(静态文本)

33. TColorBox(颜色框)

34. TFontDialog(字体对话框)

35. TOpenDialog(打开文件对话框)

36. TSaveDialog(保存文件对话框)

37. TPrintDialog(打印对话框)

38. TPrinterSetupDialog(打印机设置对话框)

39. TImageList(图像列表)

40. TActionList(动作列表)

41. TPageScroller(页面滚动器)

42. TApplicationEvents(应用程序事件)

事件和事件处理器

1. 事件

2. 事件处理器

创建和使用事件处理器

步骤 1:选择组件和事件

步骤 2:自动生成事件处理器

常见事件类型

高级事件处理


基础组件

1. TButton(按钮)

  • 描述:允许用户执行动作,如提交数据或关闭窗口。
  • 常用属性Caption(显示的文本),OnClick(点击事件处理器)。

2. TLabel(标签)

  • 描述:显示不可编辑的文本,常用于描述其他控件或显示信息。
  • 常用属性Caption(显示的文本)。

3. TEdit(编辑框)

  • 描述:允许用户输入单行文本。
  • 常用属性Text(文本内容),MaxLength(最大长度)。

4. TMemo(多行编辑框)

  • 描述:允许用户输入多行文本。
  • 常用属性Lines(文本行数组),ScrollBars(滚动条类型)。

5. TComboBox(组合框)

  • 描述:结合了文本框和下拉列表,用户可以从列表中选择一个选项,也可以输入文本。
  • 常用属性Items(下拉列表的选项),Text(当前文本)。

6. TCheckBox(复选框)

  • 描述:允许用户选择一个或多个选项。
  • 常用属性Checked(是否选中),Caption(显示的文本)。

7. TRadioButton(单选按钮)

  • 描述:允许用户从一组选项中选择一个。
  • 常用属性Checked(是否选中),Caption(显示的文本)。

8. TListBox(列表框)

  • 描述:显示一个项目列表,用户可以从中选择。
  • 常用属性Items(列表中的项目),ItemIndex(选中项目的索引)。

9. TGroupBox(分组框)

  • 描述:提供一个框架来组织相关的控件。
  • 常用属性Caption(分组框标题)。

10. TPanel(面板)

  • 描述:用于组织控件或作为其他控件的容器。
  • 常用属性:无特定,主要作为布局工具。

11. TImage(图像)

  • 描述:用于显示图像。
  • 常用属性Picture(图像内容),Stretch(是否拉伸图像以适应控件大小)。

12. TMainMenu(主菜单)

  • 描述:提供应用程序的主菜单。
  • 常用属性Items(菜单项)。

13. TPopupMenu(弹出菜单)

  • 描述:提供一个在用户右击时显示的菜单。
  • 常用属性Items(菜单项)。

14. TStatusBar(状态栏)

  • 描述:在应用程序底部显示状态信息。
  • 常用属性Panels(状态栏面板)。

15. TToolBar(工具栏)

  • 描述:提供一排按钮,用于快速访问常用命令。
  • 常用属性:通常与 TToolButton 结合使用,放置具体的工具按钮。

16. TTrackBar(滑动条)

  • 描述:允许用户通过滑动选择一个值的控件。
  • 常用属性Min(最小值),Max(最大值),Position(当前位置)。

17. TProgressBar(进度条)

  • 描述:显示任务进度的控件。
  • 常用属性Min(最小值),Max(最大值),Position(当前进度)。

18. TUpDown(上下按钮)

  • 描述:提供一对上下箭头按钮,通常用于增加或减少值。
  • 常用属性Min(最小值),Max(最大值),Position(当前位置)。

19. TDateTimePicker(日期时间选择器)

  • 描述:允许用户选择日期和时间的控件。
  • 常用属性Date(选择的日期),Time(选择的时间)。

20. TMonthCalendar(月历)

  • 描述:显示一个月历,用户可以选择日期。
  • 常用属性Date(当前选择的日期)。

21. TTimer(计时器)

  • 描述:在指定的时间间隔执行代码。
  • 常用属性Interval(触发间隔,以毫秒为单位),OnTimer(触发事件)。

22. TScrollBar(滚动条)

  • 描述:提供一个标准的滚动条,用于控制内容的视图。
  • 常用属性MinMaxPosition

23. TTreeView(树形视图)

  • 描述:显示层次结构数据,如文件系统的目录结构。
  • 常用属性Items(节点集合)。

24. TListView(列表视图)

  • 描述:以列表的形式显示项目,类似于 Windows 中的文件浏览器。
  • 常用属性Items(项目集合),ViewStyle(显示风格)。

25. TPageControl(页面控制)

  • 描述:提供一个包含多个页面(TTabSheet)的控件,每个页面可以容纳其他控件。
  • 常用属性Pages(页面集合),ActivePage(当前激活的页面)。

26. TTabSheet(标签页)

  • 描述:TPageControl 的单个页面。
  • 常用属性:通常作为 TPageControl 的一部分,容纳其他控件。

27. TSplitter(分割器)

  • 描述:允许用户动态调整相邻控件的大小。
  • 常用属性:无特定,用于设计布局。

28. TShape(形状)

  • 描述:用于绘制简单的形状,如圆形、矩形等。
  • 常用属性Shape(形状类型),Brush(填充设置),Pen(边框设置)。

29. TBevel(斜面)

  • 描述:用于创建凹凸效果的矩形区域,常用于视觉分隔。
  • 常用属性Shape(形状),Style(风格)。

30. TRichEdit(富文本编辑器)

  • 描述:一个可以显示和编辑富文本格式的控件,支持不同的字体、颜色和文本格式。
  • 常用属性Lines(文本行),SelText(选中的文本),PlainText(是否纯文本模式)。

31. TScrollBox(滚动框)

  • 描述:一个可包含其他控件的容器,当内容超出其大小时提供滚动条。
  • 常用属性:无特定,主要作为容器使用。

32. TStaticText(静态文本)

  • 描述:用于显示简单的文本信息,类似于 TLabel,但具有更多样式选项。
  • 常用属性Caption(文本内容),Alignment(对齐方式)。

33. TColorBox(颜色框)

  • 描述:显示一个下拉列表,允许用户从预定义的颜色集中选择颜色。
  • 常用属性Selected(选中的颜色)。

34. TFontDialog(字体对话框)

  • 描述:提供一个标准的字体选择对话框。
  • 常用属性Font(选中的字体),Options(对话框选项)。

35. TOpenDialog(打开文件对话框)

  • 描述:允许用户选择文件或文件夹。
  • 常用属性FileName(选中的文件名),Filter(文件过滤器)。

36. TSaveDialog(保存文件对话框)

  • 描述:允许用户指定保存文件的名称和位置。
  • 常用属性:与 TOpenDialog 类似。

37. TPrintDialog(打印对话框)

  • 描述:提供一个标准的打印设置对话框。
  • 常用属性Copies(打印份数),PrintRange(打印范围)。

38. TPrinterSetupDialog(打印机设置对话框)

  • 描述:允许用户修改打印机的设置。
  • 常用属性:通常与系统打印机设置相关。

39. TImageList(图像列表)

  • 描述:用于存储图像集合,常与其他控件(如工具栏)配合使用。
  • 常用属性Images(图像集合),WidthHeight(图像尺寸)。

40. TActionList(动作列表)

  • 描述:管理应用程序的动作(如命令或操作),可以跨多个菜单项和工具栏按钮共享。
  • 常用属性Actions(动作集合)。

41. TPageScroller(页面滚动器)

  • 描述:提供一个滚动区域,可以包含多个控件,通常用于长表单或内容。
  • 常用属性AutoScroll(自动滚动),Orientation(方向)。

42. TApplicationEvents(应用程序事件)

  • 描述:用于处理整个应用程序范围内的事件,如激活、最小化、关闭等。
  • 常用事件OnActivate(激活时),OnDeactivate(失活时),OnException(异常发生时)。
unit MainForm;

interface

uses
  // 引入必要的单元
  // ...

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Edit1: TEdit;
    Memo1: TMemo;
    ComboBox1: TComboBox;
    CheckBox1: TCheckBox;
    RadioButton1: TRadioButton;
    ListBox1: TListBox;
    GroupBox1: TGroupBox;
    Panel1: TPanel;
    Image1: TImage;
    MainMenu1: TMainMenu;
    PopupMenu1: TPopupMenu;
    StatusBar1: TStatusBar;
    ToolBar1: TToolBar;
    TrackBar1: TTrackBar;
    ProgressBar1: TProgressBar;
    UpDown1: TUpDown;
    DateTimePicker1: TDateTimePicker;
    MonthCalendar1: TMonthCalendar;
    Timer1: TTimer;
    ScrollBar1: TScrollBar;
    TreeView1: TTreeView;
    ListView1: TListView;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Splitter1: TSplitter;
    Shape1: TShape;
    Bevel1: TBevel;
    RichEdit1: TRichEdit;
    ScrollBox1: TScrollBox;
    StaticText1: TStaticText;
    ColorBox1: TColorBox;
    FontDialog1: TFontDialog;
    OpenDialog1: TOpenDialog;
    PrintDialog1: TPrintDialog;
    PrinterSetupDialog1: TPrinterSetupDialog;
    ImageList1: TImageList;
    ActionList1: TActionList;
    PageScroller1: TPageScroller;
    ApplicationEvents1: TApplicationEvents;
    // 更多组件
    // ...

    // 事件处理器
    procedure Button1Click(Sender: TObject);
    // 更多事件处理器
    // ...

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  // 示例:当按钮被点击时,更改标签的文本
  Label1.Caption := '按钮被点击';
end;

// 更多事件处理器的实现
// ...

end.

事件和事件处理器

1. 事件
  • 定义:在 Delphi 中,事件是指在程序运行时发生的某种情况,通常由用户操作(如点击、键入)或程序逻辑(如时间到达)触发。
  • 组件事件:几乎所有的 VCL 组件都有事件,如 OnClickOnChangeOnMouseMove 等。
2. 事件处理器
  • 定义:事件处理器是响应特定事件的过程或函数。它定义了当事件发生时应执行的操作。
  • 创建方式:在设计视图中双击一个组件可自动生成事件处理器的框架代码。

创建和使用事件处理器

步骤 1:选择组件和事件
  • 选择你想要响应的事件类型。例如,如果你想在用户点击按钮时执行操作,你将使用 TButtonOnClick 事件。
步骤 2:自动生成事件处理器
  • 在 Delphi 的设计视图中,双击你选择的组件(如 TButton)。这将在代码编辑器中自动生成事件处理器的基本框架。

常见事件类型

  • OnClick:当用户点击组件时触发。
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('按钮被点击');
end;
  • OnChange:当组件的内容或状态改变时触发,如编辑框的文本改变。
procedure TForm1.Edit1Change(Sender: TObject);
begin
  Label1.Caption := '编辑框内容已更改为: ' + Edit1.Text;
end;
  • OnEnter:当组件获得焦点时触发。
procedure TForm1.Edit1Enter(Sender: TObject);
begin
  Edit1.Color := clYellow;  // 当编辑框获得焦点时,改变其背景颜色
end;
  • OnExit:当组件失去焦点时触发。
procedure TForm1.Edit1Exit(Sender: TObject);
begin
  Edit1.Color := clWhite;  // 当编辑框失去焦点时,恢复其背景颜色
end
  • OnKeyPress:当用户在组件上按键时触发。
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then  // #13 是回车键的 ASCII 码
    ShowMessage('按下了回车键');
end;

高级事件处理

  • 事件传递:一个事件可以从一个组件传递到另一个组件,或者由一个组件处理后再传递给默认的处理器。

        在 Delphi 中,事件传递是一个强大的特性,它允许一个事件在不同组件之间传递或在多个层级上处理。这种机制非常有用,特别是当你想要在一个组件处理事件之后,再由另一个组件进一步处理相同的事件。以下是一个简单的例子,演示如何在 Delphi 中实现事件传递。

        假设我们有两个按钮:Button1Button2。我们希望当用户点击 Button1 时,先执行 Button1 的点击事件处理器,然后再自动触发 Button2 的点击事件。

  1. 设计界面

    • 在窗体上放置两个按钮:Button1Button2
  2. 为 Button1 创建事件处理器

    • 双击 Button1 自动生成事件处理器。
    • Button1Click 事件处理器中编写代码以触发 Button2 的点击事件。
  3. 为 Button2 创建事件处理器

    • 双击 Button2 自动生成事件处理器。
    • Button2Click 事件处理器中编写响应代码。
procedure TForm1.Button1Click(Sender: TObject);
begin
  // Button1 的事件处理代码
  ShowMessage('Button1 被点击');

  // 触发 Button2 的点击事件
  Button2Click(Sender);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  // Button2 的事件处理代码
  ShowMessage('Button2 被点击');
end;

         在这个例子中,当 Button1 被点击时,它首先显示一个消息("Button1 被点击"),然后通过直接调用 Button2Click 方法来触发 Button2 的点击事件。这样,即使用户没有直接点击 Button2Button2 的点击事件也会被执行,并显示第二个消息("Button2 被点击")。

  • 动态事件处理:可以在运行时动态地为组件分配事件处理器,增加灵活性。

        动态事件处理是 Delphi 编程中一个强大的特性,它允许程序在运行时为组件动态分配事件处理器。这种方法在需要根据应用程序的状态或用户的操作来改变事件响应行为时非常有用。以下是一个使用动态事件处理的示例。

        假设我们有一个按钮 Button1 和两个不同的事件处理器:HandleButtonClick1HandleButtonClick2。我们将在运行时根据某些条件(例如,用户的选择或程序状态)决定 Button1 使用哪个事件处理器。

  1. 设计界面

    • 在窗体上放置一个按钮:Button1
  2. 编写两个不同的事件处理器

    • 这两个处理器将在用户点击按钮时执行不同的操作。
  3. 在运行时动态分配事件处理器

    • 根据程序逻辑或条件,决定 Button1 应该使用哪个事件处理器。
procedure TForm1.HandleButtonClick1(Sender: TObject);
begin
  ShowMessage('处理器 1 被调用');
end;

procedure TForm1.HandleButtonClick2(Sender: TObject);
begin
  ShowMessage('处理器 2 被调用');
end;

        接下来,在程序的某个逻辑部分(例如,在窗体的 OnCreate 事件或根据用户的某个选择),动态地为 Button1 分配事件处理器: 

procedure TForm1.FormCreate(Sender: TObject);
begin
  // 假设这里的条件是基于某些程序逻辑
  if SomeCondition then
    Button1.OnClick := HandleButtonClick1
  else
    Button1.OnClick := HandleButtonClick2;
end;

        在这个例子中,根据 SomeCondition 的值,Button1OnClick 事件将被动态地关联到 HandleButtonClick1HandleButtonClick2。这意味着当用户点击这个按钮时,将根据在窗体创建时设定的条件调用不同的事件处理器。 

  • 共享事件处理器:多个组件可以共享同一个事件处理器,例如,多个按钮可以共用一个 OnClick 事件处理器。
  1. 设计界面

    • 在窗体上放置三个按钮:Button1Button2Button3
  2. 创建共享的事件处理器

    • 创建一个事件处理器,它将被所有三个按钮共享。
  3. 为每个按钮分配相同的事件处理器

    • 在设计时或运行时,将此事件处理器分配给每个按钮的 OnClick 事件。
procedure TForm1.SharedButtonClick(Sender: TObject);
var
  Button: TButton;
begin
  if Sender is TButton then
  begin
    Button := TButton(Sender);
    ShowMessage(Button.Name + ' 被点击');
  end;
end;

        在上面的代码中,我们首先检查 Sender 是否为 TButton 类型。这是因为 Sender 参数表示触发事件的组件,而我们想要确定它确实是一个按钮。然后我们使用 TButton(Sender)Sender 转换成 TButton 类型,并显示一个包含按钮名称的消息。

        接下来,我们需要为每个按钮分配这个事件处理器。这可以在设计视图中完成,也可以通过代码完成:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Button1.OnClick := SharedButtonClick;
  Button2.OnClick := SharedButtonClick;
  Button3.OnClick := SharedButtonClick;
end;

        在 FormCreate 事件处理器中,我们将 SharedButtonClick 分配给每个按钮的 OnClick 事件。

12-20 17:28