Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Formulario con Barra diferente (https://www.clubdelphi.com/foros/showthread.php?t=29132)

Deiv 13-01-2006 00:24:11

Formulario con Barra diferente
 
Hola Amigos!
Verán busco un componente o la dirección de un Código Ejemplo o una sugerencia, para crear mi programa como un formulario distinto al habitual (con otra forma gráfica de Barra de Título o barra de tareas) donde inclusive los botones minimizar, restaurar y cerrar son diferentes; esto vi en los programas System Mechanic Pro, Registry Mechanic, Nero Premium StartSmart, FileRecovery Angel 1.13, MediaPlayer sin su barra de Menús, Advanced UnInstaller Pro, etc, etc y otros, ¿serán Forms sin borde y x la Barra un BitMap? si fuera así ¿como administro cuando maximizo y restauro el form? el borde graficado en ellos mantiene su dimensión.
¿Como le hago para crear una Form de este tipo?
Un Saludo.

elcigarra 13-01-2006 00:56:19

a) Para cambiar la barra, creo que lo mas sencillo es lo que tu dices, desaparecer la otra (sacando bordericons y border) y usar una falsa (con un .bmp, por ejemplo.

b) Lo maximizado o no del form está en la propiedad Windowstate del mismo. Cambiando este valor pasas a maximizado, minimizado o normal.

c) Lo que no te has preguntado (y es lo que te dará más dolores de cabeza) es como mueves la ventana con el mouse desde tu falsa barra de título. Esto lo haces así:
Código Delphi [-]
//...  en la sección private agregas la siguiente linea
private
  { Private declarations }
  procedure HitTest(Var Mes : TMessage);message Wm_NcHitTest;
Luego defines el procedimiento
Código Delphi [-]
procedure TForm1.HitTest(Var Mes : TMessage);
var
  sep_izq:Integer; //separación entre tu barra y el borde izquierdo del form
  sep_der:Integer; //lo mismo al borde derecho del form
  sep_sup:Integer; //lo mismo borde superior del form
  alto:Integer; // alto en pixels de la barra (Height del TImage)
begin
 inherited;
  //... aquí le pones tus valores a las variables
  if (Form1.ScreenToClient(Mouse.CursorPos).x > sep_izq) and
     (Form1.ScreenToClient(Mouse.CursorPos).x < Width - sep_der) and
     (Form1.ScreenToClient(Mouse.CursorPos).y > sep_sup) and
     (Form1.ScreenToClient(Mouse.CursorPos).y < alto) then
  if Mes.Result=HtClient then
     Mes.Result:=HtCaption;
end;

Neftali [Germán.Estévez] 13-01-2006 10:35:53

Yo buscaría componentes de Skin. Hay algunos gratuítos y muchos de pago.
Busca en Torry un componente llamado TSkinForm. Creo recordar que trae una demo que puedes revisar.

Héctor Randolph 20-01-2006 17:12:06

Alguna vez trabaje con la versión gratuita del componente TSkinForm que recomienda Neftali, pero ahora solamente la encontré para Delphi 3 y 4. En Torry está el componente para las versiones 5, 6 y 7 pero es de pago.

Seguramente es posible adaptar la versión gratuita de Delphi 4 para que funcione en Delphi7, pero no sé si sea lo adecuado.

Busca en el foro con la palabra clave skin y encontrarás mucha información, por ejemplo en este hilo:

http://www.clubdelphi.com/foros/showthread.php?t=24315

Saludos


La franja horaria es GMT +2. Ahora son las 01:36:32.

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