du kannst das ganze über wm_sizing verhindern. Du musst also diese Message selbst händeln und wenn die größe zu klein wird verwirfst du einfach die Größenänderung.
Delphi-Quellcode:
private
procedure WMSizing(var AMsg: TMessage); message wm_sizing;
[...]
procedure TForm1.WMSizing(var AMsg: TMessage);
var
lRect : PRect;
begin
lRect := PRect(AMsg.LParam);
if (Constraints.MinWidth > 0) and (lRect.Right - lRect.Left < Constraints.MinWidth) then
begin
if (AMsg.WParam = WMSZ_RIGHT) or (AMsg.WParam = WMSZ_BOTTOMRIGHT) or (AMsg.WParam = WMSZ_TOPRIGHT) then
lRect.Right := lRect.Left + Constraints.MinWidth
else
lRect.Left := lRect.Right - Constraints.MinWidth;
end;
if (Constraints.MinHeight > 0) and (lRect.Bottom - lRect.Top < Constraints.MinHeight) then
begin
if (AMsg.WParam = WMSZ_Bottom) or (AMsg.WParam = WMSZ_BOTTOMRIGHT) or (AMsg.WParam = WMSZ_BOTTOMLEFT) then
lRect.Bottom := lRect.Top + Constraints.MinHeight
else
lRect.Top := lRect.Bottom - Constraints.MinHeight;
end;
end;
Wenn du auch noch das MaxWidth und MaxHeight von Contraints richtig haben willst musst du es natürlich ergänzen. So wird nur MinWidth und MinHeight von Constraints ordentlich verarbeitet und verhindert.