用户界面设计(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:垂直居中}
编程语言无所谓高低级,唯适用罢了。语言结构再天花乱坠,富丽堂皇终不过CPU上的0和1。