J'ai un descendance TFrame qui contient un panneau de taille importante qui est un composant tiers (TLMDSimplePanel)). Le dimensionnement de ce panneau fonctionne très bien, mais je souhaite que le cadre qu'il contient soit redimensionné dynamiquement lorsque l'utilisateur modifie la taille du panneau. (Le panneau a une petite prise sur le pouce que l'utilisateur peut simplement cliquer et faire glisser avec la souris).Redimensionnement dynamique des cadres et des formulaires dans Delphi
Le code de ce cadre est ci-dessous:
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.
Il fonctionne à merveille, si l'utilisateur est rétrécissement la taille du cadre, mais s'ils tentent de l'étirer plus grand que ses limites d'origine, ils peuvent seulement l'étendre à ce que apparaît pour être sa taille d'origine + ExpandByPixels, après quoi l'utilisateur ne peut pas continuer à le faire glisser de manière fluide vers une taille plus grande. S'ils s'arrêtent, puis cliquez à nouveau sur la poignée de taille et faites-la glisser, ils peuvent la faire glisser vers une taille plus grande, mais de nouveau, elle est contrainte de la même manière (taille actuelle + ExpandByPixels = limite externe). Ils peuvent répéter ce cycle sans fin, en élargissant le cadre à n'importe quelle taille, mais pas de manière fluide dans un mouvement de la souris, ce qui est ce que je veux.
J'ai aussi testé ce même problème contre les descendants de TForm et j'ai les mêmes symptômes.
Qu'est-ce qui me manque ici?
Merci d'avance pour toute aide. :-)
Oui, je l'ai fait essayer. Ce que j'ai trouvé, c'est que pendant que le panneau était dimensionné, la fonctionnalité d'auto-dimensionnement de la trame ne se mettait pas en marche (peut-être attendait-elle que le panneau soit redimensionné), donc cela ne fonctionnait pas. De plus, cependant, j'ai besoin d'une "bordure tampon" autour du panneau; ne pas affleurer. – Jamo
Essayez avec mon code d'exemple, cela fonctionne avec un TPanel standard. Cependant, vous devrez peut-être modifier votre composant TLMDSimplePanel. –
De plus, pour la "bordure tampon", vous pouvez jouer avec la propriété de remplissage du cadre ou des marges du panneau ... –