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

Delphi

22/12/2018

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

Curtidas 0
POSTAR