专业编程基础技术教程

网站首页 > 基础教程 正文

「8.基本窗体设计」1.窗体组件

ccvgpt 2024-08-27 13:36:41 基础教程 10 ℃

1.窗体组件

在Delphi中,窗体组件是一个容器组件,所有其他组件都要放到该组件中。

1.1窗体的属性

窗体的主要属性:

「8.基本窗体设计」1.窗体组件

  • Align

设置窗体在屏幕上的排列位置。其取值中,alClient - 表示使窗体占整个屏幕。

  • AutoScroll

当内容不能完全显示时,是否出现滚动条。

  • AlphaBlend

设置窗体是否透明显示。

  • AlphaBlendValue

设置窗体的透明度,0-完全透明,255-完全不透明。

  • BorderIcons

设置标题栏的系统按钮,可以定义显示系统菜单、最大化、最小化、帮助按钮。

  • BorderStyle

设置窗体边框和标题栏的显示风格。该属性的取值会影响 BorderIcons属性的设置。

  • FormStyle

设置窗体的风格,其中:fsMDIChild / fsMDIForm 用于定义MDI窗体。

  • Visible

设置窗体的可见性。

  • Icon

设置窗体的标题栏图标。

  • WindowState

设置窗体在屏幕上的显示,可以是正常、最小化、最大化。

窗体的属性可以在 Object Inspector 中设置,也可以在运行时动态调整。

示例:通过按钮来控制窗体的属性。界面设计如下图:

滚动条组件属性设置:

组件

属性

透明度滚动条

min | max

150 | 255

垂直滚动条

min | max

200 | 600

水平滚动条

min | max

300 | 800

代码如下:

procedure TForm1.Button1Click(Sender: TObject);
begin
  // 色彩
  if Form1.Color = clYellow then
    Form1.Color := clBlue
  else
    Form1.Color := clYellow;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  // 标题
  if length(Edit1.Text) > 0 then
    Form1.Caption := Edit1.Text
  else
    ShowMessage('请设置窗口标题!');
end;

procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
  // 透明度
  Form1.AlphaBlend := true;
  Form1.AlphaBlendValue := ScrollBar1.Position;
end;

procedure TForm1.ScrollBar2Change(Sender: TObject);
begin
  // 宽度
  Form1.Width := ScrollBar2.Position;
end;

procedure TForm1.ScrollBar3Change(Sender: TObject);
begin
  // 高度
  Form1.Height := ScrollBar3.Position;
end;

1.2窗体的方法

窗体的常用方法:

  • Close

关闭窗体。

  • Hide

隐藏窗体

  • Release

释放窗体,与 Free() 方法类似,该方法要等到窗体的所有事件或窗体中各组件的事件全部执行完毕才会释放窗体。

1.3 窗体的事件

常用的窗体事件:

  • OnActivate

当应用程序窗体成为当前活动窗体时发生。对于MDI子窗体,只有在各个子窗体之间切换时,才会触发子窗体的该事件,如果从一个非MDI窗体切换到MDI窗体时,只触发MDI父窗体的该事件。

  • OnCanResize

当窗体的大小发生改变时触发。

  • OnClose

当窗体被关闭时触发。

  • OnCloseQuery

当窗口关闭时触发,该事件包含一个CanClose参数,用于表示是否关闭窗口,默认值为True,将该参数设置为False可以阻止关闭窗体。

  • OnCreate

在窗体创建时触发。一般在该事件中完成各种初始化工作,需要注意:在该事件中不要引用窗体中的组件,因为窗体还没有创建完成。

  • OnDestroy

当窗体被关闭时触发,如果调用了窗体的Destroy、Free或Release方法,窗体及子窗体将被释放。

  • OnPaint

当Windows系统要求重新绘制窗体时触发。

  • OnResize

当用户或者程序调整窗口的尺寸时发生。

  • OnShow

当窗体被显示时发生。

  • OnKeyDown

键盘按下时触发。

  • OnKeyPress

当窗体获得键盘输入焦点,且用户敲击键盘时触发。

  • OnKeyUp

当放开键盘时触发。

  • OnClick

鼠标单击时触发。

  • OnDblClick

鼠标双击时触发。

  • OnDrag|Drop

当鼠标在窗体中拖放时触发。

  • OnDragOver

当鼠标在窗体中拖过时触发。

  • OnMouseDown

鼠标按下时触发。

  • OnMouseMove

鼠标在窗体中移动时触发。

  • OnMouseUp

鼠标被释放时触发。

示例:检测鼠标和键盘操作,并在关闭窗体时询问是否关闭。界面设计如下:

图1:

图2:

示例代码如下:

procedure TForm1.FormClick(Sender: TObject);
begin
  // 单击
  Label1.Caption := '您单击了鼠标 ...';
end;

procedure TForm1.FormDblClick(Sender: TObject);
begin
  // 双击
  Label1.Caption := '您双击了鼠标 ...';
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  // 按键
  Label1.Caption := '您按下了键:' + key;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
  ret: Word;
begin
  ret := MessageDlg('确实要关闭吗?', mtConfirmation, [mbOk, mbCancel], 0);
  if ret = mrCancel then
    CanClose := false
  else
    CanClose := true;
end;

Tags:

最近发表
标签列表