Lazarus Form按代码调整大小

时间:2017-07-11 19:13:00

标签: forms lazarus freepascal

在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.但是该更改未反映在表格的实际高度。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

在formresize中做事情变得棘手,你正在改变一些可能引发调整大小事件本身的东西,这可能是,痒痒?

无论如何,只需将minheight和maxheight设置为200,这应该可以解决问题。