Estender TMainMenu e MenuItem
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?
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
Curtidas 0
Melhor post
Emerson
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.
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...
GOSTEI 1
Mais Respostas
Renato Rubinho
04/05/2015
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;
GOSTEI 0
Emerson
04/05/2015
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;
GOSTEI 0
Renato Rubinho
04/05/2015
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.
Ele ficará num loop até chegar ao Form.
GOSTEI 0
Emerson
04/05/2015
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.
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?
GOSTEI 0
Renato Rubinho
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.
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.
GOSTEI 0