Ver Mensaje Individual
  #2  
Antiguo 11-08-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Reputación: 25
Caral Va por buen camino
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
Responder Con Cita