Pergunta

No meu formulário principal Eu tenho um TPanel contendo botões que funcionam como uma barra de ferramentas. Eu quero clone / copiar este barra de ferramentas e os botões e sua funcionalidade para um segundo formulário.

Clonagem o menu foi simples usando newmenu.merge (mainmenu). Isso foi um excelente atalho para duplicar um TMainMenu.

Mas estou em uma perda sobre como duplicar facilmente minha barra de ferramentas sem ter de atribuir manualmente os eventos e manter um temporizador para comparar e acompanhar quais botões são ativados e desativados em comparação com o mainmenu real sobre a forma principal. Dependendo do que o aplicativo está fazendo os principais botões da barra de ferramentas será ativada e desativada em vários momentos.

Todas as ideias aqui? Obrigado por todas as sugestões ou dicas para tornar isso mais fácil.

Foi útil?

Solução

  • Duplicando os controles

    No criador de formulário, selecione o painel e pressione Ctrl + C para copiá-lo e todos os seus filhos para a área de transferência. Ir para a segunda forma e pressione Ctrl + V para colar.

    Se você ainda está trabalhando no projeto e quer mantê-lo consistente entre as duas formas, em seguida, criar um TFrame e projetar seu layout barra de ferramentas lá. Em seguida, coloque uma instância dessa estrutura em ambas as suas formas. Alterações no design do quadro será refletida nos formulários.

    Trabalhando com quadros na ajuda.

  • Certificar-se de ambos os conjuntos de botões estão habilitados consistentemente

    Criar um módulo de dados. Colocar um TActionList nele. Adicionar uma ação para que para cada botão no formulário principal. manipuladores de eventos atribuir a eventos OnUpdate das ações. Neles, definir as acções propriedades Enabled. Finalmente, atribuir propriedade Action de cada botão para se referir ao objeto ação correspondente. Os botões automaticamente se ativada e desativada com as ações. Sem temporizador necessário.

    Além disso, você pode lidar com eventos OnExecute das ações, também. Limpar a propriedade OnClick de cada botão e mover o código OnClick do botão no manipulador OnExecute da ação correspondente. Ele será automaticamente chamado quando você clica no botão, mesmo que a propriedade OnClick está vazio.

    Quando você atribui a Caption ou Hint propriedade de um TAction, as propriedades correspondentes de quaisquer controles associados também mudam. O mesmo vale para as imagens, se o controle suporta-los. As ações podem ser atribuídas a itens de menu também.

    Usando listas de ação na ajuda.

  • Agindo como uma barra de ferramentas

    Basta usar TToolbar . Isso é o que é para.

    Ou, uma vez que você está acostumado a ações, colocar um TActionManager em seu projeto e usá-lo com TActionToolbar e TActionMainMenuBar . Consulte Organizar ações para barras de ferramentas e menus na ajuda.

Outras dicas

são os botões ligados a ações? Se assim for, você pode usar o evento OnUpdate do TActionList para especificar o que deve e não deve ser habilitado. Se não, ele não é muito trabalho para converter a usar ações.

Se você percorrer esse caminho para converter a usar um ActionList, considere colocar o ActionList em um datamodule onde diferentes unidades e formas poderia referenciá-lo.

Você pode usar ClipBoard Objeto Para copiar o seu Painel.

Clipboard.SetComponent (Panel1);
Clipboard.GetComponent (Form2, GroupBox1);

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top