GARANTIR DESCONTO

Fórum [Ajuda] ImageList via codigo. #468822

04/02/2014

0

Boa tarde pessoal, Estou com dificuldades na ligação do meu ImageList a um ActionManager em tempo de execução num menu RibbonGroup. Consegui fazer o Ribbon e suas propriedades e o ActionManager em tempo de execução mas me falta o Imagelist. Alguém teve esse mesmo probleminha. Segue parte do meu código. Agradeço a ajuda.

ActionManager1 := TActionManager.Create(Form);
Ribbon1.ActionManager := ActionManager1;
ActionManager1.Images := ImageList1;


ActionBarItem1 := ActionManager1.ActionBars.add;
ActionBarItem1.ActionBar := RibbonGroup1;


ActionManager1.Images := ImageList1; // nesta linha que da o erro.
ActionClientItem1 := ActionBarItem1.Items.add;
ActionClientItem1.Caption := 'Clientes';
ActionClientItem1.Action.Index := 0;
Inayerô Sá

Inayerô Sá

Responder

Posts

04/02/2014

Thiago Irrazabal

Boa noite caro colega, fiz uns testes aqui e não deu erro, poderia mostrar como tu está criando o ImageList ? Segue um exemplo do meu teste, criei uma nova aplicação e não modifiquei o nome do formulário, colocando apenas um button na tela e um opendialog sem renomeá-los.

procedure TForm1.Button1Click(Sender: TObject);
var
  Img: TImageList;
  Bmp: TBitmap;
  Act: TActionManager;
begin
  try
    Img := TImageList.Create(nil);

    Act := TActionManager.Create(nil);

    Bmp := TBitmap.Create;

    if OpenDialog1.Execute then
      Bmp.LoadFromFile(OpenDialog1.FileName);

    Img.Add(Bmp, nil);

    Act.Images := Img;
  finally
    FreeAndNil(Img);
    FreeAndNil(Bmp);
    FreeAndNil(Act);
  end;
end;





Att,
Thiago Irrazabal de Oliveira.
Responder

Gostei + 0

05/02/2014

Douglas

Inayerô, o amigo Thiago conseguiu ajudar na sua dúvida?
Responder

Gostei + 0

06/02/2014

Inayerô Sá

Bom dia Thiago, para facilitar olha meu código. Queria tentar fazer esse procedimento todo via código. Eu comentei aonde criei o ImageList, o que falta é joga-lo para dentro da ação.

procedure TForm3.Button1Click(Sender: TObject);
Var
Form: TForm;
Ribbon1: TRibbon;
ActionManager1: TActionManager;
ImageList1: TImageList;

RibbonTabItem1: TRibbonTabItem;
RibbonGroup1: TRibbonGroup;
ActionBarItem1: TActionBarItem;
ActionClientItem1: TActionClientItem;

begin

Form := TForm.Create(Application);
with Form do
begin
Caption := 'Tempo de Execução';
WindowState := wsMaximized;
end;

with Ribbon1 do
begin
Ribbon1 := TRibbon.Create(Form);
Caption := 'TESTE';
Parent := Form;
end;

with RibbonTabItem1 do // CRIAÇÃO DA ABA DO RIBBON1.
begin
RibbonTabItem1 := Ribbon1.Tabs.Add;
Caption := 'CADASTROS';

// Criando o ActionManager no Form e ligando-o ao Ribbon1.
ActionManager1 := TActionManager.Create(Form);
Ribbon1.ActionManager := ActionManager1;

with RibbonGroup1 do // CRIAÇÃO DOS GRUPOS.
begin
RibbonGroup1 := TRibbonGroup.Create(Ribbon1);
Parent := RibbonTabItem1.Page;
Caption := 'Cadastro';
end;

// CRIANDO AÇÃO DENTRO DO GRUPO.
ActionBarItem1 := ActionManager1.ActionBars.Add;
ActionBarItem1.ActionBar := RibbonGroup1;

{ImageList1 := TImageList.Create(Form);
ActionManager1.Images := ImageList1;} // IMAGELIST.

// ADICIONANDO AÇÕES.
ActionClientItem1 := ActionBarItem1.Items.Add;
ActionClientItem1.Caption := 'Cliente';

end;

Ribbon1.TabIndex := 0;
Form.ShowModal;
FreeAndNil(Form);
end;
end.


Agradeço desde já pela atenção.

Att, Inayerô
Responder

Gostei + 0

06/02/2014

Inayerô Sá

Inayerô, o amigo Thiago conseguiu ajudar na sua dúvida?


Caro Douglas, minha duvida é, depois de criado um ribbon e suas propriedades, depois criado um actionmanager tudo isso em tempo de execução, gostaria de jogar também via codigo uma imagem para essa ação criada. Agradeço a atenção.

Att, Inayerô
Responder

Gostei + 0

06/02/2014

Thiago Irrazabal

Bom dia, cara eu testei esse teu código só comentei os Ribbon's(Esse componente é nativo? não encontrei no meu delphi 7), funcionou normalmente aqui esse teu código ficando assim:


var
  Form: TForm;
  //Ribbon1: TRibbon;
  ActionManager1: TActionManager;
  ImageList1: TImageList;

  //RibbonTabItem1: TRibbonTabItem;
  //RibbonGroup1: TRibbonGroup;
  ActionBarItem1: TActionBarItem;
  ActionClientItem1: TActionClientItem;
begin

  Form := TForm.Create(Application);
  with Form do
    begin
      Caption := 'Tempo de Execução';
      WindowState := wsMaximized;
    end;

  {with Ribbon1 do
    begin
      Ribbon1 := TRibbon.Create(Form);
      Caption := 'TESTE';
      Parent := Form;
    end;}

  {with RibbonTabItem1 do // CRIAÇÃO DA ABA DO RIBBON1.
    begin
      RibbonTabItem1 := Ribbon1.Tabs.Add;
      Caption := 'CADASTROS';}

      // Criando o ActionManager no Form e ligando-o ao Ribbon1.
      ActionManager1 := TActionManager.Create(Form);
      //Ribbon1.ActionManager := ActionManager1;

      {with RibbonGroup1 do // CRIAÇÃO DOS GRUPOS.
        begin
          RibbonGroup1 := TRibbonGroup.Create(Ribbon1);
          Parent := RibbonTabItem1.Page;
          Caption := 'Cadastro';
        end; }

      // CRIANDO AÇÃO DENTRO DO GRUPO.
      ActionBarItem1 := ActionManager1.ActionBars.Add;
      //ActionBarItem1.ActionBar := RibbonGroup1;

      ImageList1 := TImageList.Create(Form);
      ActionManager1.Images := ImageList1; // IMAGELIST.

      // ADICIONANDO AÇÕES.
      ActionClientItem1 := ActionBarItem1.Items.Add;
      ActionClientItem1.Caption := 'Cliente';

  //  end;

  //Ribbon1.TabIndex := 0;
  Form.ShowModal;
  FreeAndNil(Form);
end;



Qual Delphi tu usa ? não sei o que pode estar ocasionando o erro.



Att,
Thiago Irrazabal de Oliveira.
Responder

Gostei + 0

06/02/2014

Inayerô Sá

Bom dia, cara meu delphi é o xe2, mas quando você executou o código exibiu tudo, inclusive a imagem dentro da ação?
Responder

Gostei + 0

06/02/2014

Inayerô Sá

Bom dia, cara meu delphi é o xe2, mas quando você executou o código exibiu tudo, inclusive a imagem dentro da ação?


Foi mal Thiago, não prestei atenção e não vi a parte do código comentado.

att, Inayerô
Responder

Gostei + 0

06/02/2014

Thiago Irrazabal

Bom dia, cara meu delphi é o xe2, mas quando você executou o código exibiu tudo, inclusive a imagem dentro da ação?


Foi mal Thiago, não prestei atenção e não vi a parte do código comentado.

att, Inayerô



Ainda está dando o erro aí ?

No código acima, só mostra o Formulário, não mostra nenhuma imagem pelo fato de que eu não vinculei o ActionManager a nenhum outro componente e também, não adicionei nenhuma imagem no ImageList, simplesmente o criei.



Att,
Thiago Irrazabal de Oliveira.
Responder

Gostei + 0

06/02/2014

Inayerô Sá

Bom dia, cara meu delphi é o xe2, mas quando você executou o código exibiu tudo, inclusive a imagem dentro da ação?


Foi mal Thiago, não prestei atenção e não vi a parte do código comentado.

att, Inayerô



Ainda está dando o erro aí ?

No código acima, só mostra o Formulário, não mostra nenhuma imagem pelo fato de que eu não vinculei o ActionManager a nenhum outro componente e também, não adicionei nenhuma imagem no ImageList, simplesmente o criei.



Att,
Thiago Irrazabal de Oliveira.



Cara o estranho que não da erro, mas a imagelist não está se vinculando a ação criada pelo actionmanager e não exibe a imagem nesta ação.
Estranho isso, o que acha que poderia ser?

Att,
Inayerô

Responder

Gostei + 0

06/02/2014

Thiago Irrazabal

Bom dia, cara meu delphi é o xe2, mas quando você executou o código exibiu tudo, inclusive a imagem dentro da ação?


Foi mal Thiago, não prestei atenção e não vi a parte do código comentado.

att, Inayerô



Ainda está dando o erro aí ?

No código acima, só mostra o Formulário, não mostra nenhuma imagem pelo fato de que eu não vinculei o ActionManager a nenhum outro componente e também, não adicionei nenhuma imagem no ImageList, simplesmente o criei.



Att,
Thiago Irrazabal de Oliveira.



Cara o estranho que não da erro, mas a imagelist não está se vinculando a ação criada pelo actionmanager e não exibe a imagem nesta ação.
Estranho isso, o que acha que poderia ser?

Att,
Inayerô




Cara, mas em momento algum do código tu adiciona uma imagem ao imagelist, é isso que está faltando.


Faz o Seguinte declara uma variável Btm do tipo TBitmap e depois do create do imagelist tu faz isso, substituindo o caminho ali pelo caminho e nome da imagem que tu quer:
  Bmp := TBitmap.Create;
 
  Bmp.LoadFromFile('C:\Temp\Imagem1.bmp');
 
  Imagelist1.Add(Bmp, nil);




Att,
Thiago Irrazabal de Oliveira.
Responder

Gostei + 0

06/02/2014

Inayerô Sá

Bom dia, cara meu delphi é o xe2, mas quando você executou o código exibiu tudo, inclusive a imagem dentro da ação?


Foi mal Thiago, não prestei atenção e não vi a parte do código comentado.

att, Inayerô



Ainda está dando o erro aí ?

No código acima, só mostra o Formulário, não mostra nenhuma imagem pelo fato de que eu não vinculei o ActionManager a nenhum outro componente e também, não adicionei nenhuma imagem no ImageList, simplesmente o criei.



Att,
Thiago Irrazabal de Oliveira.



Cara o estranho que não da erro, mas a imagelist não está se vinculando a ação criada pelo actionmanager e não exibe a imagem nesta ação.
Estranho isso, o que acha que poderia ser?

Att,
Inayerô




Cara, mas em momento algum do código tu adiciona uma imagem ao imagelist, é isso que está faltando.


Faz o Seguinte declara uma variável Btm do tipo TBitmap e depois do create do imagelist tu faz isso, substituindo o caminho ali pelo caminho e nome da imagem que tu quer:
  Bmp := TBitmap.Create;
 
  Bmp.LoadFromFile('C:\Temp\Imagem1.bmp');
 
  Imagelist1.Add(Bmp, nil);




Att,
Thiago Irrazabal de Oliveira.




Meu amigo Thiago, agora deu certo. Implementei o restante do código que me passas-te e realmente a imagem veio. Obrigado pela dica, fico extremamente agradecido.



att,
Inayerô

Responder

Gostei + 0

27/05/2014

Nelson Santos

Desenvolva softwares 3D em Delphi 7
www.3dsistemas.com.br
Responder

Gostei + 0

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

Aceitar