sexta-feira, 29 de junho de 2007

Rotina em DELPHI para inserção de Tuplas


O artefato de software abaixo descreve uma rotina de inserção de uma nova Turma na tabela de Turmas. Quando o usuário escolhe inserir uma nova Turma por meio de um botão adequado, a inserção de fato somente é confirmada se o sistema retorna um Boolean "Verdadeiro" para a operacção denominada "Tuma inserida com sucesso". Caso contrário, trata-se a exceção e mantém-se a interface para as devidos ajustes. Veja abaixo:

//------------------------------------------------------------------------------
function TF_Turmas.Alx_Turma_Inserido_Com_Sucesso(): Boolean;
var
alx_str_sql_texto : TStrings;
alx_boo_apoio : Boolean;
alx_int_turma_id : Integer;
alx_str_turma_apelido : String;
alx_str_turma_nome : String;
begin
alx_str_sql_texto:= TStringList.Create();
try
alx_int_turma_id := self.Alx_Get_Turma_Id();
alx_str_turma_apelido:= self.Edit2.Text;
alx_str_turma_nome := self.Edit3.Text;
//-----------------------------------------------
alx_str_sql_texto.Add('INSERT INTO TURMAS VALUES ( :, :, : ) ');
F_Data_Module.ADOQuery_Cadastro_Turmas.Active:= False;
F_Data_Module.ADOQuery_Cadastro_Turmas.SQL:= alx_str_sql_texto;
F_Data_Module.ADOQuery_Cadastro_Turmas.Parameters[0].Value:= alx_int_turma_id;
F_Data_Module.ADOQuery_Cadastro_Turmas.Parameters[1].Value:= alx_str_turma_apelido;
F_Data_Module.ADOQuery_Cadastro_Turmas.Parameters[2].Value:= alx_str_turma_nome;
F_Data_Module.ADOQuery_Cadastro_Turmas.ExecSQL;
//------------------------------------------------
alx_str_sql_texto.Clear();
alx_str_sql_texto.Add('SELECT * FROM TURMAS ORDER BY TURMA_NOME ');
F_Data_Module.ADOQuery_Cadastro_Turmas.SQL:= alx_str_sql_texto;
F_Data_Module.ADOQuery_Cadastro_Turmas.Active:= True;
//------------------------------------------------
self.Alx_Turma_Set_Focus(alx_int_turma_id);
self.Alx_Atualizar_Turma();
alx_boo_apoio:= True;
except
on E: Exception do
begin
alx_str_sql_texto.Clear();
alx_str_sql_texto.Add('SELECT * FROM TURMAS ORDER BY TURMA_NOME ');
F_Data_Module.ADOQuery_Cadastro_Turmas.SQL:= alx_str_sql_texto;
F_Data_Module.ADOQuery_Cadastro_Turmas.Active:= True;
self.Alx_Atualizar_Turma();
showmessage('Ôpa, ocorreu um erro ao INSERIR um novo Turma! Veja: ' + E.Message);
alx_boo_apoio:= False;
end;
end;
result:= alx_boo_apoio;
end;
//---------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------
procedure TF_Turmas.Alx_Preparar_Para_Inserir();
begin
if(self.BitBtn1.Caption = 'inserir') then
begin
self.Alx_Limpar_Caixas_Texto_Turma(); //...limpar as caixas de texto
self.Alx_Liberar_Componentes_Para_Insercao(True); //...libera o groupbox das caixas de texto
self.BitBtn1.Caption:= 'salvar';
end
else if( (self.BitBtn1.Caption = 'salvar') and (self.Alx_Turma_Inserido_Com_Sucesso()) ) then
begin
self.Alx_Liberar_Componentes_Para_Insercao(False);
self.BitBtn1.Caption:= 'inserir';
end;
end;
//------------------------------------------------------------------------------

A interface se Turmas é apresentada abaixo:

segunda-feira, 25 de junho de 2007

Rotina em DELPHI para Top 10 entre datas escolhidas do Sistema de Video Locadora

A rotina abaixo descreve os 10 clientes que realizaram as maiores quantidades de empréstimos, entre duas datas, no sistema de Video Locadora. Lembre-se que essa quantidade é diferente do maior número de DVD´s locados (empréstimos podem ter um ou vários DVD´s locados).
//===================================================================================
procedure TForm_consultas_top_10.Button1Click(Sender: TObject);
var
alx_str_sql_texto1: TStrings;
alx_dat_data_1 : Tdate;
alx_dat_data_2 : TDate;
begin
try
alx_dat_data_1:= strtodate(self.Edit2.Text);
alx_dat_data_2:= strtodate(self.Edit3.Text);
alx_str_sql_texto1:= TStringList.Create();
alx_str_sql_texto1.Add('SELECT TOP 10 Cli_Id, Cli_Nome, Count(EE_EMP_ID) ');
alx_str_sql_texto1.Add('FROM clientes, emprestimos, emprest_x_exemp ');
alx_str_sql_texto1.Add('WHERE Cli_id = Emp_Cli_Id_Titular And Emp_id = EE_EMP_ID and Emp_Data between : And : ');
alx_str_sql_texto1.Add('GROUP BY Cli_Id, Cli_Nome ');
alx_str_sql_texto1.Add('ORDER BY Count(EE_EMP_ID) DESC , CLI_NOME ; ');
self.ADOQuery1.Active:= False;
self.ADOQuery1.SQL.Clear();
self.ADOQuery1.SQL:= alx_str_sql_texto1;
self.ADOQuery1.Parameters[0].DataType:= FTDate;
self.ADOQuery1.Parameters[0].Value:= alx_dat_data_1;
self.ADOQuery1.Parameters[1].DataType:= FTDate;
self.ADOQuery1.Parameters[1].Value:= alx_dat_data_2;
self.ADOQuery1.Active:= True;
except
on E: Exception do begin
showmessage('Ôpa, ocorreu um erro ao Pesquisar o conjunto Top Ten! Veja: ' + E.Message );
end;
end;
end;
//===================================================================================

sexta-feira, 15 de junho de 2007

Rotina em DELPHI para localizar nomes de Clientes em um dado DBGrid

A procedure abaixo deve ser solicitada no evento "OnKeyUp" do Edit utilizado para fazer a pesquisa de localização. Então, cada vez que um usuário digita uma tecla e solta-a, é disparado o evento que chama a procedure
"alx_voi_Localizar_Clientes()". O grid associado ao componente "ADOQuery_Clientes"
é preenchido com os clientes que satisfazem o critério de pesquisa e localização.
É isso, simples e eficiente...:)

//===========================================================================
procedure Tfrm_clientes.alx_voi_Localizar_Clientes();
var
alx_str_sql_texto: TStrings;
alx_str_prefixo : String;
begin
try
alx_str_prefixo:= self.Edit1.Text + '%'; //... utilizando o curinga "%" como sufixo de pesquisa ...
alx_str_sql_texto:= TStringList.Create();
alx_str_sql_texto.Add('SELECT CLI_ID , CLI_NOME , CLI_CPF , CLI_FONE , CLI_ENDERECO , CLI_CITY_ID , ');
alx_str_sql_texto.Add(' CITY_NOME , UF_SIGLA , CLI_NIVER , CLI_FUNC_ID , FUNC_APELIDO ');
alx_str_sql_texto.Add('FROM CLIENTES , CIDADES , UNIDADES_FEDERACAO , FUNCIONARIOS ');
alx_str_sql_texto.Add('WHERE CLI_CITY_ID = CITY_ID AND CITY_UF_ID = UF_ID AND CLI_FUNC_ID = FUNC_ID ');
alx_str_sql_texto.Add(' AND CLI_NOME LIKE : ');
alx_str_sql_texto.Add('ORDER BY CLI_NOME ; ');
self.ADOQuery_Clientes.Active:= False;
self.ADOQuery_Clientes.SQL.Clear();
self.ADOQuery_Clientes.SQL:= alx_str_sql_texto;
self.ADOQuery_Clientes.Parameters[0].Value:= sl_str_prefixo;
self.ADOQuery_Clientes.Active:= True;
except
on E: Exception do begin
showmessage('Ôpa, ocorreu um erro ao Pesquisar o conjunto de CLIENTES! Veja: ' + E.Message );
end;
end;
end;
//==============================================================================
//==============================================================================

domingo, 10 de junho de 2007

Rotinas em DELPHI para Popular um ComboBox


Esta postagem tem duplo objetivo:
(i) Mostar como se pode popular um combobox com valores buscados de um banco de dados;
(ii)Mostar como se pode buscar um código "id" em um banco de dados a partir de um nome selecionado previamente em um componente "ComboBox".

Os componentes "TEdit´s" que receberão os "Id´s" e os componentes "TComboBox´s" estão descritos na figura abaixo.



São apresentados métodos específicos para buscar um código "Id" de uma dada conta escolhida pelo usuário ao selecionar um item de um combobox básico.

Primeiro evento: O usuário seleciona um item de um combobox;
Segundo evento : Ao selecionar uma conta, coloca-se o valor do "Id" em um edit específico Para tanto, acessa-se o banco de dados e busca-se o "id" pelo nome selecionado.


Veja o corpo das functions abaixo na seção "implementation":
function alx_int_Pegar_Conta_Bancaria_Id(alx_str_conta_bancaria_nome: String): Integer;
function alx_int_Pegar_Conta_Nivel_4_Id(alx_str_conta_nivel_4_nome: String): Integer;


unit Unit_SGC_Lancamentos_Receitas;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, Grids, DBGrids, DB, ADODB, Unit_SGC_Data_Module;

type
Talx_frm_sgc_lancamentos_receitas = class(TForm)

StatusBar1: TStatusBar; Panel1: TPanel; BitBtn1: TBitBtn; GroupBox1: TGroupBox; ComboBox1: TComboBox; Edit1: TEdit; Label1: TLabel; ComboBox2: TComboBox; Label2: TLabel; Edit2: TEdit; Edit3: TEdit; Label3: TLabel; Edit4: TEdit; Label4: TLabel; Edit5: TEdit; Label5: TLabel; Edit6: TEdit; Label6: TLabel; Panel3: TPanel; DBGrid1: TDBGrid; GroupBox2: TGroupBox; Edit7: TEdit; BitBtn2: TBitBtn; BitBtn3: TBitBtn; RadioGroup1: TRadioGroup; RadioButton1: TRadioButton; RadioButton2: TRadioButton; Edit8: TEdit; ADOQuery_Rateios: TADOQuery; DataSource_Rateios: TDataSource; ADOQuery_Atividades_Extensao: TADOQuery; DataSource_Atividades_Extensao: TDataSource; ADOQuery_Apoio: TADOQuery; GroupBox3: TGroupBox; DBGrid_Atividades_Extensao: TDBGrid; Edit9: TEdit; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure RadioButton2Click(Sender: TObject); procedure RadioButton1Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure BitBtn3Click(Sender: TObject); procedure DBGrid_Atividades_ExtensaoCellClick(Column: TColumn); procedure DBGrid_Atividades_ExtensaoKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);

procedure ComboBox1Select(Sender: TObject);
procedure ComboBox2Select(Sender: TObject);

private
{ Private declarations }
alx_str_user_nome : String;
alx_int_user_na_id: Integer;
//-------
function alx_int_Pegar_Conta_Bancaria_Id(alx_str_conta_bancaria_nome: String): Integer;
function alx_int_Pegar_Conta_Nivel_4_Id(alx_str_conta_nivel_4_nome: String): Integer;
//-------
procedure alx_voi_Atualizar_Cartao_Atividades_Extensao();
procedure alx_voi_Definir_Data_Lancamento_Receita();
procedure alx_voi_Popular_Contas_Bancarias_ComboBox();
procedure alx_voi_Popular_Contas_Nivel_4_ComboBox();
procedure alx_voi_Popular_Grid_Atividades_Extensao();
procedure alx_voi_Rateio_Preparar_Para_Digitar_Valor();
procedure alx_voi_Rateio_Preparar_Para_Calcular_Automaticamente();
procedure alx_voi_Registrar_Entrada_Usuario(alx_str_nome: String ; alx_int_na_id: Integer);
procedure alx_voi_Registrar_Status_Bar_Usuario();

public
{ Public declarations }
constructor alx_voi_Create(alx_obj_owner: TComponent ; alx_str_user_name: String ; alx_int_nivel_acesso_id: Integer);
destructor alx_voi_Destroy();
end;

implementation

{$R *.dfm}

//==============================================================================
function Talx_frm_sgc_lancamentos_receitas.alx_int_Pegar_Conta_Bancaria_Id(alx_str_conta_bancaria_nome: String): Integer;
var
alx_str_sql_text: TStrings; alx_int_apoio : Integer;
begin
try
alx_str_sql_text:= TStringList.Create();
alx_str_sql_text.Add('SELECT CB_ID FROM CONTAS_BANCARIAS WHERE CB_NOME = : ');
self.ADOQuery_Apoio.Active:= False;
self.ADOQuery_Apoio.SQL.Clear();
self.ADOQuery_Apoio.SQL:= alx_str_sql_text;
self.ADOQuery_Apoio.Parameters[0].Value:= alx_str_conta_bancaria_nome;
self.ADOQuery_Apoio.Active:= True;
//-----------------
alx_int_apoio:= self.ADOQuery_Apoio.Fields[0].AsInteger;
self.ADOQuery_Apoio.Active:= False;
//-----------------
except
on E: Exception do begin
alx_int_apoio:= 0;
showmessage('Ôpa, ocorreu um erro ao buscar o código para uma Contas de Nível 4 de nome conhecido! Veja: ' + E.Message);
end;
end;
result:= alx_int_apoio;
end;
//==============================================================================
function Talx_frm_sgc_lancamentos_receitas.alx_int_Pegar_Conta_Nivel_4_Id(alx_str_conta_nivel_4_nome: String): Integer;
var
alx_str_sql_text: TStrings; alx_int_apoio : Integer;
begin
try
alx_str_sql_text:= TStringList.Create();
alx_str_sql_text.Add('SELECT CN4_ID FROM CONTAS_NIVEL_4 WHERE CN4_NOME = : ');
self.ADOQuery_Apoio.Active:= False;
self.ADOQuery_Apoio.SQL.Clear();
self.ADOQuery_Apoio.SQL:= alx_str_sql_text;
self.ADOQuery_Apoio.Parameters[0].Value:= alx_str_conta_nivel_4_nome;
self.ADOQuery_Apoio.Active:= True;
//-----------------
alx_int_apoio:= self.ADOQuery_Apoio.Fields[0].AsInteger;
self.ADOQuery_Apoio.Active:= False;
//-----------------
except
on E: Exception do begin
alx_int_apoio:= 0;
showmessage('Ôpa, ocorreu um erro ao buscar o código para uma Contas de Nível 4 de nome conhecido! Veja: ' + E.Message);
end;
end;
result:= alx_int_apoio;
end;
//==============================================================================
procedure Talx_frm_sgc_lancamentos_receitas.ComboBox1Select( Sender: TObject);
begin
self.Edit1.Text:= inttostr(self.alx_int_Pegar_Conta_Bancaria_Id(self.ComboBox1.Text));
end;
//==============================================================================
procedure Talx_frm_sgc_lancamentos_receitas.ComboBox2Select(Sender: TObject);
begin
self.Edit2.Text:= inttostr(self.alx_int_Pegar_Conta_Nivel_4_Id(self.ComboBox2.Text));
end;
//==============================================================================
procedure Talx_frm_sgc_lancamentos_receitas.alx_voi_Popular_Contas_Bancarias_ComboBox();
var
alx_str_sql_text: TStrings;
begin
try
alx_str_sql_text:= TStringList.Create();
alx_str_sql_text.Add('SELECT CB_NOME FROM CONTAS_BANCARIAS WHERE CB_ATIVO = TRUE ORDER BY CB_NOME ;');
self.ADOQuery_Apoio.Active:= False;
self.ADOQuery_Apoio.SQL.Clear();
self.ADOQuery_Apoio.SQL:= alx_str_sql_text;
self.ADOQuery_Apoio.Active:= True;
//-----------------
self.ComboBox1.Items.Clear();
while not(self.ADOQuery_Apoio.Eof) do begin
self.ComboBox1.Items.Add(self.ADOQuery_Apoio.Fields[0].AsString);
self.ADOQuery_Apoio.Next();
end;
self.ComboBox1.Text:= 'escolha uma conta bancária';
self.Edit1.Text:= '';
//-----------------
self.ADOQuery_Apoio.Active:= False;
//-----------------
except
on E: Exception do begin
showmessage('Ôpa, ocorreu um erro ao popular o combo de Contas Bancárias! Veja: ' + E.Message);
end;
end;
end;
//==============================================================================
procedure Talx_frm_sgc_lancamentos_receitas.alx_voi_Popular_Contas_Nivel_4_ComboBox();
var
alx_str_sql_text: TStrings;
begin
try
alx_str_sql_text:= TStringList.Create();
alx_str_sql_text.Add('SELECT CN4_NOME '); alx_str_sql_text.Add('FROM CONTAS_NIVEL_4 , CONTAS_NIVEL_3 , CONTAS_NIVEL_2 , CONTAS_NIVEL_1 ');
alx_str_sql_text.Add('WHERE CN4_CN3_ID = CN3_ID AND CN3_CN2_ID = CN2_ID AND ');
alx_str_sql_text.Add(' CN2_CN1_ID = CN1_ID AND CN1_ID = 4 AND CN4_ATIVO = TRUE ');
alx_str_sql_text.Add('ORDER BY CN4_NOME ; ');
self.ADOQuery_Apoio.Active:= False;
self.ADOQuery_Apoio.SQL.Clear();
self.ADOQuery_Apoio.SQL:= alx_str_sql_text;
self.ADOQuery_Apoio.Active:= True;
//-----------------
self.ComboBox2.Items.Clear();
while not(self.ADOQuery_Apoio.Eof) do begin
self.ComboBox2.Items.Add(self.ADOQuery_Apoio.Fields[0].AsString);
self.ADOQuery_Apoio.Next();
end;
self.ComboBox2.Text:= 'escolha uma conta de nível 4 para o lançamento';
self.Edit2.Text:= '';
//-----------------
self.ADOQuery_Apoio.Active:= False;
//-----------------
except
on E: Exception do begin
showmessage('Ôpa, ocorreu um erro ao popular o combo de Contas de Nível 4! Veja: ' + E.Message);
end;
end;
end;
//==============================================================================
end.

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.

sexta-feira, 1 de junho de 2007

Rotina em DELPHI para Popular Grid de Atores no Sistema SVL

unit Unit_alx_atores;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids, DBGrids, ComCtrls, jpeg, ExtCtrls, DB,
ADODB, Unit_alx_DataModule;

type
Tfrm_alx_atores = class(TForm)
Panel1: TPanel;
Image1: TImage;
Panel2: TPanel;
StatusBar1: TStatusBar;
DBGrid1: TDBGrid;
Edit1: TEdit;
Edit2: TEdit;
Panel3: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
ID: TLabel;
Nome: TLabel;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
BitBtn6: TBitBtn;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGrid1CellClick(Column: TColumn);
procedure DBGrid1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BitBtn6Click(Sender: TObject);
private
{ Private declarations }
procedure alx_voi_Popular_Grid_Atores();
procedure alx_voi_Atualizar_Cartao_Atores();
public
{ Public declarations }
constructor alx_voi_Create(alx_obj_owner: TComponent);

end;



implementation

{$R *.dfm}

//==============================================================================
constructor Tfrm_alx_atores.alx_voi_Create(alx_obj_owner: TComponent);
begin
inherited Create(alx_obj_owner);
self.alx_voi_Popular_Grid_Atores(); //... POPULAR O GRID DE ATORES ...
self.alx_voi_Atualizar_Cartao_Atores(); //... atualizar o cartão de atores...
self.Show();
end;
//==============================================================================
procedure Tfrm_alx_atores.alx_voi_Popular_Grid_Atores();
var
alx_str_sql_texto: TStrings;
begin
try
alx_str_sql_texto:= TStringList.Create();
alx_str_sql_texto.Add('SELECT * FROM ATORES ORDER BY ATOR_NOME ;');
self.ADOQuery1.Active:= False;
self.ADOQuery1.SQL.Clear();
self.ADOQuery1.SQL:= alx_str_sql_texto;
self.ADOQuery1.Active:= True;
except
on E: Exception do begin
showmessage('Ôpa, ocorreu um erro ao popular o grid de atores! VEja: ' + E.Message );
end;
end;
end;
//==============================================================================
procedure Tfrm_alx_atores.alx_voi_Atualizar_Cartao_Atores();
begin
try
self.Edit1.Text:= self.ADOQuery1.Fields[0].AsString;
self.Edit2.Text:= self.ADOQuery1.Fields[1].AsString;
except
on E: Exception do begin
showmessage('Ôpa, ocorreu um erro ao atualizar o cartão de atores! VEja: ' + E.Message );
end;
end;
end;
//==============================================================================
procedure Tfrm_alx_atores.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
SELF:= NIL;
end;

procedure Tfrm_alx_atores.DBGrid1CellClick(Column: TColumn);
begin
self.alx_voi_Atualizar_Cartao_Atores();
end;

procedure Tfrm_alx_atores.DBGrid1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
self.alx_voi_Atualizar_Cartao_Atores();
end;

procedure Tfrm_alx_atores.BitBtn6Click(Sender: TObject);
begin
self.ADOQuery1.Next();
self.alx_voi_Atualizar_Cartao_Atores();
end;

end.