Fórum Estender TMainMenu e MenuItem #518706

04/05/2015

0

Pessoal, bom dia...

Estou criando meu próprio controle de permissão e no meu sistema estou usando o MainMenu padrão do Delphi... Nele, quando crio um novo MenuItem, a unica opção que tenho para digitar um texto é o Caption que será exibido ao usuário... porem, para salvar as permissões eu gostaria de salvar o nome no formulario em questão e não o Caption...

Não vejo outra forma a não ser estender as propriedades do MainMenu e criar minha propria propriedade onde eu possa informar o nome do formulario... Só que não estou conseguindo fazer isso... tentei criar um novo componente herdando o MenuItem e o MainMenu e da "pau" pra todo lado...

Alguem tem alguma dica ou sugestão de como posso estender este componente ou de como poderia fazer o que estou querendo?
Emerson

Emerson

Responder

Post mais votado

04/05/2015

Entendi que você queria pegar o Formulário onde foi criado o menuitem. Você quer armazenar o formulário que o menuitem irá chamar.
Uma sugestão (útil desta vez rsrsrs) é dar o nome do menuitem concatenado com o nome do Form de destino ao invés de criar um componente só para isso.

Ex: Para o Form frmCadastro, o nome do menuitem seria mi_frmCadastro.


Sim, isso seria bem interessante mesmo... Simples e não tinha pensado.. apesar de que criando o componente eu pretendia tambem criar uma sobre carga do metodo clic, e com isso eu poderia já chamar o formulario sem escrever codigo algum...

Mais obrigado pela ajuda... o Nome do Formulario no Name do Item já vai me ajudar bem...

Emerson

Emerson
Responder

Gostei + 1

Mais Posts

04/05/2015

Renato Rubinho

Tente regredir nos parents até chegar no form. Ex:

var
  oObjeto: TOBject;
begin
  oObjeto := Seumenuitem;

  while True do
  begin
    if oObjeto.Parent is TForm then
    begin
      ShowMessage(TForm(oObjeto.Parent).Name);
      break; 
    end
    else
    begin
      oObjeto := oObjeto.Parent;
    end;
  end;
Responder

Gostei + 0

04/05/2015

Emerson

Tente regredir nos parents até chegar no form. Ex:

var
  oObjeto: TOBject;
begin
  oObjeto := Seumenuitem;

  while True do
  begin
    if oObjeto.Parent is TForm then
    begin
      ShowMessage(TForm(oObjeto.Parent).Name);
      break; 
    end
    else
    begin
      oObjeto := oObjeto.Parent;
    end;
  end;


rrbuinho, bom dia e obrigado pela ajuda... mais não atende o que preciso visto que quando criamos um MenuItem, ele não tem parentesco com o formulario que vai ser chamado no evento OnClique no menuitem... Sendo assim, não consigo obter qual form estou chamando e consequentemente não consigo gravar nas minhas tabelas de acesso a não ser o Caption do MenuItem;
Responder

Gostei + 0

04/05/2015

Renato Rubinho

Faz um teste com o exemplo que passei, pois acho que atende ao que precisa de forma recursiva, alimentando o oObjeto com o Parent, verificando o Parent do Parent.
Ele ficará num loop até chegar ao Form.
Responder

Gostei + 0

04/05/2015

Emerson

Faz um teste com o exemplo que passei, pois acho que atende ao que precisa de forma recursiva, alimentando o oObjeto com o Parent, verificando o Parent do Parent.
Ele ficará num loop até chegar ao Form.


Mais como vou chegar no formulario se em nenhum momento informo ele? o Unico fomrulario que vai chegar é o frmMenu.. rs.. não to certo?
Responder

Gostei + 0

04/05/2015

Renato Rubinho

Entendi que você queria pegar o Formulário onde foi criado o menuitem. Você quer armazenar o formulário que o menuitem irá chamar.
Uma sugestão (útil desta vez rsrsrs) é dar o nome do menuitem concatenado com o nome do Form de destino ao invés de criar um componente só para isso.

Ex: Para o Form frmCadastro, o nome do menuitem seria mi_frmCadastro.
Responder

Gostei + 0

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

Aceitar