Ir para conteúdo
Fórum Script Brasil
  • 0

Controle De Acesso Ao Menu


Halan Lopes

Pergunta

Olá amigos!

criei um Logoff da seguinte forma!

procedure TLoginfrm.BitBtn1Click(Sender: TObject);

Var Login, Senha, Tipo : String;

begin

ADOQuery1.Close;

ADOQuery1.SQL.Text:= 'Select * from Usuario

where Usuario.Usuario=:UsuarioBusca and Usuario.Senha=:SenhaBusca';

ADOQuery1.Parameters[0].Value:= EditLogin.Text;

ADOQuery1.Parameters[1].Value:= EditSenha.Text;

ADOQuery1.Open;

Login:= ADOQuery1Usuario.Value;

Senha:= ADOQuery1Senha.Value;

Tipo:= ADOQuery1Tipo.Value;

if (Login = EditLogin.Text) and (Senha = EditSenha.Text) and (Tipo = 'Administrador')

then begin

frmPrincipal.ShowModal;

end;

if (Login = EditLogin.Text) and (Senha = EditSenha.Text) and (Tipo = 'Usuario')

then begin

frmPrincipal.ShowModal;

end;

if (Login <> EditLogin.Text) and (Senha <> EditSenha.Text)

then begin

ShowMessage('Usuario ou Senha inválidos.');

EditLogin.Clear;

EditSenha.Clear;

EditLogin.SetFocus;

end;

end;

se vocês perceberem deixei o Administrador e Usuario com os mesmos direitos, como faço para que se use uma tabela criada com nome TipoDeAcesso que contem os campos Ex:

Tipo Acesso

Usuario Cadastro Clientes

Usuario Pedido

Usuario Recebimento de Pacelas

Usuario Estoque de Produtos

Administrador "Ativase todos os acessos"

agora a questão como inserir esses comamndos onde deveria ser ter EX:

frmPrincipal.Pedido.Enable:= False;

usar os campos que estão na tabela TipoDeAcesso para liberar ou bloquear o acesso ao menu?

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Criei uma tabela com esses campos

Campo -> Nome do campo do menu {Text}

Sequencia 1 -> 1,2,3,... {Text}

Ordem 1 -> 1,2,3,... {Text}

Flag -> .T. ou .F. {Boolean}

CampoNN -> Nome do SubCampo do menu{Text}

FlagNN Boolean -> .T. ou .F. {Boolean}

OBS "NN" em campoNN e FlagNN siganifica o numero de submenus nesse caso eu

usei até o campo05 e o flag05.

unit PrincipalPas;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics,

Controls, Forms, Dialogs, StdCtrls, Menus, Grids, DBGrids,

DB, DBTables, ExtCtrls, DBCtrls, Buttons;

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

Button1: TButton;

DBGrid1: TDBGrid;

DataSource1: TDataSource;

Table1: TTable;

Table1CAMPO: TStringField;

Table1SEQUENCIA: TStringField;

Table1ORDEM: TStringField;

Table1FLAG: TBooleanField;

Table1CAMPO01: TStringField;

Table1CAMPO02: TStringField;

Table1CAMPO03: TStringField;

Table1CAMPO04: TStringField;

Table1CAMPO05: TStringField;

Table1FLAG01: TBooleanField;

Table1FLAG02: TBooleanField;

Table1FLAG03: TBooleanField;

Table1FLAG04: TBooleanField;

Table1FLAG05: TBooleanField;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

NewItem: TMenuItem;

X, I, K: integer;

XCampo: string;

XFlag: Boolean;

begin

Table1.First;

K := Table1SEQUENCIA.AsInteger;

while (K <= 1000) and not Table1.Eof do

begin

K := Table1SEQUENCIA.AsInteger;

NewItem := TMenuItem.Create(MainMenu1);

try

NewItem.Caption := Table1CAMPO.Value;

NewItem.Enabled := Table1FLAG.Value;

MainMenu1.Items.Add(NewItem);

except

NewItem.Free;

raise; { reraise the exception }

end;

Table1.Next;

I := K;

while (I = K) and not Table1.Eof do

begin

NewItem := TMenuItem.Create(Self);

try

NewItem.Caption := Table1CAMPO.Value;

NewItem.Enabled := Table1FLAG.Value;

MainMenu1.Items[K - 1].Add(NewItem);

X := 1;

while (X <= 5) do

begin

XCampo := '';

XFlag := False;

if (X = 1) then

begin

XCampo := Table1CAMPO01.Value;

XFlag := Table1FLAG01.Value;

end

else if (X = 2) then

begin

XCampo := Table1CAMPO02.Value;

XFlag := Table1FLAG02.Value;

end

else if (X = 3) then

begin

XCampo := Table1CAMPO03.Value;

XFlag := Table1FLAG03.Value;

end

else if (X = 4) then

begin

XCampo := Table1CAMPO04.Value;

XFlag := Table1FLAG04.Value;

end

else if (X = 5) then

begin

XCampo := Table1CAMPO05.Value;

XFlag := Table1FLAG05.Value;

end;

if XCampo <> '' then

begin

NewItem := TMenuItem.Create(Self);

try

NewItem.Caption := XCampo;

NewItem.Enabled := XFlag;

MainMenu1.Items[K - 1].Items[Table1ORDEM.AsInteger - 1].Add(NewItem);

except

NewItem.Free;

raise; { reraise the exception }

end;

end;

Inc(X);

end;

except

NewItem.Free;

raise; { reraise the exception }

end;

Table1.Next;

K := Table1SEQUENCIA.AsInteger;

end;

end;

end;

end.

até ai deu certo mas como faço pra acionar o eventi onclick já que o mainmenu está vazio? ou alguém tem outra ideia?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...