PDA

Ver la Versión Completa : Alterar el Toolbar de un Form


nemo
25-07-2006, 02:46:23
Hola Foro!
Mi problema es el siguiente: Cuando maximizo el MainForm de mi programa, éste debe hacerlo pero no debe ocupar toda la pantalla, sino que necesito dejar en la parte inferior, un 10% sin cubrir ... Para todo lo demás, debe lucir como una operación de Maximización-Restauración convencional.
Intenté hacerlo así:

unit UMain;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
procedure WMSysCommand(var Msg: TWMSysCommand);
message WM_SYSCOMMAND;
end;

var
Form1: TForm1;

implementation
uses UImpresor;
{$R *.DFM}

procedure TForm1.WMSysCommand;

begin
if (Msg.CmdType = SC_MAXIMIZE) then
begin
Top := 0;
Left := 0;
Height := (Screen.Height) - (Screen.Height div 9);
Width := Screen.Width;
Msg.CmdType := SC_RESTORE;
end;
DefaultHandler(Msg);
end;


end.

Cuando maximizo, obtengo el resultado deseado, pero como no se como implementar el boton de restaurar en la toolbar, y hacer que esa función se simule también.

Podrían ayudarme?
GRACIAS!

seoane
25-07-2006, 03:35:09
Al menos en la versión 7 de delphi los formularios disponen de la propiedad MaxHeight que permite indicar la altura máxima del formulario. Podrás cambiar el tamaño de la ventana, maximizarla, restaurarla, etc. pero la altura nunca sera mayor que la que ahí se indica.

En tu caso la podríamos utilizar en el evento OnCreate

procedure TForm1.FormCreate(Sender: TObject);
begin
Constraints.MaxHeight:= (Screen.Height) - (Screen.Height div 9);
end;

seoane
25-07-2006, 03:45:45
De todas formas y volviendo a tu pregunta, si quieres seguir haciéndolo de esa manera deberías de hacer algo como esto:


procedure TForm1.WMSysCommand;
begin
inherited;
if (Msg.CmdType = SC_MAXIMIZE) then
begin
Top := 0;
Left := 0;
Height := (Screen.Height) - (Screen.Height div 9);
Width := Screen.Width;
end;
end;


De esta manera ya podrás maximizar y restaurar sin problemas, aunque si se modifica el tamaño de la ventana manualmente no podrás controlarlo como si lo hace la propiedad MaxHeight.

nemo
25-07-2006, 04:10:30
Wow.... que ingenioso!! Solucionaste mi problema en una sola línea!!!

Muchísimas Gracias! :D

Neftali [Germán.Estévez]
25-07-2006, 10:30:28
Hola nemo.
Bienvenido a estos foros, ya que eres relativamente nuevo.

Te recomiendo que leas la Guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php)y que utilices TAG's en tus mensajes (http://neftali.clubdelphi.com/images/ResaltarSintaxisDelphi.png) cuando coloques código Delphi.

NOTA: Mira el código que has añadido tú y el que ha añadido Seoane. ¿Cual se lee mejor? ;)