Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Problem mit Constraints der Form

  Alt 24. Mär 2007, 08:41
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat