MultiDoc/es

From Lazarus wiki
Revision as of 20:14, 5 February 2009 by Arturom (talk | contribs) (→‎Cambios habidos)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Deutsch (de) English (en) español (es) português (pt)

Acerca de...

MultiDoc es un componente de Lazarus que sustituye al habitual interfaz MDI.

Este componente permite escribir aplicaciones pseudo-MDI con Lazarus. No es una verdadera implementación del interfaz MDI, pero dará a su aplicación la capacidad de utilizar varios formularios hijos redimensionables.

Hay dos componentes:

  • TMultiDoc : la zona de acople del formulario principal.
  • TChildDoc : el contenedor hijo con borde y botón redimensionables.

Fueron creados pensando en un software gráfico, pero probablemente sean útiles para una amplia gama de aplicaciones.

Captura de pantalla

Multidoc demo.png

Autor

Patrick Chevalley

Licencia

LGPL modificada, vea el fichero readme.txt

Descarga

El componente, en su versión 0.1 y 0.2, y un programa de demostración lo puede encontrar en Lazarus-CCR sourceforge.

El componente en su versión 0.3 y 0.3.1 puede encontrarlo en aquí.

Próximamente uniré los paquetes MultiDoc y LMDI y estarán disponibles en SourceForge.net

Cambios habidos

  • Versión 0.3.1 2008/01/01 Repara lo siguiente:
    1. Movidas a la sección pública algunas propiedades, para permitir excepciones en tiempo de diseño
  • Version 0.3 2007/12/31 Repara lo siguiente:
    1. Esta versión ha sido desarrollada por Júnior Gonçalves y depende del paquete LMDI
    2. A traves de {$IFDEF}'s el componente compila en Lazarus/Delphi sin cambios
    3. Gran cambio. Ahora el ratón no "escapa" cuando el cursor esta pulsado (Testeado en GTK2 (Windows) y Windows XP)
    4. ChildDoc deriva ahora de TFormPanel (ver LMDI)
    5. No es necesario código para dar el foco al formulario hijo
    6. Es posible cambiar la "piel" de la barra de título, de acuerdo al sistema operativo (ver el componente TTitleBar)
  • Version 0.2 2007/01/06 Repara lo siguiente:
    1. La propiedad BorderWidth no funciona
    2. Error en el orden de los botones
    3. Centra el cursor en la barra de título al mover el panel
    4. Compatibilidad con Gtk2 y FPC 2.1.1
    5. Error al cerrar el hijo usando el botón cerrar
    6. Cambio de la licencia LGPL
  • Version 0.1 2006/01/20 Primera beta liberada

Dependencias / Requerimientos del sistema

Este componente deriva exclusivamente de un componente habitual de alto nivel (TPanel, TCustomSplitter, TSpeedButton). Puede funcionar en todas las plataformas de Lazarus sin realizar cambios.

Probado en Linux y Windows.

Notas

No está limitado a mostrar la zona de acople en todo el formulario principal. Puede situar TMultiDoc donde quiera o ¡usar uno múltiple!. Una combinación con un TNotebook puede producir algo parecido a un escritorio múltiple.

Instalación

  • Compile e instale multidocpackage.lpk
  • Abra el ejemplo demo/demomultidoc.lpi

Este ejemplo lo puede utilizar como base para una nueva aplicación.

Utilización

En tiempo de diseño:

  • Sitúe un TMultiDoc en el formulario principal de la aplicación.
  • Cree un formulario hijo con un TPanel principal.
  • Ponga todos los objetos que quiera para el formulario hijo en el panel, escriba eventos, etc...
  • No cuente con algún evento de TForm, pues este formulario no se mostrará nunca.

En tiempo de ejecución:

  • Cree un nuevo formulario hijo de TMultiDoc.NewChild
  • Cree un formulario hijo con el nuevo documento hijo como propietario.
  • Asigne el panel principal a la propiedad Dockedpanel.


Convertir una aplicación MDI de Delphi

La conversión de una aplicación MDI se ha simplificado con la disponibilidad del mismo componente para Delphi y Kylix.

Convierta primero su aplicación a MultiDoc en Delphi, después conviértala a Lazarus. Esto necesita algún esfuerzo pero evita el antiéstetico borde de XP alrededor de los formularios hijos.

Sustituya la función habitual MDI de la siguiente forma:

  MDIChildCount   -> MultiDoc1.ChildCount
  ActiveMdiChild  -> MultiDoc1.ActiveObject
                  o MultiDoc1.ActiveChild
  MDIChildren[i]  -> MultiDoc1.Childs[i].DockedObject
                  o MultiDoc1.Childs[i]

El componente de Delphi está incluido en el paquete. Descomprima multidoc-delphi.zip e instale MultiDocD6.dpk o MultiDocK3.dpk.