Lazarus Form 通过代码调整大小
Lazarus Form resize by code
在 Arch Linux 上,使用 Lazarus 1.6.4,我试图保持表单的高度不变。
下面的代码是一个最小的例子:
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;
type
{ TForm1 }
TForm1 = class(TForm)
procedure FormDblClick(Sender: TObject);
procedure FormResize(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
h : Integer;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormDblClick(Sender: TObject);
begin
ShowMessage(h.ToString);
end;
procedure TForm1.FormResize(Sender: TObject);
begin
h := Form1.Height;
Form1.Height:=200; //please note this line
end;
end.
如果我注释掉标记的行,我可以通过双击它来查看表格高度的变化。
但是,如果标记线存在,则表单仍会更改其高度,但不会返回到 200。双击 from 显示表单高度已更改为 200。但该更改不是反映在表格的实际高度上。
我做错了什么?
在 formresize 中做事情变得棘手,而您正在更改可能会触发 resize 事件本身的东西,这可能是棘手的?
无论如何,只需将 minheight 和 maxheight 设置为 200 即可。
在 Arch Linux 上,使用 Lazarus 1.6.4,我试图保持表单的高度不变。
下面的代码是一个最小的例子:
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;
type
{ TForm1 }
TForm1 = class(TForm)
procedure FormDblClick(Sender: TObject);
procedure FormResize(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
h : Integer;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormDblClick(Sender: TObject);
begin
ShowMessage(h.ToString);
end;
procedure TForm1.FormResize(Sender: TObject);
begin
h := Form1.Height;
Form1.Height:=200; //please note this line
end;
end.
如果我注释掉标记的行,我可以通过双击它来查看表格高度的变化。
但是,如果标记线存在,则表单仍会更改其高度,但不会返回到 200。双击 from 显示表单高度已更改为 200。但该更改不是反映在表格的实际高度上。
我做错了什么?
在 formresize 中做事情变得棘手,而您正在更改可能会触发 resize 事件本身的东西,这可能是棘手的?
无论如何,只需将 minheight 和 maxheight 设置为 200 即可。