zoukankan      html  css  js  c++  java
  • 用户界面设计(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:垂直居中}
  • 相关阅读:
    Java核心技术 卷一 笔记四 库类的直接使用
    Java核心技术 卷一 笔记三 大数值及数组
    Java核心技术 卷一 笔记2 字符串的复制
    Java核心技术 卷一 笔记1
    修改css 样式后, hover事件 不生效
    修改 element ui input 输入框 样式不生效问题
    css3 计算属性
    Vue3 改动系列
    浏览器实现,向下滑动 鼠标滚轮,页面横向移动
    linux ceont0s7 vue 打包压缩图片 一直报错
  • 原文地址:https://www.cnblogs.com/fansizhe/p/12764990.html
Copyright © 2011-2022 走看看