MultiDoc/pt

From Lazarus wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

Sobre

MultiDoc é um componente Lazarus para substituir a interface padrão MDI.

Este componente permite escrever aplicação pseudo-MDI com Lazarus. Ele não é um implementação real da interface MDI mas ele da à sua aplicação a capacidade de usar redimensionáveis sub-form.

Há dois componentes:

  • TMultiDoc : o formulário principal the main form docking area.
  • TChildDoc : o contâiner filho com borda redimensionável e botão.

Eu o tabalhei com um software gráfico em mente mas ele esta provavelmente util para outras faixas de aplicações.

Screen Shot

Multidoc demo.png

Autor

Patrick Chevalley

Licença

LGPL Modificada, veja readme.txt

Download

O componente na versão 0.1 e 0.2 e um programa de demonstração pode ser encontrado no Lazarus-CCR sourceforge site.

O componente na versão 0.3 e 0.3.1 pode ser encontrado aqui.

Em breve serão juntados os pacotes MultiDoc e LMDI e estarão disponíveis no SourceForge.net

Registro de Mudanças

  • Versão 0.3.1 2008/01/01 Arrumado o seguinte:
    1. Algumas propriedades foram movidas para a seção public, para evitar exceções em tempo de design
  • Versão 0.3 2007/12/31 Arrumado o seguinte:
    1. Essa versão foi desenvolvida por Júnior Gonçalves e depende do pacote LMDI
    2. Através de {$IFDEF}'s o componente compila Lazarus/Delphi sem modificações
    3. Ótima movimentação. Agora o mouse não "escapa" enquanto o cursor é arrastado (Testado em GTK2 (Windows) e Windows XP)
    4. ChildDoc é agora derivado de TFormPanel (veja a suite LMDI)
    5. Não é mais necessário código em cada componente para focar a janela-filha
    6. É possível trocar o "skin" da barra de títulos, de acordo com o SO (veja o componente TTitleBar)
  • Versão 0.2 2007/01/06 Arrumado o seguinte:
    1. Propriedade BorderWidth property não trabalha
    2. Ordenação dos botões erradas
    3. Centraliza o cursor para a barra de títulos quando panel
    4. Compatibilidae com Gtk2 e FPC 2.1.1
    5. Quebra quando fechar uma janela filha quando fecha usando o botão close
    6. Mudada a licença para LGPL modificada
  • Versão 0.1 2006/01/20 Primeiro lançamento beta.

Dependências / Requerimentos de Sistema

Este componente é exclusivamente derivade de um componente padrão de nível mais alto (TPanel, TCustomSplitter, TSpeedButton). Ele deve funcionar em todas as plataformas Lazarus sem modificação.

Testado em Linux e Windows.

Notes

You are not limited to show the docking area in the full main form. You can place the TMultiDoc anywhere you want or use multiple one! A combination with a TNotebook may give something similar to a multi-desktop.

Instalação

  • Compile e instale multidocpackage.lpk
  • Abra o exemplo demo/demomultidoc.lpi

Este exemplo pode ser usado como um esqueleto para uma nova aplicação.

Utilização

Em tempo de design:

  • No formulário principal posicione um TMultiDoc.
  • Crie um formulário filho com um TPanel principal.
  • Jogue todos os objetos que você precisa para o panel filho, escreva o evento, etc...
  • Não conte com algum evento TForm porque este formulário nunca será mostrado.

Em run time:

  • Crie um novo child/filho de TMultiDoc.NewChild
  • Crie um formulário filho com o novo childdoc como proprietário (owner).
  • Atribua ao painel principal a propriedade Dockedpanel.


Converter um aplicação MDI Delphi

Converter uma aplicação de MDI é simplificado pela disponibilidade do mesmo componente para Delphi e Kylix.

Converta primeiro sua aplicação para MultiDoc no Delphi, então converta para Lazarus. Isto requer algun trabalho mas comparado com a vantagem de você evitar a feia borda XP sobre seus formulários filhos.

Substitua o função padrão MDI como a seguinte:

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

O Delphi componente está incluso no pacote. Extraia multidoc-delphi.zip e instale MultiDocD6.dpk ou MultiDocK3.dpk