Ver Mensaje Individual
  #29  
Antiguo 06-09-2012
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Reputación: 18
mightydragonlor Va por buen camino
Nunca hago nada de eso, si necesito una ventana, pues uso una ventana, todo depende del look que le quiera dar a mi aplicación, pero en definitiva, nunca he usado formularios MDI, me parece que son horribles, ademas, para eso están las ventanas modales, Tabs, Notebook, paneles y demás, ahora si lo que quieres es que un panel pueda cambiar de tamaño y pocisión, no es muy dificil.
Código Delphi [-]
procedure TPanel.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
begin
  inherited MouseDown(Button, Shift, X, Y);
  lastPos := ClientToScreen(point(X,Y));
  isMouseDown := true;
end;

procedure TPanel.MouseMove(Shift: TShiftState; X, Y: Integer);
var
  diff,newPos:TPoint;
  newRect:TRect;
begin
  inherited MouseMove(Shift, X, Y);
  newPos := clientToScreen(point(X,Y));
  if isMouseDown then begin
    diff.x := newpos.x-LastPos.x;
    diff.y := newpos.y-LastPos.y;
    if panelMode in [pmMoveSelf] then
    begin
      newRect := BoundsRect;
      OffsetRect(newRect, diff.x, diff.y);
      BoundsRect := newRect;
    end else begin
      newRect := parent.BoundsRect;
      case panelmode of
        pmMoveSelf: OffsetRect(newRect, diff.x, diff.y);
        pmMoveParent: OffsetRect(newRect, diff.x, diff.y);
        pmResizeParent:
        begin
          inc(newRect.right,diff.x);
          inc(newRect.bottom,diff.y);
        end;
        pmResizeParentLeft:   inc(newRect.left,diff.x);
        pmResizeParentRight:  inc(newRect.right,diff.x);
        pmResizeParentTop:    inc(newRect.top,diff.y);
        pmResizeParentBottom: inc(newRect.bottom,diff.y);
      end;
      parent.BoundsRect := newRect;
    end;
  end;
  LastPos := newPos;
end;

procedure TPanel.MouseUp(Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
begin
  inherited MouseUp(Button, Shift, X, Y);
  IsMouseDown := false;
end;

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormDblClick(Sender: TObject);
begin
  application.Terminate;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  wLeft.PanelMode := pmResizeParentLeft;
  wright.PanelMode := pmResizeParentRight;
  wTop.PanelMode := pmResizeParentTop;
  wBottom.PanelMode := pmResizeParentBottom;

  panel1.PanelMode := pmMoveSelf;
  panel2.PanelMode := pmResizeParent;
  panel3.PanelMode := pmMoveParent;
  Self.DoubleBuffered:=True;
end;
Esto debería servirte.
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita