Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Alterar el Toolbar de un Form (https://www.clubdelphi.com/foros/showthread.php?t=34026)

nemo 25-07-2006 02:46:23

Alterar el Toolbar de un Form
 
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
Código Delphi [-]
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:

Código Delphi [-]
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

Cool
 
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 y que utilices TAG's en tus mensajes 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? ;)


La franja horaria es GMT +2. Ahora son las 17:21:00.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi