[firebase-br] off:menu

Sandro Souza escovadordebits em gmail.com
Sex Jun 5 13:34:55 -03 2009


Bom dia/tarde Samuel.

Grande Samuel, tem sim, veja essa minha sugestão:

1 - Crie uma variável do tipo TStringList, e instancie-a.

2 - Após gerar o código SQL da query que retornará todas as opções
disponíveis para aquele determinado usuário, abra-a.

3 - Percorra toda a query, acrescentando o valor chave para a lista
temporária (a TStringList).

4 - Feche a query.

5 - Percorra as opções do seu menu principal, como você já está fazendo, mas
agora você utilizaria o método "IndexOf" da sua variável TStringList para
saber se aquela determinada opção deve ou não ficar visível e/ou habilitada.
É muito mais rápido.

6 - Libere a sua variável TStringList temporária.

Outra dica, caso você queira agilizar a pesquisa interna do método IndexOf
da TStringList, e para isso ordene a lista, atribuindo True à propriedade
Sorted, saiba que o algoritmo de ordenação QuickSort que foi implementado no
Delphi desde a versão 1.0, e que ainda é o mesmo utilizado por várias
classes do Delphi (TList, TStrings, etc...) está FURADO.

Você pode fazer como eu fiz, ou seja, implementar uma classe descendente da
TStringList, e sobreescrever o método "Sort", implementando corretamente o
algorítmo QuickSort, e nesse caso, você instanciaria dessa nova classe,
podendo deixar os ítens ordenados logo após fechar a query, e dessa forma,
turbinar a pesquisa do método IndexOf.

Espero ter ajudado mais que atrapalhado. :D

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

> ola
>
> uso d7 com fb 2.1
>
> acho meu programa 'lento' pra montar o menu. uso TMainMenu, com os devidos
> sub menus.apos o usuario se logar, abro um query vendo quais sao as funcoes
> que ele pode executar e atraves de locate vou dando 'visible = true' nas
> funcoes. confome os sub menus estiverem liberados, libero o menu anterior
> tambem.
>
> entao é assim:
>
>
> montagem da query
> locate
> locate
> locate
> locate
> .
> .
> .
>
> um pra cada funcao
>
>
> tem uma forma mais 'técnica' de fazer isso?
>
> obrigado
>
> samuel
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista