サードパーティ コンポーネント (TLMDSimplePanel) である大きなパネルを持つ TFrame の子孫があります。そのパネルのサイズ変更はうまく機能しますが、ユーザーがパネルのサイズを変更したときに、それが含まれているフレームのサイズを動的に変更したいと考えています。(パネルには、ユーザーがマウスでクリック アンド ドラッグするだけでサイズを調整できる小さなサム グリップがあります)。
このフレームのコードは次のとおりです。
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 = 外側の境界)。このサイクルを際限なく繰り返し、フレームを任意のサイズに拡大できますが、1 回のマウスの動きで流動的にはできません。これが私が望んでいることです。
この同じ問題を TForm の子孫に対してもテストしたところ、同じ症状が発生しました。
ここで何が欠けていますか?
あらゆる助けを前もって感謝します。:-)