• 用户界面设计(4)- 窗体的控制


    1、限制窗体的大小

    在设计窗体界面时有时会想让窗体的大小只限于一定的范围内,窗体的constraints属性可以用于控制窗体的大小。

    该属性本身是一个类的对象,这个类主要由四个属性组成。

    示例:

    begin
      Self.Constraints.MinWidth:= 400;
      Self.Constraints.MinHeight:= 300;
      Self.Constraints.MaxWidth:= 800;
      Self.Constraints.MaxHeight:= 600;
      with Self.Constraints do
      begin
        MinWidth:= 400;
        MinHeight:= 300;//窗体的高度宽度最小值控制
        MaxWidth:= 800;
        MaxHeight:= 600;//最大值控制
      end;
    end;

    2、窗体的动态创建

    我们一般建立新的工程时就会同时创建窗体,一般来说天添加新的窗体时我们不用考虑窗体是如何创建的,不过有时候满足不了编程的需求,此时就需要动态创建窗体。

    var
      Frm:Tform;
      Mo:Tmemo;
    begin
      Frm:=Tform.Create(application);
      Frm.Width:=800;
      Frm.Height:=500;//动态创建窗体
      Frm.Caption:= '动态创建的窗体标题';
    
      mo:=Tmemo.Create(frm);
      mo.Align:=alClient;
      mo.ScrollBars:=ssVertical;
      mo.Parent:=frm;
      frm.Position:=poScreenCenter;//窗体的POsition属性可以指定窗体位置
      {Poistion取值:poScreenCenter:屏幕中央、poDesktopCenter:桌面中央、poMainFormCenter:工程主窗体中央、poDesigned:设计时的位置显示}
      frm.ShowModal;
      freeandnil(frm);
    end;

    3、窗体关闭时显示提示窗体

    很多时候在程序主窗体关闭时都会有提示框,这个提示框会提示是否关闭程序或是备份数据之类的。我们就可以根据Action 参数来判断用户的操作。

    先看下窗体的onClose事件定义:

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    
    TCloseEvent = procedure(Sender: TObject; var Action: TCloseAction) of object;
    
    TCloseAction = (caNone, caHide, caFree, caMinimize);

    示例:

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      if Application.MessageBox('是否要关闭程序','程序关闭提示',MB_OKCANCEL
      + MB_ICONINFORMATION) = IDOK then
      begin
        Action:= caFree;
      end
      else
      Action:= caNone;
    end;

    4、窗体被关闭前触发OnCloseQuery事件

    procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      {可以看出参数CanClose是个布尔值,为true时允许窗体被关闭,反之不允许。
      可以参考上面的例子使用对话框来判断是否允许关闭。}
      Button1.Free;
    end;

    5、窗体之间的引用

    使用Alt+F11可打开选择单元对话框

    6、多窗体间的数据传递

    多窗体间的数据传递是指窗体的组件或变量的传递,主要有两种方法:

    (1)通过窗体类进行数据传递:

    uses
      Unit2;//引用
    begin
      Form1.Edit1.Text:= Form2.Edit1.Text;通过窗体类
    end;

    (2)通过在本单元定义全局变量进行数据传递:

    var
      Form1: TForm1;
      Name: string;//本单元定义好全局变量后,其他单元引用本单元后就可以访问该变量。

    7、组件的锁定

    当窗体设计完成后,以防误操作,可以将窗体上的组件位置锁定不变,Edit-->Lock Controls命令。再次操作解锁。

    8、组件的对齐

    edit-->Align命令,打开Alignment对话框,如下“

    {水平选项:                         垂直选项:
      No change:没有任何改变             No change:没有任何改变
      Left sides:左侧对齐                Tops:顶端对齐
      Centers:居中对齐                   Centers:居中对齐
      Right sides:右侧对齐               Bottoms:底端对齐
      Space equally:空格间距相等         Space equally:空格间距相等
      Center in window:水平居中          Center in window:垂直居中}
  • 相关阅读:
    Anaconda设置虚拟环境并打包exe
    [转]Anaconda, conda, pyenv, virtualenv的区别
    [闲记]2020-2-13
    集合笔记
    Python_列表(list)
    LeetCode 1711. 大餐计数 做题小结
    LeetCode 242. 有效的字母异位词 做题小结
    GitHub Actions教程 使用selenium自动化
    LeetCode 5641. 卡车上的最大单元数 做题小结
    git 批量删除文件夹和文件
  • 原文地址:https://www.cnblogs.com/fansizhe/p/12764990.html
Copyright © 2020-2023  润新知