Hola
No se si sera esto lo que buscas:
Cita:
Si se nos ocurre poner un límite al Width o al Height de la form en el evento OnResize
veremos un desagradable parpadeo y redibujado de la form.
Para evitarlo basta con capturar el mensaje TWMGETMINMAXINFO y tratarlo con una procedure
a medida.
Por ejemplo, para fijar las dimensiones y la posicion de la form cuando sea maximizada:
Primero capuramos el mensaje poniendo esta linea en la clausula private de la form:
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
{Esta linea/This line}
procedure mymax(var m: TWMGETMINMAXINFO); message wm_getminmaxinfo;
Y ponemos la procedure que trate el mensaje en la parte implementation de la form:
procedure TForm1.mymax(var m : TWMGETMINMAXINFO);
begin
m.minmaxinfo^.ptmaxsize.x := 300; {Width/Ancho}
m.minmaxinfo^.ptmaxsize.y := 300; {Height/Alto}
m.minmaxinfo^.ptmaxposition.x := 10; {Left/Posicion X}
m.minmaxinfo^.ptmaxposition.y := 10; {Top/Posicion Y}
end;
Esto hará que nuestra form, al ser maximizada sea de 300x300 y esté en Top 10 y Left 10
Si lo que buscamos es que el usuario no pueda disminuir el tamaño de la form hasta un límite:
procedure TForm1.mymax(var m : TWMGETMINMAXINFO);
begin
m.minmaxinfo^.ptMinTrackSize.x := 300; {Ancho Mínimo/Min Width}
m.minmaxinfo^.ptMinTrackSize.y := 300; {Alto Mínimo/Min Height}
end;
Esto hará que la form no pueda ser hecha más pequeña que 300x300 pixels.
Si lo que queremos es poner el límite a la hora de agrandarla... es decir, no dejar que el
usuario haga la form más grande que ciertos límites:
procedure TForm1.mymax(var m : TWMGETMINMAXINFO);
begin
m.minmaxinfo^.ptMaxTrackSize.x := 300; {Ancho mímino/Min Width}
m.minmaxinfo^.ptMaxTrackSize.y := 300; {Alto Mínimo/Min Height}
end;
Esto hará que la form no pueda ser agrandada a más de 300x300 pixels
Busca en el fichero ayuda del Api (win32.hlp) la ayuda para el mensaje WM_GETMINMAXINFO y
verás
todas las posibilidades que nos ofrece.
Enviado por: DARIO ALVAREZ ARANDA (dalvarez@udesoft.com)
Para Delphi4 o superiores:
Form1.Constraints.MinHeight:=200;
Form1.Constraints.MinWidth:=200;
Form1.Constraints.MaxHeight:=300;
Form1.Constraints.MaxWidth:=300;
|
Saludos