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 即可。