Criar botão em tempo de execução dentro do componente Ribbon da TurboPack

22/12/2018

0

Olá pessoal!
Como efeito de teste para um futuro projeto eu instalei o componente de menu "Ribbon" da TurboPack através do gerenciador de pacotes do próprio delphi 10.2 Tokio (Menu tools --> Getit Package Manager), pesquisei por Ribbons e escolhi o pacote da TurboPack.

Desenhar os menus com tabs, grupos de menus e botões diversos em modo de Design deu certo e atendeu as minhas expectativas, mas nos testes para criar os botões em tempo de execução dentro do grupo (RibbonGroup) não funcionou. Eu consigo criar o botão em tempo de execução dentro de outros componentes como um "Panel" por exemplo, mas no menu Ribbon eu não consegui em tempo de execução.

Para montar o menu eu segui a ordem obrigatória do componente. Inseri o componente Ribbon que é apenas o painel do menu que fica no topo do form, depois criei as tabs e dentro das tabs eu criei os grupos(RibbonGroup) que receberão os controles como botões, labels e etc. Em tempo de design funciona, mas em tempo de execução não conseguir criar os botoes dentro do RibbonGroup, somente as Tabs e os grupos.

Para efeito de testes em tempo de execução eu fiz o seguinte:
01- Em um form coloquei o componente Ribbon (Ribbon1) que é apenas o painel de menu limpo sem nada
02- coloquei um botão Chamado Criar Tab e um edit1 que receberia o nome da TAB que seria criada e dentro deste botão coloquei o código abaixo:

- Declarei como publica a variável tab conforme segue:
Var tab: TRibbonTabItem;

- No evento onclick do botão coloquei este codigo que funciona { ======= Criando os Tabs do menu no componente Ribbon =============}

procedure TForm2.Button1Click(Sender: TObject);
begin
{ ======= Criando os Tabs do menu =============}

tab := Ribbon_Menu.Tabs.Add; //Cria a nova aba
tab.Page.Name := Edit1.Text;
tab.Caption := Edit1.Text;
end;

03- Coloquei no form mais um Botão chamado "Criar Grupo" e um edit2 para receber o nome do grupo e no botão coloquei o código abaixo. Este codigo tambem funciona para a criação dos grupos (RibbonGroup)

procedure TForm2.Button2Click(Sender: TObject);
begin
with TRibbonGroup.Create(self) do
begin
Name := edit2.Text;
Caption := Edit2.Text;
Width := 200;
Visible := true;
Parent := tab.Page;
end;
end;

04- Por ultimo coloquei mais um edit e um botão para criar os botões dentro do grupo, mas não consegui usar o método "Parent" para que o botão fosse criado dentro do RibbonGroup, eu consigo criar no form ou dentro de um form sem problemas. O componente Ribbon somente permite criar componentes de controle como botoes dentro dos grupos. Abaixo o código que usei dentro do onclick do button3 para tentar criar o botão:

procedure TForm2.Button3Click(Sender: TObject);
begin
with TButton.Create(self) do
begin
Name := edit3.Text;
Caption := Edit3.Text;
Width := 50;
Visible := true;
Parent := panel1; {Criando o botao dentro do panel1 para teste com sucesso}
end;
end;

Observação: A criação dos componentes seguem a sequencia neste teste. Primeiro crio a primera Aba/Tab, depois crio todos os grupos que serão criados dentro desta TAB atual. Se o teste com os botoes funcionassem, apos criar o primeiro grupo, seria criado o botões do primeiro grupo e somente apos o ultimo botão o segundo grupo seria criado e posteriormente seus botoes e assim por diante até o ultimo grupo para que seja reiniciado tudo começando na segunda TAB e assim por diante.

Abaixo os prints sobre o pacote de componentes e o meu formulário de teste
- Link da tela do PACKAGE MANAGER com o ribbon que eu instalei: https://1drv.ms/u/s!AtnJW1LHN7sFgYBy_ZLGhlgMW3KvBQ

- Link imagem do formulario de teste: https://1drv.ms/u/s!AtnJW1LHN7sFgYBzpm3tQBMy4VHqTg

- Fontes do teste: https://1drv.ms/u/s!AtnJW1LHN7sFgYB0IraUx8Pq8LWLlA

Desde já agradeço pela ajuda.
Cley
Cleylerson Lucio

Cleylerson Lucio

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar