Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-01-2009
cmm07 cmm07 is offline
Miembro
 
Registrado: nov 2007
Posts: 526
Poder: 17
cmm07 Va por buen camino
Limitar un form o aplicacion

Hola, necesito de vuestra ayuda, ¿como puedo limitar la pocicion de un form o de mi aplicacion con respecto a la pantalla?, osea como puedo hacer para que en un form al pinchar con el mouse en la barra del título y mover dicha form no sobrepase la pantalla ejemplo:

si tenemos una pantalla con una resolución 800x600 el limite de movimiento con el mouse sería Left Máximo 800 y el Top Máximo 600, creo que sería algo así, la verdad no se si ¿me explico bien?

Gracias. Espero sus respuestas..

54LU2
Responder Con Cita
  #2  
Antiguo 04-01-2009
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Este código solo controla cuando mueves la ventana a la izquierda y derecha:
Código Delphi [-]
type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
    procedure Moviendo(var message:TWMWindowPosChanging); message WM_WINDOWPOSCHANGING;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.Moviendo(var message: TWMWindowPosChanging);
begin
  if message.WindowPos.x + self.Width >= screen.Width then
    message.WindowPos.x := screen.Width - self.Width
  else if message.WindowPos.x <= 0 then
    message.WindowPos.x := 0;
end;

Lo que hace es capturar el mensaje que windows le pasa a una ventana cuando ésta se está moviendo (o cambiando su tamaño) WM_WINDOWPOSCHANGING y en la rutina lo que hago es ver la posición actual message.windowPos.x y cuando se salga de la pantalla, le asigno un valor fijo.

Faltaría por comprobar el límite de arriba y de abajo, pero te dejo que trastees un poco .

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 04-01-2009
cmm07 cmm07 is offline
Miembro
 
Registrado: nov 2007
Posts: 526
Poder: 17
cmm07 Va por buen camino
Gracias, amigo eso es exactamente lo quequería hacer , ahora solo me falta arriba y abajo, haber si se me ocurre algo o si se les ocurre algo a ustedes, creo que "x" es derecha/izquierda e "y" es Arriba/abajo, gracias.

Voy a jugar con el código....

Gracias.
XAO
Responder Con Cita
  #4  
Antiguo 04-01-2009
cmm07 cmm07 is offline
Miembro
 
Registrado: nov 2007
Posts: 526
Poder: 17
cmm07 Va por buen camino
Hola, ya descubrí el código(que rapido soy ) para arriba y abajo, aqui está:

Código Delphi [-]
  public
    procedure Moviendo(var message:TWMWindowPosChanging); message WM_WINDOWPOSCHANGING;
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Moviendo(var message: TWMWindowPosChanging);
begin
  if message.WindowPos.x + self.Width >= screen.Width then
    message.WindowPos.x := screen.Width - self.Width
  else if message.WindowPos.x <= 0 then
    message.WindowPos.x := 0;


   if message.WindowPos.y + self.Height >= screen.Height then
    message.WindowPos.y := screen.Height - self.Height
  else if message.WindowPos.y <= 0 then
    message.WindowPos.y := 0;
end;

Por si se dan cuenta llega hasta el final de la pantalla pasando por debajo del Menú Inicio o Barras de tareas, ¿existe algo que el limite sea hasta el menú inicio?
Responder Con Cita
  #5  
Antiguo 04-01-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Parece que el asunto se puede complicar algo. Puedes intentar conocer el alto de la barra de tareas y actuar en consecuencia, restándolo cuando sea menester. Pero la barra de tareas puede estar en cualquier lugar... arriba, abajo, a izquiera y derecha. Por lo tanto, igual te interesa saber dónde está la barra de tareas, realmente. Claro que no sé si bastaría con intentar obtener el "area de trabajo actual", que obvia la barra de tareas, y a partir de ahí trabajar. A ver si puedes llegar a algo en claro.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 04-01-2009
cmm07 cmm07 is offline
Miembro
 
Registrado: nov 2007
Posts: 526
Poder: 17
cmm07 Va por buen camino
tienes razón, se complica mucho, pero no se preocupen, ya resolví mi problema y ya no necesito hacer eso del menu inicio, pero muchas gracias dec por intentar ayudarme, y gracias a [Lepe] por haberme dicho la respuesta, y yo la complemente, gracias a ambos muchas gracias...
54LU2
Responder Con Cita
  #7  
Antiguo 04-01-2009
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Bueno, para completar el hilo y que alguien más le sirva:

En lugar de acceder a Screen.width, puedes acceder a Screen.monitors[0].WorkAreaRect que efectivamente te da el área de trabajo sin barras de tareas o barras de herramientas adosadas a la pantalla (recordemos esa posibilidad ).

Es sólo un ejemplo, El objeto screen tiene una propiedad Desktop que te dá el area completo del escritorio, aún usando varios monitores al mismo tiempo, por lo que no tienes que preocuparte mucho de esos casos especiales, sólo tienes que acceder a la propiedad adecuada.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
aplicacion con 2 form totote Varios 18 25-07-2007 00:36:33
Aplicacion parar Limitar y/o asignar ancho de banda en una LAN!! JuanErasmo Internet 3 03-12-2006 07:43:55
Aplicacion sin form Sotrono Varios 6 12-09-2005 21:07:13
Crear una aplicacion sin form kolokol Varios 5 04-06-2004 22:57:52
Hacer una aplicación sin form DarkByte Varios 13 23-02-2004 00:10:14


La franja horaria es GMT +2. Ahora son las 04:12:39.


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
Copyright 1996-2007 Club Delphi