我如何创建一个带有BorderStyle bsDialog
的表单(ShowModal),但仍然可以调整大小并具有关闭按钮(没有图标、最小化、最大化)?
我不需要显示大小调整手柄。
这是我的解决方案,看起来工作得很好:
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
"非常相似,可以调整大小。
BorderStyle
设置为 bsSizeToolWin
。