MultiDoc/pt

From Free Pascal wiki
Revision as of 20:58, 1 January 2008 by Junior (talk | contribs) (→‎Download)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

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