Lazarus窗口程序技巧

1. 窗口显示、关闭
注意:当前窗口的属性与方法可以直接使用,不用使用form.格式
close;
会直接关闭本窗口
form2.close会关闭其它窗口
Caption := 'abc'
会修改本窗口的名称

ShowMessage('fdsa');
//直接显示消息提示,提示窗口标题是项目名称

2. unit间共用变量(全局变量)
unit1中的var增加:
Const i : integer = 5;
unit2中可以直接使用,如
IntToStr(i)

3. 设置主窗口(使用其它窗口作为主窗口)
项目选项——窗口
在自动创建窗口中,将要设置为主窗口的form移动到最上方(最上方的为启动的时候启动的窗口)

4. 改变窗口启动方式
不用在项目启动时启动所有窗口(包含不显示的)
可以打开项目的lpr文件,删除或注释以下语句(以form2为例)
//Application.CreateForm(TForm2, Form2);
在需要显示的事件插入以下代码
Form2:=TForm2.Create(Nil); //Form2 is created
Form2.ShowModal; //Form2 is displayed
窗口会被建立、显示,关闭后需要释放
FreeAndNil(Form2); //回到上一级窗口再释放
注意:

5. 动态创建窗口
示例代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
MyForm: TForm;//定义窗口
MyButton: TButton;//定义按钮
begin
MyForm:=TForm.Create(nil); //创建窗口
MyForm.SetBounds(100, 100, 220, 150); //窗口打开在屏幕上x、y位置,然后是窗口的长和高
MyForm.Caption:='My dynamic created form'; //窗口的标题栏命名

MyButton:=TButton.create(MyForm); //窗口上建立按钮
MyButton.Caption:='Close my form'; //按钮的名称
MyButton.SetBounds(10, 10, 200, 30); //按钮在窗口上的xy位置,长和高数据
MyButton.Parent:=MyForm; //parent指的是显示这个按钮控件的控件,TControl必须有一个Parent,否则它永远不会显示。

MyButton.OnClick:=@MyButtonClick; //按钮增加点击方法,这里会报错,需要增加对事件的定义和说明

MyForm.ShowModal; //窗口显示

FreeAndNil(MyForm); //关闭窗口返回后释放
end;

//以下是给新建窗口中按钮的定义和说明
1. 创建私有声明
{ TForm1 }

TForm1 = class(TForm)
...
private
procedure MyButtonClick(Sender: TObject);//增加声明
public
...
end;
2.鼠标点击MyButtonClick后按ctrl+shift+C,生成事件代码
procedure TForm1.MyButtonClick(Sender: TObject);
begin

end;
在其中加入语句
Showmessage('Attention, closing my dynamically created form!');
if Sender is TButton then
TForm(TButton(Sender).Parent).Close;
点击时先弹出提示窗口,然后检测按钮sender,form关闭,根据sender检测存放这个控件的控件(就是MyForm),关闭,并且返回主窗口后还有FreeAndNil(MyForm),完全释放出来。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注