Delphi可调整大小的bsDialog窗体?

3

我如何创建一个带有BorderStyle bsDialog 的表单(ShowModal),但仍然可以调整大小并具有关闭按钮(没有图标、最小化、最大化)?

我不需要显示大小调整手柄。

2个回答

5

这是我的解决方案,看起来工作得很好:

type
  TForm2 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
  protected
    procedure CreateWnd; override;
    procedure CreateParams(var Params: TCreateParams); override;
  public
  end;

var
  Form2: TForm2;

implementation

{$R *.DFM}

procedure TForm2.FormCreate(Sender: TObject);
begin
  BorderIcons := [biSystemMenu];
  BorderStyle := bsSizeable;
  AutoScroll := False;
end;

procedure TForm2.CreateWnd;
begin
  inherited;
  SendMessage(Handle, WM_SETICON, 1, 0);
end;

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.ExStyle := Params.ExStyle or WS_EX_DLGMODALFRAME or WS_EX_WINDOWEDGE;
end;

个人认为,这无法通过bsDialog实现,但上述方法看起来和使用"bsDialog"非常相似,可以调整大小。


太棒了,这个问题困扰我很久了。 - Frederik Slijkerman

2
BorderStyle 设置为 bsSizeToolWin

2
这将创建一个带有较小标题栏的工具窗口,而不是常规对话框。 - Frederik Slijkerman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接