quinta-feira, 7 de junho de 2007

Rotinas em DELPHI para um Painel Central Completo


A Unit "Unit_SGC_Painel_Central" controla a interface descrita na figura abaixo.


Como características principais tem-se:

Entrada Lógica no sistema;

Saída Lógica do sistema;

Ao saír, todos os formulários que estão criados serão automáticamente destruídos, para que um novo usuário possa logar-se e fazer uso do sistema conforme o seu perfil (dado pelo nível de acesso);

Uma série de controle são efetuados no processo de entrada e de saída lógica do sistema;
A seguir é apresentada a referida Unit.

unit Unit_SGC_Painel_Central;
interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, Menus, ComCtrls, jpeg, DB, ADODB, Unit_SGC_Data_Module;

type

Talx_frm_painel_central = class(TForm)

StatusBar1: TStatusBar; MainMenu1: TMainMenu; Saturno1: TMenuItem; Sair1: TMenuItem; Login1: TMenuItem; Configuraes1: TMenuItem; BancodeDados1: TMenuItem; Usurios1: TMenuItem; Sobre1: TMenuItem; AlexS1: TMenuItem; Relatrios1: TMenuItem; Panel1: TPanel; GroupBox1: TGroupBox; Panel2: TPanel; BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn3: TBitBtn; BitBtn4: TBitBtn; BitBtn5: TBitBtn; BitBtn6: TBitBtn; BitBtn7: TBitBtn; BitBtn8: TBitBtn; BitBtn9: TBitBtn; BitBtn10: TBitBtn; BitBtn11: TBitBtn; BitBtn12: TBitBtn; BitBtn13: TBitBtn; BitBtn14: TBitBtn; Panel3: TPanel; GroupBox2: TGroupBox; Edit1: TEdit; Edit2: TEdit; BitBtn15: TBitBtn; Label1: TLabel; Label2: TLabel; ADOQuery_SGC_Login: TADOQuery; Usurios2: TMenuItem; FilosofiadaAlexS1: TMenuItem; Manuteno1: TMenuItem; Image2: TImage;

procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);

procedure Sair1Click(Sender: TObject);
procedure BitBtn15Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn11Click(Sender: TObject);

procedure BitBtn6Click(Sender: TObject);

private
{ Private declarations }
//----------------
alx_str_user_nome : String;
alx_int_user_na_id : Integer;
alx_int_componentes_iniciais: Integer;
//----------------
function alx_boo_Usuario_Existe(alx_str_user_apelido_digitado: String): Boolean;
function alx_boo_Senha_Ok(alx_str_user_apelido_digitado: String ;
alx_str_senha_digitada: String): Boolean;
//----------------
procedure alx_voi_Habilitar_Botoes(alx_boo_liberar: Boolean);
procedure alx_voi_Habilitar_Menus(alx_boo_liberar: Boolean);
procedure alx_voi_Preparar_Form_Caso_Entrada_Logica();
procedure alx_voi_Preparar_Form_Caso_Saida_Logica();
procedure alx_voi_Preparar_Form_Caso_Usuario_E_Senha_Ok();
procedure alx_voi_Preparar_Form_Caso_Usuario_Ok_Senha_Errada();
procedure alx_voi_Preparar_Form_Caso_Usuario_Nao_Existe();
procedure alx_voi_Registrar_Entrada_Usuario(alx_str_nome: String ; alx_int_na_id: Integer);
procedure alx_voi_Registrar_Status_Bar_Usuario();
procedure alx_voi_Destruir_Todos_Os_Forms_Criados();
//----------------
public
{ Public declarations }
end;

var
alx_frm_painel_central: Talx_frm_painel_central;

implementation

uses Unit_SGC_Lancamentos_Receitas;

{$R *.dfm}

//============================================================================== procedure Talx_frm_painel_central.alx_voi_Destruir_Todos_Os_Forms_Criados();
begin
while (Application.ComponentCount > self.alx_int_componentes_iniciais) do begin
Application.Components[Application.ComponentCount - 1].Destroy;
end;
end;
//============================================================================== procedure Talx_frm_painel_central.alx_voi_Registrar_Entrada_Usuario(alx_str_nome: String ; alx_int_na_id: Integer);
begin
self.alx_str_user_nome := alx_str_nome;
self.alx_int_user_na_id:= alx_int_na_id;
end;
//============================================================================== procedure Talx_frm_painel_central.alx_voi_Registrar_Status_Bar_Usuario();
begin
self.StatusBar1.Panels[0].Text:= ' Usuário: ' + self.alx_str_user_nome;
self.StatusBar1.Panels[1].Text:= ' Nível de Acesso: ' + inttostr(self.alx_int_user_na_id);
end;
//============================================================================== function Talx_frm_painel_central.alx_boo_Usuario_Existe(alx_str_user_apelido_digitado: String): Boolean;
var
alx_str_sql_text : TStrings;
alx_boo_usuario_existe: Boolean;
alx_str_user_apelido : String;
begin
try
alx_str_sql_text:= TStringList.Create();
alx_str_sql_text.Add('SELECT USER_APELIDO FROM USERS ORDER BY USER_APELIDO ;');
self.ADOQuery_SGC_Login.Active:= False;
self.ADOQuery_SGC_Login.SQL.Clear();
self.ADOQuery_SGC_Login.SQL:= alx_str_sql_text;
self.ADOQuery_SGC_Login.Active:= True;
//------------
while not(self.ADOQuery_SGC_Login.Eof) do begin
alx_str_user_apelido:= self.ADOQuery_SGC_Login.Fields[0].AsString;
if (alx_str_user_apelido = alx_str_user_apelido_digitado ) then begin
alx_boo_usuario_existe:= true; break;
end
else begin
alx_boo_usuario_existe:= false;
end;
self.ADOQuery_SGC_Login.Next();
end;
//------------
except
on E:Exception do begin
ShowMessage('Ôpa, ocorreu um erro ao verificar a existência de um usuário! Veja: ' + E.Message);
end;
end;
result:= alx_boo_usuario_existe;
end;
//============================================================================== function Talx_frm_painel_central.alx_boo_Senha_Ok(alx_str_user_apelido_digitado: String ; alx_str_senha_digitada: String): Boolean;
var
alx_str_sql_text : TStrings;
alx_boo_senha_ok : Boolean;
alx_str_user_apelido : String;
alx_str_user_senha : String;
alx_int_na_id : Integer;
begin
try
alx_str_sql_text:= TStringList.Create();
alx_str_sql_text.Add('SELECT USER_APELIDO , USER_SENHA , USER_NA_ID FROM USERS ORDER BY USER_APELIDO ;');
self.ADOQuery_SGC_Login.Active:= False;
self.ADOQuery_SGC_Login.SQL.Clear();
self.ADOQuery_SGC_Login.SQL:= alx_str_sql_text;
self.ADOQuery_SGC_Login.Active:= True;
//------------
while not(self.ADOQuery_SGC_Login.Eof) do begin
alx_str_user_apelido:= self.ADOQuery_SGC_Login.Fields[0].AsString;
alx_str_user_senha := self.ADOQuery_SGC_Login.Fields[1].AsString;
alx_int_na_id := self.ADOQuery_SGC_Login.Fields[2].AsInteger;
if ((alx_str_user_apelido = alx_str_user_apelido_digitado) and (alx_str_user_senha = alx_str_senha_digitada) ) then begin
self.alx_voi_Registrar_Entrada_Usuario(alx_str_user_apelido , alx_int_na_id );
alx_boo_senha_ok:= true;
break;
end
else begin
alx_boo_senha_ok:= false;
end;
self.ADOQuery_SGC_Login.Next();
end;
//------------
except
on E:Exception do begin
ShowMessage('Ôpa, ocorreu um erro ao verificar a senha de um usuário! Veja: ' + E.Message);
end;
end;
result:= alx_boo_senha_ok;
end;
//============================================================================== procedure Talx_frm_painel_central.alx_voi_Preparar_Form_Caso_Usuario_E_Senha_Ok();
begin
self.alx_int_componentes_iniciais:= Application.ComponentCount;
self.Edit1.Color := clAqua;
self.Edit1.ReadOnly := True;
self.Edit2.Color := clAqua;
self.Edit2.ReadOnly := True;
self.Edit2.Text := 'edit2'; //... modifica o valor da senha ...
self.BitBtn15.Caption := 'saída lógica';
//-------------------
self.alx_voi_Habilitar_Botoes(True);
self.alx_voi_Habilitar_Menus(True);
self.alx_voi_Registrar_Status_Bar_Usuario();
end;
//============================================================================== procedure Talx_frm_painel_central.alx_voi_Preparar_Form_Caso_Usuario_Ok_Senha_Errada();
begin
self.Edit1.Color:= clGray;
self.Edit2.Color:= clYellow;
self.Edit2.SetFocus();
ShowMessage('ôpa, a senha do usuário [' + self.Edit1.Text + '] NÃO confere!' );
//-------------------
self.alx_voi_Habilitar_Botoes(False);
self.alx_voi_Habilitar_Menus(False);
end;
//============================================================================== procedure Talx_frm_painel_central.alx_voi_Preparar_Form_Caso_Usuario_Nao_Existe();
begin
self.Edit1.Color:= clRed; self.Edit1.SetFocus();
showmessage('ôpa, o usuário [' + self.Edit1.Text + '] NÃO existe!');
//-------------------
self.alx_voi_Habilitar_Botoes(False);
self.alx_voi_Habilitar_Menus(False);

end;
//==============================================================================

procedure Talx_frm_painel_central.alx_voi_Preparar_Form_Caso_Entrada_Logica();
begin
if (self.BitBtn15.Caption = 'entrada lógica') then begin
if(self.alx_boo_Usuario_Existe(self.Edit1.Text)) then begin
if(self.alx_boo_Senha_Ok(self.Edit1.Text , self.Edit2.Text)) then begin
self.alx_voi_Preparar_Form_Caso_Usuario_E_Senha_Ok();
end
else begin
self.alx_voi_Preparar_Form_Caso_Usuario_Ok_Senha_Errada();
end;
end
else begin
self.alx_voi_Preparar_Form_Caso_Usuario_Nao_Existe();
end;
end
else if(self.BitBtn15.Caption = 'saída lógica') then begin
self.alx_voi_Preparar_Form_Caso_Saida_Logica();
end;
end;
//============================================================================== procedure Talx_frm_painel_central.alx_voi_Preparar_Form_Caso_Saida_Logica();
begin
self.Edit1.Text:= 'digite o nome';
self.Edit1.ReadOnly:= False;
self.Edit1.Color:= clWhite;
self.Edit2.Text:= 'edit2';
self.Edit2.ReadOnly:= False;
self.Edit2.Color:= clWhite;
self.BitBtn15.Caption:= 'entrada lógica';
//-------------------
self.alx_voi_Destruir_Todos_Os_Forms_Criados();
self.alx_voi_Habilitar_Botoes(False);
self.alx_voi_Habilitar_Menus(False);
end;
//============================================================================== procedure Talx_frm_painel_central.alx_voi_Habilitar_Botoes(alx_boo_liberar: Boolean);
begin
self.BitBtn1.Enabled := True;
self.BitBtn2.Enabled := alx_boo_liberar;
self.BitBtn3.Enabled := alx_boo_liberar;
self.BitBtn4.Enabled := alx_boo_liberar;
self.BitBtn5.Enabled := alx_boo_liberar;
self.BitBtn6.Enabled := alx_boo_liberar;
self.BitBtn7.Enabled := alx_boo_liberar;
self.BitBtn8.Enabled := alx_boo_liberar;
self.BitBtn9.Enabled := alx_boo_liberar;
self.BitBtn10.Enabled:= alx_boo_liberar;
self.BitBtn11.Enabled:= alx_boo_liberar;
self.BitBtn12.Enabled:= alx_boo_liberar;
self.BitBtn13.Enabled:= alx_boo_liberar;
self.BitBtn14.Enabled:= alx_boo_liberar;
self.BitBtn15.Enabled:= True;
end;
//============================================================================== procedure Talx_frm_painel_central.alx_voi_Habilitar_Menus(alx_boo_liberar: Boolean);
begin
self.MainMenu1.Items[0].Items[0].Enabled:= True;
self.MainMenu1.Items[0].Items[1].Enabled:= alx_boo_liberar;
self.MainMenu1.Items[0].Items[2].Enabled:= alx_boo_liberar;
//------------
self.MainMenu1.Items[1].Items[0].Enabled:= alx_boo_liberar;
//------------
self.MainMenu1.Items[2].Items[0].Enabled:= True;
self.MainMenu1.Items[2].Items[1].Enabled:= True;
self.MainMenu1.Items[2].Items[2].Enabled:= True;
//------------
self.MainMenu1.Items[3].Items[0].Enabled:= alx_boo_liberar;
end;
//==============================================================================

//============================================================================== procedure Talx_frm_painel_central.BitBtn1Click(Sender: TObject);
begin
self.Close();
end;
//==================================================================== procedure Talx_frm_painel_central.FormCreate(Sender: TObject);
begin
self.alx_voi_Habilitar_Botoes(False);
self.alx_voi_Habilitar_Menus(False);
end;
//================================================================== procedure Talx_frm_painel_central.Sair1Click(Sender: TObject);
begin
self.Close();
end;
//================================================================== procedure Talx_frm_painel_central.BitBtn15Click(Sender: TObject);
begin
self.alx_voi_Preparar_Form_Caso_Entrada_Logica();
end;
//================================================================== procedure Talx_frm_painel_central.BitBtn2Click(Sender: TObject);
var
alx_frm_lancamentos_receitas: Talx_frm_sgc_lancamentos_receitas;
begin
alx_frm_lancamentos_receitas:= Talx_frm_sgc_lancamentos_receitas.alx_voi_Create(Application);
end;
//================================================================== procedure Talx_frm_painel_central.BitBtn11Click(Sender: TObject);
var
alx_int_count: Integer;
begin

alx_int_count:= Application.ComponentCount;
showmessage('Contagem de formulários: [' + inttostr(alx_int_count) + ']');
end;
//================================================================== procedure Talx_frm_painel_central.BitBtn6Click(Sender: TObject);
begin
self.alx_voi_Destruir_Todos_Os_Forms_Criados();
end;
//================================================================== end.

Nenhum comentário: