[firebase-br] off:menu

Sandro Souza escovadordebits em gmail.com
Sex Jun 5 14:47:51 -03 2009


Bom dia/tarde Samuel.

Pessoal, desculpem o post totalmente offtopic, mas talvez sirva para outros
participantes que tenham a mesma dúvida.

Grande Samuel, pelo que eu entendi, você está armazenando os nomes dos
componentes do tipo TMenuItem, ou seja, de cada uma das opções do seu menu
principal.

Se for isso mesmo, então tem como fazer isso que você deseja, da seguinte
forma:

1 - Crie uma rotina para percorrer todas as opções do seu menu principal,
escondendo-as ou desabilitando-as, lembrando que não deve processas as
opções cujo "Caption" é um sinal de menos, pois essas opções são apenas
separadores.

2 - Após gerar dinamicamente o código SQL da query que retorna apenas os
nomes desses componentes, use um método parecido com esse:

procedure TFormPrincipal.ExibeOpcoes(QueryDeOpcoes: TIBQuery {ou outro tipo
de query} );
var
  Opcao: TMenuItem;
begin
  // Laço para percorrer a query de opções.
  while not QueryDeOpcoes.EOF do
  begin
    // Nesse caso, o primeiro (e provavelmente único) campo dessa query
    // retorna o nome do componente da opção, e sendo assim, obtemos
    // o valor desse primeiro campo, e com ele, pesquisamos algum componente
    // com o mesmo nome.
    Opcao :=
TMenuItem(FindComponent(Trim(QueryDeOpcoes.Fields[0].AsString)));
    // Achou uma opção com esse nome?
    if Opcao <> nil then
      // Exibe-a.
      Opcao.Visible := True;
    // Próxima opção disponível.
    QueryDeOpcoes.Next;
  end; // while
end; // procedure TFormPrincipal.ExibeOpcoes

Lembre-se que, nesse exemplo, o primeiro (e provavelmente único) campo da
query retorna exatamente o nome do componente, do tipo TMenuItem, que deve
ser exibido.

Espero ter ajudado mais que atrapalhado. :D

2009/6/5 samuel ferreira <samuel.peres.ferreira em gmail.com>

> ola sandro
>
> ajudou sim (e muito). alias, e fico ate com vergonha, depois q li o q vc
> escreveu. qd alguem da uma luz, as coisas parecem simples (rssssss).
>
> obrigado ai, sandro
>
>
> obs.: aproveitando o gancho, tem como substituir o nome q to lendo na
> tabela para o objeto do menu?
>
> algo assim:
>
> ''''''nome lido em string transformado para menu.visible := true;''''''
>
>
> mas o q vc falou ai ja ai agilizar
>
>
>
>
>



Mais detalhes sobre a lista de discussão lista