У меня есть потомок 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 и получил те же симптомы.
Что мне здесь не хватает?
Заранее спасибо за любую помощь. :-)