Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-12-2006
CoCaInE CoCaInE is offline
Miembro
 
Registrado: nov 2005
Posts: 66
Poder: 19
CoCaInE Va por buen camino
Formularios MDI

Me gustaria que me ayudaran con los formularios Mdichild , Puesto que quiero que ellos no puedan salirse del mdiform osea que no puedan moverse dentro mas del tamaño del mdi, cuando el usuario logra moverlos aparecen Scrollbars a los laterales del form hay alguna manera de delimitar el area?
Responder Con Cita
  #2  
Antiguo 24-12-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Extraño requerimiento pero puedes intentarlo interceptando el mensaje WM_MOVING del formulario hijo:

Código Delphi [-]
type
  TForm2 = class(TForm)
  private
    procedure WMMoving(var Msg: TWMMoving); message WM_MOVING;
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

{ TForm2 }

procedure TForm2.WMMoving(var Msg: TWMMoving);
var
  DragWidth: Integer;
  DragHeight: Integer;

begin
  inherited;

  DragWidth := Msg.DragRect.Right - Msg.DragRect.Left;
  DragHeight := Msg.DragRect.Bottom - Msg.DragRect.Top;

  with Msg, Application.MainForm do
  begin
    if DragRect.Left - 2 <= ClientOrigin.X then
    begin
      DragRect.Left := ClientOrigin.X + 2;
      DragRect.Right := ClientOrigin.X + DragWidth + 2;
    end;

    if DragRect.Right + 2 > ClientOrigin.X + ClientWidth then
    begin
      DragRect.Left := ClientOrigin.X + ClientWidth - DragWidth - 2;
      DragRect.Right := ClientOrigin.X + ClientWidth - 2;
    end;

    if DragRect.Top - 2 <= ClientOrigin.Y then
    begin
      DragRect.Top := ClientOrigin.Y + 2;
      DragRect.Bottom := ClientOrigin.Y + DragHeight + 2;
    end;

    if DragRect.Bottom + 2 > ClientOrigin.Y + ClientHeight then
    begin
      DragRect.Top := ClientOrigin.Y + ClientHeight - DragHeight - 2;
      DragRect.Bottom := ClientOrigin.Y + ClientHeight - 2;
    end;
  end;
end;

Claro que tendrías que hacer lo mismo para cada formulario hijo, o bien hacerlo para un formulario hijo base y heredar todos los demás de ése.

// Saludos
Responder Con Cita
  #3  
Antiguo 24-12-2006
CoCaInE CoCaInE is offline
Miembro
 
Registrado: nov 2005
Posts: 66
Poder: 19
CoCaInE Va por buen camino
Gracias Roman

Gracias por contestarme lo que realmente sucede es que cuando abro un formulario mdichild y lo cierro, al volverlo abrir me aparece mas abajo de la posicion que tenia antes.....y alli es el problema por cada vez que lo cierran y lo abren va bajando mas para abajo y se va saliendo del form principal.
Responder Con Cita
  #4  
Antiguo 24-12-2006
aledieb aledieb is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires, Argentina
Posts: 141
Poder: 19
aledieb Va por buen camino
Pone en el Oncreate del form hijo:

Código Delphi [-]
Top:=10;
Left:=10;

y siempre aparecera a 10 y 10 pixels de la esquina superior izquierda
__________________
Suerte
Alejandro
Responder Con Cita
  #5  
Antiguo 24-12-2006
Avatar de Zeta
Zeta Zeta is offline
Miembro
 
Registrado: feb 2005
Posts: 215
Poder: 20
Zeta Va por buen camino
¿Y si lo abres maximizado siempre?
__________________
And I'd like an hour on the holodeck with Seven of Nine.
Responder Con Cita
  #6  
Antiguo 24-12-2006
CoCaInE CoCaInE is offline
Miembro
 
Registrado: nov 2005
Posts: 66
Poder: 19
CoCaInE Va por buen camino
Gracias Aliendb

eh podido resolver la aparacion del mdichild, pero no comprendo donde eh de poner el codigo establecido por roman osea en que evento o lugar
Responder Con Cita
  #7  
Antiguo 25-12-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
El código de roman se haría en cada ventana mdiChild

Edito: Aquí si tiraría de herencia visual (como ya dijo roman), es decir, creas una ventana con ese código llamada FrmBaseChild, y cada vez que necesites una nueva ventana mdichild, vas a File -> New -> Project, eliges FrmBasechild, con esto, la nueva ventana ya tiene implementada ese código.

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

Última edición por Lepe fecha: 25-12-2006 a las 13:29:11.
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
Formularios Caro OOP 1 20-10-2005 17:37:50
Formularios Caro Varios 2 19-08-2005 17:58:54
Formularios Caro Varios 5 14-07-2005 14:51:30
Formularios MDI y SDI (VIH)Lestat Conexión con bases de datos 2 18-06-2005 00:18:44
formularios mdi tango01 OOP 22 19-11-2003 16:27:34


La franja horaria es GMT +2. Ahora son las 10:13:27.


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