我有一个Tframe子代,上面有一个相当大的面板,它是第三方组件(tlmdsimplepanel))。该面板上的大小调整效果很好,但我希望它所包含的框架在用户更改面板大小时动态调整大小。(面板上有一个小尺寸的拇指夹点,用户只需用鼠标点击并拖动即可)。
此框架的代码如下:
unit SizeableFrame;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TcmBaseFrameFrame, LMDCustomControl, LMDCustomPanel, LMDCustomBevelPanel,
LMDSimplePanel, StdCtrls;
type
TcmSizeableFrame = class(TcmBaseFrame)
LMDSimplePanel1: TLMDSimplePanel;
Memo1: TMemo;
Memo2: TMemo;
procedure LMDSimplePanel1Resize(Sender: TObject);
procedure FrameCanResize(Sender: TObject; var NewWidth, NewHeight: Integer;
var Resize: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
cmSizeableFrame: TcmSizeableFrame;
implementation
{$R *.dfm}
procedure TcmSizeableFrame.FrameCanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
begin
inherited;
Resize := True;
end;
procedure TcmSizeableFrame.LMDSimplePanel1Resize(Sender: TObject);
const
ExpandByPixels = 60;
var
MyFrame : TFrame;
begin
inherited;
Self.Height := LMDSimplePanel1.Height + ExpandByPixels;
Self.Width := LMDSimplePanel1.Width + ExpandByPixels;
end;
end.
如果用户是
收缩
帧的大小,但如果它们试图将其拉伸到大于其原始边界,则只能将其扩展到
出现
为其原始大小+ExpandByPixels,之后用户无法继续将其流畅地拖动到较大的大小。
如果它们停止,然后再次单击并拖动“大小”夹点,则可以将其拖动到更大的大小,但这同样受到约束(当前大小+ExpandByPixels=外边界)。他们可以无休止地重复这个循环,将框架扩展到任何大小,但不能在一次鼠标移动中流畅地移动,这正是我想要的。
我也对tform的后代进行了同样的测试,得到了同样的症状。
我这里缺什么?
提前感谢您的帮助。-)