Jump to content

Archived

This topic is now archived and is closed to further replies.

Ådriano

Mainmenu

Recommended Posts

Ola...tenho a seguinte duvida :como esconder itens do menu....POe exemplo cadastro o usuario e neste cadastro tem um campo da tabela que é um campo logico(sim/não )certo.....Ai quando a pessoa loga e este campo estiver TICADO(true) ele libera o menu e se estiver apagado(false )ele não libera tentei aqui de tudo que foi Jeito mas não fununcia.RSRSRSRStipo assimif campotabela.value=true thenbeginmainmenu1.items.enable:=false;mas não fununcia de jeito nenhum ....Alguem poderia me dar uma LUZ......

Share this post


Link to post
Share on other sites

Não se esqueça tb que o MainMenu trabalha em níveis, ou seja, existe os .Items que você precisa controlar para dexar invisível algo, exemplo:

 

Digamos o menu neste contexto:

 

Teste   - Teste2		 - Teste3		 - Teste4			   - Teste5
Executando o comando:

 

MainMenu1.Items[0].Items[0].Items[0].Visible:=False;
Iremos ficar com:

 

Teste   - Teste2		 - Teste4			   - Teste5
Ou seja, o Teste3 acaba sumindo, nesta questão que você terá de criar o seu controle de menu, utilizando os .Items, ou então de forma direta dando um .Visible:=False na opção, tipo:

 

Teste3.Visible:=False;

Share this post


Link to post
Share on other sites

No clique de um botão para testar...

procedure TForm1.Button1Click(Sender: TObject);Var i,j,w : Integer;begin  //Grava na tabela de Permissão os itens do menu...  For i := 0 to MainMenu1.Items.Count - 1 do  Begin	  TblPermissaoCampo.Value := (MainMenu1.Items[i].Caption);	  For j := 0 to MainMenu1.Items[i].Count - 1 do	  Begin		TblPermissaoCampo.Value := (MainMenu1.Items[i].Items[j].Caption);		For w := 0 to MainMenu1.Items[i].Items[j].Count - 1 do		Begin				  TblPermissaoCampo.Value := (MainMenu1.Items[i].Items[j].Items[w].Caption);		End;	  End;  End;end;

Share this post


Link to post
Share on other sites

E aproveitano este tópico ...ja deixando claro que vou testar estes codigos que me passaram....a outra duvida foi a seguinte:em um outro projeto estava eu usando tabelas em access então o codigo de procurar por datas era:adoquery1.Close;adoquery1.SQL.Clear;adoquery1.SQL.Add('select *');adoquery1.SQL.Add('from tabela1');adoquery1.SQL.Add('where tabela1.dataabertura between :dtInicio and :dtFim');adoquery1.SQL.Add('and tabela1.CLIENTE = ''' + edit1.Text + '''');adoquery1.Parameters.ParamByName('dtInicio').Value:=StrToDate(DateToStr(dtInicio.Date));adoquery1.parameters.ParamByName('dtFim').Value:=StrToDate(DateToStr(dtFim.Date));adoquery1.Open;agora estou usando tabelas paradox...onde é que tem que mudar ????

Share this post


Link to post
Share on other sites

adoquery1.Close;adoquery1.SQL.Clear;adoquery1.SQL.Add('select *');adoquery1.SQL.Add('from tabela1');adoquery1.SQL.Add('where tabela1.dataabertura between :dtInicio and :dtFim');adoquery1.SQL.Add('and tabela1.CLIENTE = ''' + edit1.Text + '''');adoquery1.Parameters.ParamByName('dtInicio').asDate:= dtInicio.Date;adoquery1.parameters.ParamByName('dtFim').asDate:= dtFim.Date;adoquery1.Open;

Share this post


Link to post
Share on other sites

Tente isso:

 

query1.Close;query1.SQL.Clear;query1.SQL.Add('select *');query1.SQL.Add('from tabela1');query1.SQL.Add('where tabela1.dataabertura between :dtInicio and :dtFim');query1.SQL.Add('and tabela1.CLIENTE = '+ QuotedStr(Edit1.Text));query1.ParamByName('dtInicio').asDate:= dtInicio.Date;query1.ParamByName('dtFim').asDate:= dtFim.Date;query1.Open;

 

Aguardo um retorno seu...

Share this post


Link to post
Share on other sites

olha só da um erro ainda...olha só o código resolvi mudar ..não colocar um edit para pesquisar simplismente os dois datetime...então fiz assim:query1.Close;query1.SQL.Clear;query1.SQL.Add('select *');query1.SQL.Add('from dados');query1.SQL.Add('where dados.nomedono between :dtInicio and :dtFim');query1.ParamByName('dtInicio').asDate:= dtInicio.Date;query1.ParamByName('dtFim').asDate:= dtFim.Date;query1.Open;mas ainda da um erro de" type mismatch in expression"

Share this post


Link to post
Share on other sites

query1.Close;

query1.SQL.Clear;

query1.SQL.Add('select *');

query1.SQL.Add('from dados');

 

 

query1.SQL.Add('where dados.nomedono between :dtInicio and :dtFim');

query1.ParamByName('dtInicio').asDate:= dtInicio.Date;

query1.ParamByName('dtFim').asDate:= dtFim.Date;

query1.Open;

 

 

O erro seu esta na linha marcada em vermelho...

 

no caso você se confundiu....

 

utilizando o campo nome do dono que no caso é texto, com um between, que serve pára intervalo de valores, datas....

 

e ai deu Tipo Trocado na Expressão....

 

 

troque o campo em vermelho por um do tipo data e ele irá filtrar...

 

 

Espero ter ajudado....

 

 

 

http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif/>

Share this post


Link to post
Share on other sites

então vamos la.....este é o código que useiquery1.Close;query1.SQL.Clear;query1.SQL.Add('select *');query1.SQL.Add('from dados');query1.SQL.Add('where dados.dtemprestado between :dtInicio and :dtFim');query1.ParamByName('dtInicio').asDate:= dtInicio.Date;query1.ParamByName('dtFim').asDate:= dtFim.Date;query1.Open;o campo dtemprestado é do tipo data agora mas mesmo assim continua dando o mesmo erro.....(será que só acontece comigo ...rsrsrsr),Então só para lembrar estou usando tabelas paradox e componentes da paleta bde.....mesmo assim ta dando o mesmo erro VIXI que treta feia....

Share this post


Link to post
Share on other sites

Consegui que erro tão infantil....eu tinha trocado o campo para data mas não tinha salvo ....puxa que vergonha....Mas muito obrigado a todos vcs que novamente me deram esta luz deu certinho depois que consertei o campo.......Meu muito obrigado e sinseras desculpas pela falta de atenção com o campo....valeu gente até a próxima....

Share this post


Link to post
Share on other sites

Agora a duvida é a seguinte:Códigoquery1.Close;query1.SQL.Clear;query1.SQL.Add('select *');query1.SQL.Add('from dados');query1.SQL.Add('where dados.dtemprestado between :dtInicio and :dtFim');Query1.SQL.Add('and Dados.Checkemprestimo');query1.ParamByName('dtInicio').asDate:= dtInicio.Date;query1.ParamByName('dtFim').asDate:= dtFim.Date;query1.Open;estou colocando mais um campo da tabela para pesquisar (este campo é um campo Lógico)mas sempre da erro na linha deste campo..... E agora meus amigos....???

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.