【发布时间】:2018-10-31 08:54:24
【问题描述】:
我创建具有运行时调整大小功能的自定义面板 (TMyPanel)。有什么方法可以隐藏边框而不丢失调整大小的功能?
type
TMyPanel = class(TPanel)
protected
procedure CreateParams(var Params: TCreateParams); override;
end;
...
procedure TMyPanel.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := Params.Style or WS_SIZEBOX;
end;
...
var
MyPanel1: TMyPanel;
begin
MyPanel1:=TMyPanel.Create(self);
MyPanel1.Parent:=self;
...
end;
【问题讨论】:
-
那么,您的问题是如何在不添加边框的情况下使面板变大,或者在包含
WS_SIZEBOX样式时如何隐藏边框。 -
覆盖
WM_NCHITTEST以告诉系统您在没有WS_SIZEBOX的情况下调整大小的“边框”在哪里。 -
可能通过(不)自己绘制非客户区。不过,它可能会对调整大小的能力产生不利影响。非常违反直觉。. WS_SIZEBOX 通常被称为 WS_THICKFRAME,这些框架可以作为视觉线索来说明它们的用途。
标签: delphi winapi delphi-10.2-tokyo