<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1308388809942346558</id><updated>2011-04-21T18:27:50.883-07:00</updated><category term='criação de objetos'/><category term='Petrobras e governo brasileiro'/><category term='instanciação de objetos'/><category term='delphi'/><title type='text'>Professor Alexandre Manoel dos Santos</title><subtitle type='html'>Este blog se destina aos alunos programadores em DELPHI.
O objetivo é apresentar uma coleção de serviços de acesso a banco de dados. Trata-se de uma coleção de artefatos de software simples e especializados. Cada procedure ou function realiza uma única tarefa.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://alexandremanoeldossantos.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://alexandremanoeldossantos.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Engº Alexandre Manoel dos Santos, M.Sc.</name><uri>http://www.blogger.com/profile/06205352072784818925</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_Kl7Ajw6APsk/TQTBsBuMrOI/AAAAAAAAANI/i7NQBA3t4sU/S220/Alexandre_Manoel_Home_Foto_02.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1308388809942346558.post-3442458876548302897</id><published>2007-08-20T11:06:00.000-07:00</published><updated>2007-08-20T11:16:45.597-07:00</updated><title type='text'>Rotinas em DELPHI para atualização de uma Tupla específica</title><content type='html'>Saudações &lt;strong&gt;Alunos&lt;/strong&gt; e programadores,&lt;br /&gt;&lt;br /&gt;abaixo segue um conjunto de rotinas utilizadas no processo de atualização de uma Tupla, escolhida pelo usuário, para ser atualizada por meio do comando em SQL denominado "&lt;strong&gt;UPDATE&lt;/strong&gt;".&lt;br /&gt;&lt;br /&gt;Uma série de verificações é realizada antes da atualização ser realizada com sucesso.&lt;br /&gt;Observe com o seguinte espírito: &lt;br /&gt;"... &lt;strong&gt;Você pode fazer diferente, Você pode fazer melhor&lt;/strong&gt; ..."&lt;br /&gt;&lt;br /&gt;Um grande abraço&lt;br /&gt;&lt;br /&gt;Professor &lt;strong&gt;Alexandre Manoel&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//==============================================================================&lt;br /&gt;function  Talx_frm_sgc_contas_bancarias.alx_boo_Conta_Bancaria_Alterada_Com_Sucesso(): Boolean;&lt;br /&gt;var&lt;br /&gt;  alx_str_sql_text    : TStrings;&lt;br /&gt;  alx_boo_apoio       : Boolean;&lt;br /&gt;  alx_int_cb_id       : Integer;&lt;br /&gt;  alx_str_cb_nome     : String;&lt;br /&gt;  alx_str_cb_codigo   : String;&lt;br /&gt;  alx_int_cb_ab_id    : Integer;&lt;br /&gt;  alx_int_cb_un_id    : Integer;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    alx_int_cb_id     := strtoint(self.Edit2.Text);&lt;br /&gt;    alx_str_cb_nome   := self.Edit3.Text;&lt;br /&gt;    alx_str_cb_codigo := self.Edit4.Text;&lt;br /&gt;    alx_int_cb_ab_id  := strtoint(self.edit5.Text);&lt;br /&gt;    //--------------&lt;br /&gt;    alx_str_sql_text   := TStringList.Create();&lt;br /&gt;    alx_str_sql_text.Add('UPDATE  CONTAS_BANCARIAS SET CB_NOME = : , CB_CODIGO = : , CB_AB_ID = : , CB_UN_ID = 1 , CB_ATIVO = TRUE ');&lt;br /&gt;    alx_str_sql_text.Add('WHERE   CB_ID = : ; ') ;&lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;&lt;br /&gt;    self.ADOQuery_Apoio.SQL.Clear();&lt;br /&gt;    self.ADOQuery_Apoio.SQL:= alx_str_sql_text;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[0].Value:= alx_str_cb_nome;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[1].Value:= alx_str_cb_codigo;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[2].Value:= alx_int_cb_ab_id;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[3].Value:= alx_int_cb_id;&lt;br /&gt;    //--------------&lt;br /&gt;    self.ADOQuery_Apoio.ExecSQL();&lt;br /&gt;    alx_boo_apoio:= True;&lt;br /&gt;    self.alx_int_conta_bancaria_id_em_foco:= alx_int_cb_id;                     //... informa o id do usuário que foi inserido ...&lt;br /&gt;    //--------------&lt;br /&gt;  except&lt;br /&gt;    on E: Exception do begin&lt;br /&gt;      alx_boo_apoio                  := False;&lt;br /&gt;      self.alx_int_conta_bancaria_id_em_foco:= 0;&lt;br /&gt;      ShowMessage('Ôpa, ocorreu um erro ao realizar a transação que altera uma conta bancária escolhida no sistema! Veja: ' + E.Message);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;  result:= alx_boo_apoio;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Talx_frm_sgc_contas_bancarias.alx_voi_Colocar_Cursor_Sobre_Conta_Bancaria_Inserida_Ou_Alterada();&lt;br /&gt;var&lt;br /&gt;  alx_int_apoio: Integer;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    self.ADOQuery_Contas_Bancarias.First();&lt;br /&gt;    while not(self.ADOQuery_Contas_Bancarias.Eof) do begin&lt;br /&gt;      alx_int_apoio:= self.ADOQuery_Contas_Bancarias.Fields[0].AsInteger;&lt;br /&gt;      if (alx_int_apoio = self.alx_int_conta_bancaria_id_em_foco) then begin&lt;br /&gt;        break;&lt;br /&gt;      end&lt;br /&gt;      else begin&lt;br /&gt;        self.ADOQuery_Contas_Bancarias.Next();&lt;br /&gt;      end;&lt;br /&gt;    end;&lt;br /&gt;  except&lt;br /&gt;    on e:Exception do begin&lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao colocar o cursor sobre a Conta Bancária recém inserida ou alterada! Veja: ' + E.Message);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;function  Talx_frm_sgc_contas_bancarias.alx_int_Pegar_Agencia_Bancaria_Id(alx_str_agencia_bancaria_nome: String): Integer;&lt;br /&gt;var&lt;br /&gt;  alx_str_sql_text: TStrings;&lt;br /&gt;  alx_int_apoio   : Integer;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    alx_str_sql_text:= TStringList.Create();&lt;br /&gt;    alx_str_sql_text.Add('SELECT  AB_ID  FROM  AGENCIAS_BANCARIAS  WHERE  AB_NOME = : ');&lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;&lt;br /&gt;    self.ADOQuery_Apoio.SQL.Clear();&lt;br /&gt;    self.ADOQuery_Apoio.SQL:= alx_str_sql_text;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[0].Value:= alx_str_agencia_bancaria_nome;&lt;br /&gt;    self.ADOQuery_Apoio.Active:= True;&lt;br /&gt;    //-----------------&lt;br /&gt;    alx_int_apoio:= self.ADOQuery_Apoio.Fields[0].AsInteger;&lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;&lt;br /&gt;    //-----------------&lt;br /&gt;  except&lt;br /&gt;    on E: Exception do begin&lt;br /&gt;      alx_int_apoio:= 0;&lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao buscar o código de identificação de uma Agência Bancária escolhida! Veja: ' + E.Message);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;  result:= alx_int_apoio;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;function  Talx_frm_sgc_contas_bancarias.alx_int_Pegar_Banco_Sigla(alx_str_agencia_bancaria_nome: String): String;&lt;br /&gt;var&lt;br /&gt;  alx_str_sql_text: TStrings;&lt;br /&gt;  alx_str_apoio   : String;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    alx_str_sql_text:= TStringList.Create();&lt;br /&gt;    alx_str_sql_text.Add('SELECT  BAN_SIGLA  FROM  AGENCIAS_BANCARIAS, BANCOS  WHERE  AB_BAN_ID = BAN_ID  AND AB_NOME = : ');&lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;&lt;br /&gt;    self.ADOQuery_Apoio.SQL.Clear();&lt;br /&gt;    self.ADOQuery_Apoio.SQL:= alx_str_sql_text;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[0].Value:= alx_str_agencia_bancaria_nome;&lt;br /&gt;    self.ADOQuery_Apoio.Active:= True;&lt;br /&gt;    //-----------------&lt;br /&gt;    alx_str_apoio:= self.ADOQuery_Apoio.Fields[0].AsString;&lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;&lt;br /&gt;    //-----------------&lt;br /&gt;  except&lt;br /&gt;    on E: Exception do begin&lt;br /&gt;      alx_str_apoio:= 'erro!';&lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao buscar a sigla do Banco associado à Agência Bancária escolhida! Veja: ' + E.Message);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;  result:= alx_str_apoio;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure  Talx_frm_sgc_contas_bancarias.alx_voi_Especificar_Cidade_E_UF_Da_Conta_Escolhida(alx_str_agencia_bancaria_nome: String);&lt;br /&gt;var&lt;br /&gt;  alx_str_sql_text: TStrings;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    alx_str_sql_text:= TStringList.Create();&lt;br /&gt;    alx_str_sql_text.Add('SELECT  CITY_NOME , UF_SIGLA FROM  AGENCIAS_BANCARIAS, CIDADES, UNIDADES_FEDERACAO ');&lt;br /&gt;    alx_str_sql_text.Add('WHERE   AB_CITY_ID = CITY_ID  AND CITY_UF_ID = UF_ID AND AB_NOME = : ');&lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;&lt;br /&gt;    self.ADOQuery_Apoio.SQL.Clear();&lt;br /&gt;    self.ADOQuery_Apoio.SQL:= alx_str_sql_text;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[0].Value:= alx_str_agencia_bancaria_nome;&lt;br /&gt;    self.ADOQuery_Apoio.Active:= True;&lt;br /&gt;    //-----------------&lt;br /&gt;    self.Edit6.Text:= self.ADOQuery_Apoio.Fields[0].AsString;&lt;br /&gt;    self.Edit7.Text:= self.ADOQuery_Apoio.Fields[1].AsString;&lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;&lt;br /&gt;    //-----------------&lt;br /&gt;  except&lt;br /&gt;    on E: Exception do begin&lt;br /&gt;      self.Edit6.Text:= 'erro!';&lt;br /&gt;      self.Edit7.Text:= 'erro!';&lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao especificar o nome da cidade e a sigla do estado associados à Agência Bancária escolhida! Veja: ' + E.Message);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Talx_frm_sgc_contas_bancarias.alx_voi_Atualizar_Campos_Ao_Selecionar_Conta_Bancaria();&lt;br /&gt;var&lt;br /&gt;  alx_str_apoio: String;&lt;br /&gt;begin&lt;br /&gt;  alx_str_apoio:= self.ComboBox1.Text;&lt;br /&gt;  self.Edit5.Text:= inttostr(self.alx_int_Pegar_Agencia_Bancaria_Id(alx_str_apoio));&lt;br /&gt;  self.Edit8.Text:= self.alx_int_Pegar_Banco_Sigla(alx_str_apoio);&lt;br /&gt;  self.alx_voi_Especificar_Cidade_E_UF_Da_Conta_Escolhida(alx_str_apoio);&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Talx_frm_sgc_contas_bancarias.alx_voi_Controlar_Processo_Alteracao_Conta_Bancaria();&lt;br /&gt;begin&lt;br /&gt;  if((self.BitBtn12.Caption = 'alterar') and (self.alx_boo_Usuario_Tem_Permissao_Para_Alteracao_Conta_Bancaria()) ) then begin&lt;br /&gt;    self.alx_voi_Liberar_Edits_Para_Edicao(True);                               //... liberar edits para edição ...&lt;br /&gt;    self.alx_voi_Bloquear_Botoes_Para_Alteracao(True);                          //... bloquear botões ...&lt;br /&gt;    self.alx_voi_Popular_Combobox_Agencias_Bancarias();                         //... popular o combobox de agências bancárias ...&lt;br /&gt;    self.BitBtn12.Caption:= 'salvar';&lt;br /&gt;  end&lt;br /&gt;  else if ((self.BitBtn12.Caption = 'salvar') and (self.alx_boo_Verificacao_Ok()) ) then begin   //...testar antes os campos...&lt;br /&gt;    if(self.alx_boo_Conta_Bancaria_Alterada_Com_Sucesso()) then begin           //... somente se a inserção foi um sucesso ...&lt;br /&gt;      self.alx_voi_Popular_Grid_Contas_Bancarias();                             //... realiza um refresh no grid ...&lt;br /&gt;      self.alx_voi_Colocar_Cursor_Sobre_Conta_Bancaria_Inserida_Ou_Alterada();  //... coloca o cursor sobre o usuário recém inserido&lt;br /&gt;      self.alx_voi_Atualizar_Cartao_Conta_Bancaria();                           //... atualiza o cartão d usuário ...&lt;br /&gt;      self.alx_voi_Liberar_Edits_Para_Edicao(False);                            //... não-liberar edits para edição ...&lt;br /&gt;      self.alx_voi_Bloquear_Botoes_Para_Alteracao(False);                       //... desbloquear botões ...&lt;br /&gt;      self.BitBtn12.Caption:= 'alterar';&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1308388809942346558-3442458876548302897?l=alexandremanoeldossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandremanoeldossantos.blogspot.com/feeds/3442458876548302897/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1308388809942346558&amp;postID=3442458876548302897' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/3442458876548302897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/3442458876548302897'/><link rel='alternate' type='text/html' href='http://alexandremanoeldossantos.blogspot.com/2007/08/rotinas-em-delphi-para-atualizao-de-uma.html' title='Rotinas em DELPHI para atualização de uma Tupla específica'/><author><name>Engº Alexandre Manoel dos Santos, M.Sc.</name><uri>http://www.blogger.com/profile/06205352072784818925</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_Kl7Ajw6APsk/TQTBsBuMrOI/AAAAAAAAANI/i7NQBA3t4sU/S220/Alexandre_Manoel_Home_Foto_02.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1308388809942346558.post-2539118857254917282</id><published>2007-07-13T19:36:00.000-07:00</published><updated>2007-07-13T19:49:57.295-07:00</updated><title type='text'>Rotinas em DELPHI para uma inserção completa de tuplas: Caso de Usuários de um Sistema</title><content type='html'>&lt;a href="http://bp2.blogger.com/_Kl7Ajw6APsk/Rpg5h8HRMWI/AAAAAAAAAJU/8oW7BVil0Eg/s1600-h/imagem_sgc_users.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_Kl7Ajw6APsk/Rpg5h8HRMWI/AAAAAAAAAJU/8oW7BVil0Eg/s320/imagem_sgc_users.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5086879034350055778" /&gt;&lt;/a&gt;&lt;br /&gt;As seguintes rotinas computacionais destinam-se à realização de um processo completo de &lt;strong&gt;inserção&lt;/strong&gt; de tuplas em uma dada tabela de um banco de dados.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A interface que controla a coleção de usuários do sistema é apresentada na figura. Vários controles de verificação são realizados antes da inserção de uma tupla no banco de dados. Observe com atenção. Você pode fazer diferente, você pode fazer melhor... Temos aqui uma "dica" para ser usada como ponto de partida.&lt;br /&gt;&lt;br /&gt;Lá vai...&lt;br /&gt;&lt;br /&gt;private&lt;br /&gt;    { Private declarations }&lt;br /&gt;    //-------&lt;br /&gt;    alx_int_user_id           : Integer;&lt;br /&gt;    alx_str_user_nome         : String;&lt;br /&gt;    alx_int_user_na_id        : Integer;&lt;br /&gt;    alx_int_usuario_id_em_foco: Integer;                                        //... descrição do usuário que receberá o foco logo após ser inserido ou alterado, ou ainda, excluído ...&lt;br /&gt;    //-------&lt;br /&gt;    function  alx_boo_Usuario_Inserido_Com_Sucesso(): Boolean;&lt;br /&gt;    function  alx_boo_Usuario_Tem_Permissao_Para_Insercao_Novo_Usuario(): Boolean;&lt;br /&gt;    function  alx_boo_Verificacao_Ok(): Boolean;&lt;br /&gt;    function  alx_int_Pegar_Nivel_Acesso_Id(alx_str_nivel_acesso_nome: String): Integer;&lt;br /&gt;    function  alx_int_Pegar_Usuarios_Novo_Id(): Integer;&lt;br /&gt;    //-------&lt;br /&gt;    procedure alx_voi_Atualizar_Cartao_Usuario();&lt;br /&gt;    procedure alx_voi_Colocar_Cursor_Sobre_Usuario_Inserido_Ou_Alterado();&lt;br /&gt;    procedure alx_voi_Bloquear_Botoes_Para_Insercao(alx_boo_bloquear: Boolean);&lt;br /&gt;    procedure alx_voi_Controlar_Processo_Insercao_Usuario();&lt;br /&gt;    procedure alx_voi_Liberar_Edits_Para_Edicao(alx_boo_liberar: Boolean);&lt;br /&gt;    procedure alx_voi_Limpar_Campos_Cartao_Usuario();&lt;br /&gt;    procedure alx_voi_Popular_Combobox_Nivel_Acesso();&lt;br /&gt;    procedure alx_voi_Popular_Grid_Usuarios();&lt;br /&gt;    procedure alx_voi_Registrar_Entrada_Usuario(alx_int_usuario_id: Integer ; alx_str_nome: String ; alx_int_na_id: Integer);&lt;br /&gt;    procedure alx_voi_Registrar_Status_Bar_Usuario();&lt;br /&gt;  public&lt;br /&gt;    { Public declarations }&lt;br /&gt;    constructor alx_voi_Create(alx_obj_owner: TComponent ; alx_int_usuario_id: Integer ; alx_str_user_name: String ; alx_int_nivel_acesso_id: Integer);&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;//==============================================================================&lt;br /&gt;constructor Talx_frm_sgc_users.alx_voi_Create(alx_obj_owner: TComponent ; alx_int_usuario_id: Integer ; alx_str_user_name: String ; alx_int_nivel_acesso_id: Integer);&lt;br /&gt;begin&lt;br /&gt;  inherited Create(alx_obj_owner);&lt;br /&gt;  self.alx_voi_Registrar_Entrada_Usuario(alx_int_usuario_id , alx_str_user_name , alx_int_nivel_acesso_id);&lt;br /&gt;  self.alx_voi_Popular_Grid_Usuarios();                                         //... popular grid usuarios...&lt;br /&gt;  self.alx_voi_Atualizar_Cartao_Usuario();                                      //... atualizar cartão de usuários ...&lt;br /&gt;  self.alx_voi_Registrar_Status_Bar_Usuario();&lt;br /&gt;  self.Show();&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Talx_frm_sgc_users.alx_voi_Popular_Grid_Usuarios();&lt;br /&gt;var&lt;br /&gt;  alx_str_sql_text: TStrings;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    alx_str_sql_text:= TStringList.Create();&lt;br /&gt;    alx_str_sql_text.Add('SELECT   USER_ID  , USER_NOME, USER_APELIDO, USER_NA_ID, NA_APELIDO, USER_ATIVO ');&lt;br /&gt;    alx_str_sql_text.Add('FROM     USERS , NIVEIS_ACESSO ' );&lt;br /&gt;    alx_str_sql_text.Add('WHERE    USER_NA_ID = NA_ID ' );&lt;br /&gt;    alx_str_sql_text.Add('ORDER BY USER_NOME ;');&lt;br /&gt;    self.ADOQuery_Usuarios.Active:= False;&lt;br /&gt;    self.ADOQuery_Usuarios.SQL.Clear();&lt;br /&gt;    self.ADOQuery_Usuarios.SQL:= alx_str_sql_text;&lt;br /&gt;    self.ADOQuery_Usuarios.Active:= True;&lt;br /&gt;  except&lt;br /&gt;    on E: Exception do begin&lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao popular o combo de Contas Bancárias! Veja: ' + E.Message);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Talx_frm_sgc_users.alx_voi_Atualizar_Cartao_Usuario();&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    self.Edit2.Text       := self.ADOQuery_Usuarios.Fields[0].AsString;&lt;br /&gt;    self.Edit3.Text       := self.ADOQuery_Usuarios.Fields[1].AsString;&lt;br /&gt;    self.Edit4.Text       := self.ADOQuery_Usuarios.Fields[2].AsString;&lt;br /&gt;    self.Edit5.Text       := self.ADOQuery_Usuarios.Fields[3].AsString;&lt;br /&gt;    self.ComboBox1.Text   := self.ADOQuery_Usuarios.Fields[4].AsString;&lt;br /&gt;    self.Edit6.Text       := 'senha_1';&lt;br /&gt;    self.Edit7.Text       := 'senha_2';&lt;br /&gt;    self.CheckBox1.Checked:= self.ADOQuery_Usuarios.Fields[5].AsBoolean;&lt;br /&gt;    self.ComboBox1.Items.Clear();&lt;br /&gt;    self.ComboBox1.Enabled:= False;&lt;br /&gt;  except&lt;br /&gt;    on E:Exception do begin&lt;br /&gt;      self.Edit2.Text     := 'erro';  self.Edit3.Text:= 'erro';    self.Edit4.Text:= 'erro'  ;  self.Edit5.Text:= 'erro';&lt;br /&gt;      self.ComboBox1.Text := 'erro';  self.Edit6.Text:= 'erro_1';  self.Edit7.Text:= 'erro_2';  self.CheckBox1.Checked:= False;&lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao atualizar o cartão de Usuários! Veja: ' + E.Message);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Talx_frm_sgc_users.alx_voi_Registrar_Entrada_Usuario(alx_int_usuario_id: Integer ; alx_str_nome: String ; alx_int_na_id: Integer);&lt;br /&gt;begin&lt;br /&gt;  self.alx_int_user_id           := alx_int_usuario_id;&lt;br /&gt;  self.alx_str_user_nome         := alx_str_nome;&lt;br /&gt;  self.alx_int_user_na_id        := alx_int_na_id;&lt;br /&gt;  self.alx_int_usuario_id_em_foco:= 0;                                          //... código de um usuário recém inserido, ou alterado, para amnter o foco logo após a inserção ou alteração ...&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Talx_frm_sgc_users.alx_voi_Registrar_Status_Bar_Usuario();&lt;br /&gt;begin&lt;br /&gt;  self.StatusBar1.Panels[0].Text:= ' Usuário: ' + self.alx_str_user_nome;&lt;br /&gt;  self.StatusBar1.Panels[1].Text:= ' Nível de Acesso: ' + inttostr(self.alx_int_user_na_id);&lt;br /&gt;  self.StatusBar1.Panels[2].Text:= ' ';&lt;br /&gt;  self.StatusBar1.Panels[3].Text:= ' ';&lt;br /&gt;  self.StatusBar1.Panels[4].Text:= ' Sistema Saturno';&lt;br /&gt;  self.StatusBar1.Panels[5].Text:= ' AlexS - Software para Engenharia';&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Talx_frm_sgc_users.alx_voi_Controlar_Processo_Insercao_Usuario();&lt;br /&gt;begin&lt;br /&gt;  if((self.BitBtn11.Caption = 'inserir') and (self.alx_boo_Usuario_Tem_Permissao_Para_Insercao_Novo_Usuario()) ) then begin&lt;br /&gt;    self.alx_voi_Limpar_Campos_Cartao_Usuario();                                //... limpar campos ...&lt;br /&gt;    self.alx_voi_Liberar_Edits_Para_Edicao(True);                               //... liberar edits para edição ...&lt;br /&gt;    self.alx_voi_Bloquear_Botoes_Para_Insercao(True);                           //... bloquear botões ...&lt;br /&gt;    self.Edit2.Text:= inttostr(self.alx_int_Pegar_Usuarios_Novo_Id());          //... anuncia um provável código novo para a futura inserção ...&lt;br /&gt;    self.alx_voi_Popular_Combobox_Nivel_Acesso();                               //... popular o combobox do nivel de acesso ...&lt;br /&gt;    self.BitBtn11.Caption:= 'salvar';&lt;br /&gt;  end&lt;br /&gt;  else if ((self.BitBtn11.Caption = 'salvar') and (self.alx_boo_Verificacao_Ok()) ) then begin   //...testar antes os campos...&lt;br /&gt;    if(self.alx_boo_Usuario_Inserido_Com_Sucesso()) then begin                  //... somente se a inserção foi um sucesso ...&lt;br /&gt;      self.alx_voi_Popular_Grid_Usuarios();                                     //... realiza um refresh no grid ...&lt;br /&gt;      self.alx_voi_Colocar_Cursor_Sobre_Usuario_Inserido_Ou_Alterado();         //... coloca o cursor sobre o usuário recém inserido&lt;br /&gt;      self.alx_voi_Atualizar_Cartao_Usuario();                                  //... atualiza o cartão d usuário ...&lt;br /&gt;      self.alx_voi_Liberar_Edits_Para_Edicao(False);                            //... não-liberar edits para edição ...&lt;br /&gt;      self.alx_voi_Bloquear_Botoes_Para_Insercao(False);                        //... desbloquear botões ...&lt;br /&gt;      self.BitBtn11.Caption:= 'inserir';&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Talx_frm_sgc_users.alx_voi_Limpar_Campos_Cartao_Usuario();&lt;br /&gt;begin&lt;br /&gt;  self.Edit2.Text       := '';&lt;br /&gt;  self.Edit3.Text       := '';&lt;br /&gt;  self.Edit4.Text       := '';&lt;br /&gt;  self.Edit5.Text       := '';&lt;br /&gt;  self.ComboBox1.Text   := '';&lt;br /&gt;  self.Edit6.Text       := '';&lt;br /&gt;  self.Edit7.Text       := '';&lt;br /&gt;  self.ComboBox1.Text   := 'escolha um nível de acesso';&lt;br /&gt;  self.CheckBox1.Checked:= True;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Talx_frm_sgc_users.alx_voi_Liberar_Edits_Para_Edicao(alx_boo_liberar: Boolean);&lt;br /&gt;begin&lt;br /&gt;  self.Edit1.ReadOnly   := alx_boo_liberar;&lt;br /&gt;  self.Edit2.ReadOnly   := True;&lt;br /&gt;  self.Edit3.ReadOnly   := not(alx_boo_liberar);&lt;br /&gt;  self.Edit4.ReadOnly   := not(alx_boo_liberar);&lt;br /&gt;  self.Edit5.ReadOnly   := True;&lt;br /&gt;  self.Edit6.ReadOnly   := not(alx_boo_liberar);&lt;br /&gt;  self.Edit7.ReadOnly   := not(alx_boo_liberar);&lt;br /&gt;  self.CheckBox1.Enabled:= alx_boo_liberar;&lt;br /&gt;  self.ComboBox1.Enabled:= alx_boo_liberar;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Talx_frm_sgc_users.alx_voi_Bloquear_Botoes_Para_Insercao(alx_boo_bloquear: Boolean);&lt;br /&gt;begin&lt;br /&gt;  self.BitBtn1.Enabled := not(alx_boo_bloquear);&lt;br /&gt;  self.BitBtn2.Enabled := not(alx_boo_bloquear);&lt;br /&gt;  self.BitBtn3.Enabled := not(alx_boo_bloquear);&lt;br /&gt;  self.BitBtn4.Enabled := not(alx_boo_bloquear);&lt;br /&gt;  self.BitBtn5.Enabled := not(alx_boo_bloquear);&lt;br /&gt;  self.BitBtn6.Enabled := not(alx_boo_bloquear);&lt;br /&gt;  self.BitBtn7.Enabled := not(alx_boo_bloquear);&lt;br /&gt;  self.BitBtn8.Enabled := not(alx_boo_bloquear);&lt;br /&gt;  self.BitBtn9.Enabled := not(alx_boo_bloquear);&lt;br /&gt;  self.BitBtn10.Enabled:= not(alx_boo_bloquear);&lt;br /&gt;  self.BitBtn11.Enabled:= True;&lt;br /&gt;  self.BitBtn12.Enabled:= not(alx_boo_bloquear);&lt;br /&gt;  self.BitBtn13.Enabled:= not(alx_boo_bloquear);&lt;br /&gt;  self.BitBtn14.Enabled:= True;&lt;br /&gt;  self.CheckBox1.Enabled:= False;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;function  Talx_frm_sgc_users.alx_int_Pegar_Usuarios_Novo_Id(): Integer;&lt;br /&gt;var&lt;br /&gt;  alx_str_sql_text: TStrings;&lt;br /&gt;  alx_int_apoio   : Integer;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    alx_str_sql_text:= TStringList.Create();&lt;br /&gt;    alx_str_sql_text.Add('SELECT  MAX(USER_ID) FROM  USERS ');&lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;&lt;br /&gt;    self.ADOQuery_Apoio.SQL.Clear();&lt;br /&gt;    self.ADOQuery_Apoio.SQL:= alx_str_sql_text;&lt;br /&gt;    self.ADOQuery_Apoio.Active:= True;&lt;br /&gt;    //-----------------&lt;br /&gt;    alx_int_apoio:= self.ADOQuery_Apoio.Fields[0].AsInteger + 1;&lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;&lt;br /&gt;    //-----------------&lt;br /&gt;  except&lt;br /&gt;    on E: Exception do begin&lt;br /&gt;      alx_int_apoio:= 0;&lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao buscar o novo código para um USUÁRIO! Veja: ' + E.Message);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;  result:= alx_int_apoio;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Talx_frm_sgc_users.alx_voi_Popular_Combobox_Nivel_Acesso();&lt;br /&gt;var&lt;br /&gt;  alx_str_sql_text: TStrings;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    alx_str_sql_text:= TStringList.Create();&lt;br /&gt;    alx_str_sql_text.Add('SELECT   NA_APELIDO  ');&lt;br /&gt;    alx_str_sql_text.Add('FROM     NIVEIS_ACESSO ');&lt;br /&gt;    alx_str_sql_text.Add('WHERE    NA_ATIVO = TRUE ');&lt;br /&gt;    alx_str_sql_text.Add('ORDER BY NA_APELIDO ; ');&lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;&lt;br /&gt;    self.ADOQuery_Apoio.SQL.Clear();&lt;br /&gt;    self.ADOQuery_Apoio.SQL:= alx_str_sql_text;&lt;br /&gt;    self.ADOQuery_Apoio.Active:= True;&lt;br /&gt;    //-----------------&lt;br /&gt;    self.ComboBox1.Items.Clear();&lt;br /&gt;    while not(self.ADOQuery_Apoio.Eof) do begin&lt;br /&gt;      self.ComboBox1.Items.Add(self.ADOQuery_Apoio.Fields[0].AsString);&lt;br /&gt;      self.ADOQuery_Apoio.Next();&lt;br /&gt;    end;&lt;br /&gt;    self.ComboBox1.Text:= 'escolha um nível de acesso';&lt;br /&gt;    self.Edit5.Text:= '';&lt;br /&gt;    //-----------------&lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;&lt;br /&gt;    //-----------------&lt;br /&gt;  except&lt;br /&gt;    on E: Exception do begin&lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao popular o combo de Níveis de Acesso! Veja: ' + E.Message);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;function  Talx_frm_sgc_users.alx_int_Pegar_Nivel_Acesso_Id(alx_str_nivel_acesso_nome: String): Integer;&lt;br /&gt;var&lt;br /&gt;  alx_str_sql_text: TStrings;&lt;br /&gt;  alx_int_apoio   : Integer;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    alx_str_sql_text:= TStringList.Create();&lt;br /&gt;    alx_str_sql_text.Add('SELECT  NA_ID  FROM  NIVEIS_ACESSO  WHERE  NA_APELIDO = : ');&lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;&lt;br /&gt;    self.ADOQuery_Apoio.SQL.Clear();&lt;br /&gt;    self.ADOQuery_Apoio.SQL:= alx_str_sql_text;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[0].Value:= alx_str_nivel_acesso_nome;&lt;br /&gt;    self.ADOQuery_Apoio.Active:= True;&lt;br /&gt;    //-----------------&lt;br /&gt;    alx_int_apoio:= self.ADOQuery_Apoio.Fields[0].AsInteger;&lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;&lt;br /&gt;    //-----------------&lt;br /&gt;  except&lt;br /&gt;    on E: Exception do begin&lt;br /&gt;      alx_int_apoio:= 0;&lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao buscar o código para um apelido de Nível de Acesso escolhido! Veja: ' + E.Message);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;  result:= alx_int_apoio;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;function  Talx_frm_sgc_users.alx_boo_Usuario_Inserido_Com_Sucesso(): Boolean;&lt;br /&gt;var&lt;br /&gt;  alx_str_sql_text    : TStrings;&lt;br /&gt;  alx_boo_apoio       : Boolean;&lt;br /&gt;  alx_int_user_id     : Integer;&lt;br /&gt;  alx_str_user_nome   : String;&lt;br /&gt;  alx_str_user_apelido: String;&lt;br /&gt;  alx_str_senha       : String;&lt;br /&gt;  alx_int_user_na_id  : Integer;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    alx_int_user_id     := self.alx_int_Pegar_Usuarios_Novo_Id();&lt;br /&gt;    alx_str_user_nome   := self.Edit3.Text;&lt;br /&gt;    alx_str_user_apelido:= self.Edit4.Text;&lt;br /&gt;    alx_str_senha       := self.edit6.Text;&lt;br /&gt;    alx_int_user_na_id  := strtoint(self.Edit5.Text);&lt;br /&gt;    //--------------&lt;br /&gt;    alx_str_sql_text   := TStringList.Create();&lt;br /&gt;    alx_str_sql_text.Add('INSERT INTO USERS VALUES (:, :, :, :, :, True) ; ');&lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;&lt;br /&gt;    self.ADOQuery_Apoio.SQL.Clear();&lt;br /&gt;    self.ADOQuery_Apoio.SQL:= alx_str_sql_text;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[0].Value   := alx_int_user_id;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[1].Value   := alx_str_user_nome;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[2].Value   := alx_str_user_apelido;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[3].Value   := alx_str_senha;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[4].Value   := alx_int_user_na_id;&lt;br /&gt;    //--------------&lt;br /&gt;    self.ADOQuery_Apoio.ExecSQL();&lt;br /&gt;    alx_boo_apoio:= True;&lt;br /&gt;    self.alx_int_usuario_id_em_foco:= alx_int_user_id;                          //... informa o id do usuário que foi inserido ...&lt;br /&gt;    //--------------&lt;br /&gt;  except&lt;br /&gt;    on E: Exception do begin&lt;br /&gt;      alx_boo_apoio                  := False;&lt;br /&gt;      self.alx_int_usuario_id_em_foco:= 0;&lt;br /&gt;      ShowMessage('Ôpa, ocorreu um erro ao realizar a transação que insere um novo usuário no sistema! Veja: ' + E.Message);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;  result:= alx_boo_apoio;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Talx_frm_sgc_users.alx_voi_Colocar_Cursor_Sobre_Usuario_Inserido_Ou_Alterado();&lt;br /&gt;var&lt;br /&gt;  alx_int_apoio: Integer;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    self.ADOQuery_Usuarios.First();&lt;br /&gt;    while not(self.ADOQuery_Usuarios.Eof) do begin&lt;br /&gt;      alx_int_apoio:= self.ADOQuery_Usuarios.Fields[0].AsInteger;&lt;br /&gt;      if (alx_int_apoio = self.alx_int_usuario_id_em_foco) then begin&lt;br /&gt;        break;&lt;br /&gt;      end&lt;br /&gt;      else begin&lt;br /&gt;        self.ADOQuery_Usuarios.Next();&lt;br /&gt;      end;&lt;br /&gt;    end;&lt;br /&gt;  except&lt;br /&gt;    on e:Exception do begin&lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao colocar o cursor sobre o usuário recém inserido ou alterado! Veja: ' + E.Message);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;function  Talx_frm_sgc_users.alx_boo_Verificacao_Ok(): Boolean;&lt;br /&gt;var&lt;br /&gt;  alx_boo_apoio: Boolean;&lt;br /&gt;begin&lt;br /&gt;   try&lt;br /&gt;     alx_boo_apoio:= True;&lt;br /&gt;     if not(self.Edit3.Text &lt;&gt; '') then begin&lt;br /&gt;       alx_boo_apoio:= False;&lt;br /&gt;       showmessage('Você deve digitar um nome para o usuário!');&lt;br /&gt;       self.Edit3.SetFocus();&lt;br /&gt;     end&lt;br /&gt;     else if not(self.Edit4.Text &lt;&gt; '') then begin&lt;br /&gt;       alx_boo_apoio:= False;&lt;br /&gt;       showmessage('Você deve digitar um apelido para o usuário!');&lt;br /&gt;       self.Edit4.SetFocus();&lt;br /&gt;     end&lt;br /&gt;     else if not(self.Edit5.Text &lt;&gt; '') then begin&lt;br /&gt;       alx_boo_apoio:= False;&lt;br /&gt;       showmessage('Você deve escolher um nível de acesso para esse usuário!');&lt;br /&gt;       self.ComboBox1.SetFocus();&lt;br /&gt;     end&lt;br /&gt;     else if not(self.Edit6.Text &lt;&gt; '') then begin&lt;br /&gt;       alx_boo_apoio:= False;&lt;br /&gt;       showmessage('A primeira senha não pode ser vazia!');&lt;br /&gt;       self.Edit6.SetFocus();&lt;br /&gt;     end&lt;br /&gt;     else if not(self.Edit7.Text &lt;&gt; '') then begin&lt;br /&gt;       alx_boo_apoio:= False;&lt;br /&gt;       showmessage('A segunda senha não pode ser vazia!');&lt;br /&gt;       self.Edit7.SetFocus();&lt;br /&gt;     end&lt;br /&gt;     else if not(self.Edit6.Text = self.Edit7.Text) then begin&lt;br /&gt;       alx_boo_apoio:= False;&lt;br /&gt;       showmessage('As senhas devem possuir mesmo valor (devem ser iguais). Digite-as novamente!');&lt;br /&gt;       self.Edit7.Text:= '';&lt;br /&gt;       self.Edit6.SetFocus();&lt;br /&gt;     end;&lt;br /&gt;   except&lt;br /&gt;     on E: Exception do begin&lt;br /&gt;       alx_boo_apoio:= False;&lt;br /&gt;       showmessage('Ôpa, ocorreu um erro ao verificar a possibilidade de inserir ou alterar dados de um usuário! Veja: ' + E.Message);&lt;br /&gt;     end;&lt;br /&gt;   end;&lt;br /&gt;   result:= alx_boo_apoio;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;function  Talx_frm_sgc_users.alx_boo_Usuario_Tem_Permissao_Para_Insercao_Novo_Usuario(): Boolean;&lt;br /&gt;var&lt;br /&gt;  alx_boo_apoio: Boolean;&lt;br /&gt;begin&lt;br /&gt;  if ((self.alx_int_user_na_id = 1) or (self.alx_int_user_na_id = 2) or (self.alx_int_user_na_id = 6)) then begin&lt;br /&gt;    alx_boo_apoio:= True;&lt;br /&gt;  end&lt;br /&gt;  else begin&lt;br /&gt;    alx_boo_apoio:= False;&lt;br /&gt;    showmessage('você não tem permissão para inserir usuários. Procure o admiistrador do sistema para essa operação!');&lt;br /&gt;  end;&lt;br /&gt;  result:= alx_boo_apoio;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Talx_frm_sgc_users.BitBtn1Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;  self.Close();&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure Talx_frm_sgc_users.FormClose(Sender: TObject; var Action: TCloseAction);&lt;br /&gt;begin&lt;br /&gt;  self.Destroy;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure Talx_frm_sgc_users.Fechar1Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;  self.Close();&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure Talx_frm_sgc_users.DBGrid1CellClick(Column: TColumn);&lt;br /&gt;begin&lt;br /&gt;  self.alx_voi_Atualizar_Cartao_Usuario();&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure Talx_frm_sgc_users.DBGrid1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);&lt;br /&gt;begin&lt;br /&gt;  self.alx_voi_Atualizar_Cartao_Usuario();&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure Talx_frm_sgc_users.BitBtn2Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;  self.ADOQuery_Usuarios.First();&lt;br /&gt;  self.alx_voi_Atualizar_Cartao_Usuario();&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure Talx_frm_sgc_users.BitBtn3Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;  self.ADOQuery_Usuarios.Prior();&lt;br /&gt;  self.alx_voi_Atualizar_Cartao_Usuario();&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure Talx_frm_sgc_users.BitBtn4Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;  self.ADOQuery_Usuarios.Next();&lt;br /&gt;  self.alx_voi_Atualizar_Cartao_Usuario();&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure Talx_frm_sgc_users.BitBtn5Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;  self.ADOQuery_Usuarios.Last();&lt;br /&gt;  self.alx_voi_Atualizar_Cartao_Usuario();&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure Talx_frm_sgc_users.BitBtn11Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;  self.alx_voi_Controlar_Processo_Insercao_Usuario();                           &lt;br /&gt;  //... transferir o controle para uma procedure de alteração ...&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure Talx_frm_sgc_users.ComboBox1Select(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;  self.Edit5.Text:= inttostr(self.alx_int_Pegar_Nivel_Acesso_Id(self.ComboBox1.Text));&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1308388809942346558-2539118857254917282?l=alexandremanoeldossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandremanoeldossantos.blogspot.com/feeds/2539118857254917282/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1308388809942346558&amp;postID=2539118857254917282' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/2539118857254917282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/2539118857254917282'/><link rel='alternate' type='text/html' href='http://alexandremanoeldossantos.blogspot.com/2007/07/rotinas-em-delphi-para-uma-insero.html' title='Rotinas em DELPHI para uma inserção completa de tuplas: Caso de Usuários de um Sistema'/><author><name>Engº Alexandre Manoel dos Santos, M.Sc.</name><uri>http://www.blogger.com/profile/06205352072784818925</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_Kl7Ajw6APsk/TQTBsBuMrOI/AAAAAAAAANI/i7NQBA3t4sU/S220/Alexandre_Manoel_Home_Foto_02.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_Kl7Ajw6APsk/Rpg5h8HRMWI/AAAAAAAAAJU/8oW7BVil0Eg/s72-c/imagem_sgc_users.bmp' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1308388809942346558.post-742447472111431108</id><published>2007-07-04T07:02:00.001-07:00</published><updated>2007-07-13T07:03:03.896-07:00</updated><title type='text'>Rotinas em DELPHI para operacionalização de uma Transação com ADO</title><content type='html'>Saudações alunos e interessados,&lt;br /&gt;&lt;br /&gt;abaixo segue um conjunto de rotinas computacionais cujo principal objetivo é realizar duas tarefas específicas que fazem parte de uma certa transação sobre um banco de dados, por meio dos componentes "ADOConnection" e "ADOQuery".&lt;br /&gt;&lt;br /&gt;Basicamente, esta &lt;strong&gt;TRANSAÇÃO&lt;/strong&gt; controla as seguintes atualizações no banco de dados:&lt;br /&gt;&lt;strong&gt;Tarefa_1&lt;/strong&gt;: responsável pela inserção de um novo lançamento contábil de uma receita, cuja conta bancária e conta de nível_4 precisa ser especificada, juntamente com o valor do lançamento, em uma tabela denominada "Lançamentos";&lt;br /&gt;&lt;strong&gt;Tarefa_2&lt;/strong&gt;: responsável pela inserção dos elementos, presentes em uma lista, que representam as atividades que irão participar de um "rateio" e que estão associados ao lançamento inserido na tarefa anterior.  Cada rateio mapeia um código  exclusivo, uma atividade específica e um valor parcial, na tabela denominada "Rateios".&lt;br /&gt;Então, a transação somente se completará se as duas tarefas forem realizadas com sucesso. Se não, um RollBack_trans é solicitado.&lt;br /&gt;&lt;br /&gt;Seguem os artefatos de software:&lt;br /&gt;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Talx_frm_sgc_lancamentos_receitas.alx_voi_Operar_Transacao_Insercao();&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    alx_frm_data_module.ADOConnection_SGC.BeginTrans();&lt;br /&gt;    //----------------&lt;br /&gt;    if(   self.alx_boo_Tarefa_1_Transacao_Realizada_Com_Sucesso() ) then begin                                                         //... insere o novo lançamento ...&lt;br /&gt;      if( self.alx_boo_Tarefa_2_Transacao_Realizada_Com_Sucesso() ) then begin                                                       //... insere as atividades associadas ...&lt;br /&gt;        alx_frm_data_module.ADOConnection_SGC.CommitTrans();&lt;br /&gt;        showmessage('O lançamento foi inserido no banco de dados com sucesso!');&lt;br /&gt;      end&lt;br /&gt;      else begin&lt;br /&gt;        alx_frm_data_module.ADOConnection_SGC.RollbackTrans();&lt;br /&gt;        showmessage('a transação NÃO completou-se: O lançamento NÃO foi inserido no banco de dados! você deve reespecificá-lo novamente.');&lt;br /&gt;      end;&lt;br /&gt;    end;&lt;br /&gt;    //----------------&lt;br /&gt;    //... preparar mensagens e botões adequados à pos-transação (sucesso ou não...)&lt;br /&gt;    //----------------&lt;br /&gt;  except&lt;br /&gt;    on E:Exception do begin&lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao realizar a transação de inserção de nova receita com contas para rateio! Veja: ' + E.Message);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;function  Talx_frm_sgc_lancamentos_receitas.alx_boo_Tarefa_1_Transacao_Realizada_Com_Sucesso(): Boolean;&lt;br /&gt;var&lt;br /&gt;  alx_str_sql_text   : TStrings;&lt;br /&gt;  alx_boo_apoio      : Boolean;&lt;br /&gt;  alx_int_lan_id     : Integer;&lt;br /&gt;  alx_dat_lan_data   : TDate;&lt;br /&gt;  alx_int_lan_cn4_id : Integer;&lt;br /&gt;  alx_int_lan_cb_id  : Integer;&lt;br /&gt;  alx_flo_lan_valor  : Real;&lt;br /&gt;  alx_str_lan_doc    : String;&lt;br /&gt;  alx_str_lan_obs    : String;&lt;br /&gt;  alx_int_lan_user_id: Integer;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    alx_int_lan_id     := self.alx_int_Pegar_Lancamentos_Novo_Id();&lt;br /&gt;    alx_dat_lan_data   := strtodate(self.Edit3.Text);&lt;br /&gt;    alx_int_lan_cn4_id := strtoint(self.Edit1.Text);&lt;br /&gt;    alx_int_lan_cb_id  := strtoint(self.Edit2.Text);&lt;br /&gt;    alx_flo_lan_valor  := strtofloat(self.Edit6.Text);&lt;br /&gt;    alx_str_lan_doc    := self.Edit4.Text;&lt;br /&gt;    alx_str_lan_obs    := self.Edit5.Text;&lt;br /&gt;    alx_int_lan_user_id:= self.alx_int_user_id;&lt;br /&gt;    //--------------&lt;br /&gt;    alx_str_sql_text   := TStringList.Create();&lt;br /&gt;    alx_str_sql_text.Add('INSERT INTO LANCAMENTOS VALUES (:, :, :, :, :, :, :, :, True) ; ');&lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;&lt;br /&gt;    self.ADOQuery_Apoio.SQL.Clear();&lt;br /&gt;    self.ADOQuery_Apoio.SQL:= alx_str_sql_text;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[0].Value   := alx_int_lan_id;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[1].DataType:= FTDate;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[1].Value   := alx_dat_lan_data;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[2].Value   := alx_int_lan_cn4_id;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[3].Value   := alx_int_lan_cb_id;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[4].DataType:= FTFloat;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[4].Value   := alx_flo_lan_valor;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[5].Value   := alx_str_lan_doc;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[6].Value   := alx_str_lan_obs;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[7].Value   := alx_int_user_id;&lt;br /&gt;    //--------------&lt;br /&gt;    self.ADOQuery_Apoio.ExecSQL();&lt;br /&gt;    alx_boo_apoio:= True;&lt;br /&gt;    self.Edit10.Text:= inttostr(alx_int_lan_id);                                //... fornece o verdadeiro id do lançamento que foi inserido ...&lt;br /&gt;    //--------------&lt;br /&gt;  except&lt;br /&gt;    on E: Exception do begin&lt;br /&gt;      alx_boo_apoio:= False;&lt;br /&gt;      ShowMessage('Ôpa, ocorreu um erro ao realizar a Tarefa_1 da transação que insere um lançamento de receita! Veja: ' + E.Message);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;  result:= alx_boo_apoio;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;function  Talx_frm_sgc_lancamentos_receitas.alx_boo_Tarefa_2_Transacao_Realizada_Com_Sucesso(): Boolean;&lt;br /&gt;var&lt;br /&gt;  alx_int_i             : Integer;&lt;br /&gt;  alx_int_rateio_lan_id : Integer;&lt;br /&gt;  alx_int_rateio_ae_id  : Integer;&lt;br /&gt;  alx_flo_rateio_parcial: Real;&lt;br /&gt;  alx_boo_apoio         : Boolean;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    alx_int_rateio_lan_id   := strtoint(self.Edit10.Text);&lt;br /&gt;    for alx_int_i:= 0 to (self.alx_lst_lista_atividades.Count - 1) do begin&lt;br /&gt;      alx_int_rateio_ae_id  := strtoint(    (TObject(self.alx_lst_lista_atividades.Items[alx_int_i]) as TStrings).Strings[0] );&lt;br /&gt;      alx_flo_rateio_parcial:= strtofloat(  (TObject(self.alx_lst_lista_atividades.Items[alx_int_i]) as TStrings).Strings[2] );&lt;br /&gt;      if (self.alx_boo_Tarefa_2_Transacao_Rateio_Inserido_Com_Sucesso(alx_int_rateio_lan_id, alx_int_rateio_ae_id, alx_flo_rateio_parcial)) then begin&lt;br /&gt;         alx_boo_apoio:= True;&lt;br /&gt;      end&lt;br /&gt;      else begin&lt;br /&gt;         alx_boo_apoio:= False;&lt;br /&gt;         break;&lt;br /&gt;      end;&lt;br /&gt;    end;&lt;br /&gt;  except&lt;br /&gt;    on E:Exception do begin&lt;br /&gt;      alx_boo_apoio:= False;&lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao preparar a Tarefa_2 da transação de lançamento de nova receita! Veja: ' + E.Message);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;  result:= alx_boo_apoio;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;function  Talx_frm_sgc_lancamentos_receitas.alx_boo_Tarefa_2_Transacao_Rateio_Inserido_Com_Sucesso(alx_int_lan_id: Integer ; alx_int_atividade_id: Integer ; alx_flo_valor: Real ): Boolean;&lt;br /&gt;var&lt;br /&gt;  alx_str_sql_text : TStrings;&lt;br /&gt;  alx_int_rateio_id: Integer;&lt;br /&gt;  alx_boo_apoio    : Boolean;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    alx_int_rateio_id:= self.alx_int_Pegar_Rateios_Novo_Id();&lt;br /&gt;    alx_str_sql_text := TStringList.Create();&lt;br /&gt;    alx_str_sql_text.Add('INSERT INTO RATEIOS VALUES (:, :, :, :, True); ');&lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;&lt;br /&gt;    self.ADOQuery_Apoio.SQL.Clear();&lt;br /&gt;    self.ADOQuery_Apoio.SQL:= alx_str_sql_text;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[0].Value   := alx_int_rateio_id;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[1].Value   := alx_int_lan_id;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[2].Value   := alx_int_atividade_id;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[3].DataType:= FTFloat;&lt;br /&gt;    self.ADOQuery_Apoio.Parameters[3].Value   := alx_flo_valor;&lt;br /&gt;    //--------------&lt;br /&gt;    self.ADOQuery_Apoio.ExecSQL();&lt;br /&gt;    alx_boo_apoio:= True;&lt;br /&gt;    //--------------&lt;br /&gt;  except&lt;br /&gt;    on E:Exception do begin&lt;br /&gt;      alx_boo_apoio:= False;&lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao inserir um registro em Rateios! Veja: ' + E.Message);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;  result:= alx_boo_apoio;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;function  Talx_frm_sgc_lancamentos_receitas.alx_int_Pegar_Rateios_Novo_Id(): Integer;&lt;br /&gt;var&lt;br /&gt;  alx_str_sql_text: TStrings;&lt;br /&gt;  alx_int_apoio   : Integer;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    alx_str_sql_text:= TStringList.Create();&lt;br /&gt;    alx_str_sql_text.Add('SELECT  MAX(RATEIO_ID) FROM  RATEIOS ');&lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;&lt;br /&gt;    self.ADOQuery_Apoio.SQL.Clear();&lt;br /&gt;    self.ADOQuery_Apoio.SQL:= alx_str_sql_text;&lt;br /&gt;    self.ADOQuery_Apoio.Active:= True;&lt;br /&gt;    //-----------------&lt;br /&gt;    alx_int_apoio:= self.ADOQuery_Apoio.Fields[0].AsInteger + 1;&lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;&lt;br /&gt;    //-----------------&lt;br /&gt;  except&lt;br /&gt;    on E: Exception do begin&lt;br /&gt;      alx_int_apoio:= 0;&lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao buscar o novo código para um Rateio! Veja: ' + E.Message);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;  result:= alx_int_apoio;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1308388809942346558-742447472111431108?l=alexandremanoeldossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandremanoeldossantos.blogspot.com/feeds/742447472111431108/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1308388809942346558&amp;postID=742447472111431108' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/742447472111431108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/742447472111431108'/><link rel='alternate' type='text/html' href='http://alexandremanoeldossantos.blogspot.com/2007/07/rotinas-em-delphi-para-operacionalizao.html' title='Rotinas em DELPHI para operacionalização de uma Transação com ADO'/><author><name>Engº Alexandre Manoel dos Santos, M.Sc.</name><uri>http://www.blogger.com/profile/06205352072784818925</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_Kl7Ajw6APsk/TQTBsBuMrOI/AAAAAAAAANI/i7NQBA3t4sU/S220/Alexandre_Manoel_Home_Foto_02.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1308388809942346558.post-9220030144480560013</id><published>2007-06-29T06:54:00.000-07:00</published><updated>2007-07-03T04:56:02.102-07:00</updated><title type='text'>Rotina em DELPHI para inserção de Tuplas</title><content type='html'>&lt;a href="http://bp0.blogger.com/_Kl7Ajw6APsk/RoURlRRo4SI/AAAAAAAAAJE/l1G5FIWHg5g/s1600-h/imagem_turmas.bmp"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_Kl7Ajw6APsk/RoURlRRo4SI/AAAAAAAAAJE/l1G5FIWHg5g/s320/imagem_turmas.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5081487086547689762" /&gt;&lt;/a&gt;&lt;br /&gt;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:&lt;br /&gt;&lt;br /&gt;//------------------------------------------------------------------------------&lt;br /&gt;function  TF_Turmas.Alx_Turma_Inserido_Com_Sucesso(): Boolean;&lt;br /&gt;var&lt;br /&gt;  alx_str_sql_texto      : TStrings;&lt;br /&gt;  alx_boo_apoio          : Boolean;&lt;br /&gt;  alx_int_turma_id       : Integer;&lt;br /&gt;  alx_str_turma_apelido  : String;&lt;br /&gt;  alx_str_turma_nome     : String;&lt;br /&gt;begin&lt;br /&gt;  alx_str_sql_texto:= TStringList.Create();&lt;br /&gt;  try&lt;br /&gt;    alx_int_turma_id     := self.Alx_Get_Turma_Id();&lt;br /&gt;    alx_str_turma_apelido:= self.Edit2.Text;&lt;br /&gt;    alx_str_turma_nome   := self.Edit3.Text;&lt;br /&gt;    //-----------------------------------------------&lt;br /&gt;    alx_str_sql_texto.Add('INSERT INTO TURMAS VALUES ( :, :, : ) ');&lt;br /&gt;    F_Data_Module.ADOQuery_Cadastro_Turmas.Active:= False;&lt;br /&gt;    F_Data_Module.ADOQuery_Cadastro_Turmas.SQL:= alx_str_sql_texto;&lt;br /&gt;    F_Data_Module.ADOQuery_Cadastro_Turmas.Parameters[0].Value:= alx_int_turma_id;&lt;br /&gt;    F_Data_Module.ADOQuery_Cadastro_Turmas.Parameters[1].Value:= alx_str_turma_apelido;&lt;br /&gt;    F_Data_Module.ADOQuery_Cadastro_Turmas.Parameters[2].Value:= alx_str_turma_nome;&lt;br /&gt;    F_Data_Module.ADOQuery_Cadastro_Turmas.ExecSQL;&lt;br /&gt;    //------------------------------------------------&lt;br /&gt;    alx_str_sql_texto.Clear();&lt;br /&gt;    alx_str_sql_texto.Add('SELECT * FROM TURMAS ORDER BY TURMA_NOME ');&lt;br /&gt;    F_Data_Module.ADOQuery_Cadastro_Turmas.SQL:= alx_str_sql_texto;&lt;br /&gt;    F_Data_Module.ADOQuery_Cadastro_Turmas.Active:= True;&lt;br /&gt;    //------------------------------------------------&lt;br /&gt;    self.Alx_Turma_Set_Focus(alx_int_turma_id);&lt;br /&gt;    self.Alx_Atualizar_Turma();&lt;br /&gt;    alx_boo_apoio:= True;&lt;br /&gt;  except&lt;br /&gt;    on E: Exception do&lt;br /&gt;      begin&lt;br /&gt;      alx_str_sql_texto.Clear();&lt;br /&gt;      alx_str_sql_texto.Add('SELECT * FROM TURMAS ORDER BY TURMA_NOME ');&lt;br /&gt;      F_Data_Module.ADOQuery_Cadastro_Turmas.SQL:= alx_str_sql_texto;&lt;br /&gt;      F_Data_Module.ADOQuery_Cadastro_Turmas.Active:= True;&lt;br /&gt;      self.Alx_Atualizar_Turma();&lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao INSERIR um novo Turma! Veja: ' + E.Message);&lt;br /&gt;      alx_boo_apoio:= False;&lt;br /&gt;      end;&lt;br /&gt;  end;&lt;br /&gt;  result:= alx_boo_apoio;&lt;br /&gt;end;&lt;br /&gt;//---------------------------------------------------------------------------------------------&lt;br /&gt;//------------------------------------------------------------------------------&lt;br /&gt;procedure TF_Turmas.Alx_Preparar_Para_Inserir();&lt;br /&gt;begin&lt;br /&gt;    if(self.BitBtn1.Caption = 'inserir') then&lt;br /&gt;      begin&lt;br /&gt;        self.Alx_Limpar_Caixas_Texto_Turma();                                  //...limpar as caixas de texto&lt;br /&gt;        self.Alx_Liberar_Componentes_Para_Insercao(True);                       //...libera o groupbox das caixas de texto&lt;br /&gt;        self.BitBtn1.Caption:= 'salvar';&lt;br /&gt;      end&lt;br /&gt;    else if( (self.BitBtn1.Caption = 'salvar') and (self.Alx_Turma_Inserido_Com_Sucesso()) ) then&lt;br /&gt;      begin&lt;br /&gt;        self.Alx_Liberar_Componentes_Para_Insercao(False);&lt;br /&gt;        self.BitBtn1.Caption:= 'inserir';&lt;br /&gt;      end;&lt;br /&gt;end;&lt;br /&gt;//------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;A interface se Turmas é apresentada abaixo:&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1308388809942346558-9220030144480560013?l=alexandremanoeldossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandremanoeldossantos.blogspot.com/feeds/9220030144480560013/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1308388809942346558&amp;postID=9220030144480560013' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/9220030144480560013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/9220030144480560013'/><link rel='alternate' type='text/html' href='http://alexandremanoeldossantos.blogspot.com/2007/06/rotina-em-delphi-para-insero-de-tuplas.html' title='Rotina em DELPHI para inserção de Tuplas'/><author><name>Engº Alexandre Manoel dos Santos, M.Sc.</name><uri>http://www.blogger.com/profile/06205352072784818925</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_Kl7Ajw6APsk/TQTBsBuMrOI/AAAAAAAAANI/i7NQBA3t4sU/S220/Alexandre_Manoel_Home_Foto_02.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_Kl7Ajw6APsk/RoURlRRo4SI/AAAAAAAAAJE/l1G5FIWHg5g/s72-c/imagem_turmas.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1308388809942346558.post-1083108688083849687</id><published>2007-06-25T16:51:00.000-07:00</published><updated>2007-06-26T06:03:25.154-07:00</updated><title type='text'>Rotina em DELPHI para Top 10 entre datas escolhidas do Sistema de Video Locadora</title><content type='html'>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). &lt;br /&gt;//===================================================================================&lt;br /&gt;procedure TForm_consultas_top_10.Button1Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  alx_str_sql_texto1: TStrings;&lt;br /&gt;  alx_dat_data_1 : Tdate;&lt;br /&gt;  alx_dat_data_2 : TDate;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    alx_dat_data_1:= strtodate(self.Edit2.Text);&lt;br /&gt;    alx_dat_data_2:= strtodate(self.Edit3.Text);&lt;br /&gt;    alx_str_sql_texto1:= TStringList.Create();&lt;br /&gt;    alx_str_sql_texto1.Add('SELECT TOP 10 Cli_Id, Cli_Nome, Count(EE_EMP_ID) ');&lt;br /&gt;    alx_str_sql_texto1.Add('FROM          clientes, emprestimos, emprest_x_exemp ');&lt;br /&gt;    alx_str_sql_texto1.Add('WHERE         Cli_id = Emp_Cli_Id_Titular  And   Emp_id = EE_EMP_ID  and  Emp_Data between : And :  ');&lt;br /&gt;    alx_str_sql_texto1.Add('GROUP BY      Cli_Id, Cli_Nome ');&lt;br /&gt;    alx_str_sql_texto1.Add('ORDER BY      Count(EE_EMP_ID) DESC , CLI_NOME ; ');&lt;br /&gt;    self.ADOQuery1.Active:= False;&lt;br /&gt;    self.ADOQuery1.SQL.Clear();&lt;br /&gt;    self.ADOQuery1.SQL:= alx_str_sql_texto1;&lt;br /&gt;    self.ADOQuery1.Parameters[0].DataType:= FTDate;&lt;br /&gt;    self.ADOQuery1.Parameters[0].Value:= alx_dat_data_1;&lt;br /&gt;    self.ADOQuery1.Parameters[1].DataType:= FTDate;&lt;br /&gt;    self.ADOQuery1.Parameters[1].Value:= alx_dat_data_2;&lt;br /&gt;    self.ADOQuery1.Active:= True;&lt;br /&gt;  except&lt;br /&gt;    on E: Exception do begin&lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao Pesquisar o conjunto Top Ten! Veja: ' + E.Message );&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;//===================================================================================&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1308388809942346558-1083108688083849687?l=alexandremanoeldossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandremanoeldossantos.blogspot.com/feeds/1083108688083849687/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1308388809942346558&amp;postID=1083108688083849687' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/1083108688083849687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/1083108688083849687'/><link rel='alternate' type='text/html' href='http://alexandremanoeldossantos.blogspot.com/2007/06/rotina-em-delphi-para-top-10-entre.html' title='Rotina em DELPHI para Top 10 entre datas escolhidas do Sistema de Video Locadora'/><author><name>Engº Alexandre Manoel dos Santos, M.Sc.</name><uri>http://www.blogger.com/profile/06205352072784818925</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_Kl7Ajw6APsk/TQTBsBuMrOI/AAAAAAAAANI/i7NQBA3t4sU/S220/Alexandre_Manoel_Home_Foto_02.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1308388809942346558.post-2600599837254977299</id><published>2007-06-15T07:09:00.000-07:00</published><updated>2007-06-15T07:26:19.899-07:00</updated><title type='text'>Rotina em DELPHI para localizar nomes de Clientes em um dado DBGrid</title><content type='html'>A &lt;em&gt;procedure&lt;/em&gt; 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 &lt;br /&gt;"alx_voi_Localizar_Clientes()". O grid associado ao componente "ADOQuery_Clientes"&lt;br /&gt;é preenchido com os clientes que satisfazem o critério de pesquisa e localização.&lt;br /&gt;É isso, simples e eficiente...:)&lt;br /&gt;&lt;br /&gt;//===========================================================================&lt;br /&gt;procedure Tfrm_clientes.alx_voi_Localizar_Clientes();&lt;br /&gt;var&lt;br /&gt;  alx_str_sql_texto: TStrings;&lt;br /&gt;  alx_str_prefixo   : String;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    alx_str_prefixo:= self.Edit1.Text + '%';   //... utilizando o curinga "%" como sufixo de pesquisa ...&lt;br /&gt;    alx_str_sql_texto:= TStringList.Create();&lt;br /&gt;    alx_str_sql_texto.Add('SELECT      CLI_ID      , CLI_NOME     , CLI_CPF   ,     CLI_FONE    , CLI_ENDERECO , CLI_CITY_ID , ');&lt;br /&gt;    alx_str_sql_texto.Add('            CITY_NOME   , UF_SIGLA     , CLI_NIVER ,     CLI_FUNC_ID , FUNC_APELIDO ');&lt;br /&gt;    alx_str_sql_texto.Add('FROM        CLIENTES    , CIDADES      ,                 UNIDADES_FEDERACAO         , FUNCIONARIOS ');&lt;br /&gt;    alx_str_sql_texto.Add('WHERE       CLI_CITY_ID = CITY_ID  AND  CITY_UF_ID =     UF_ID AND CLI_FUNC_ID = FUNC_ID ');&lt;br /&gt;    alx_str_sql_texto.Add('            AND CLI_NOME LIKE : ');&lt;br /&gt;    alx_str_sql_texto.Add('ORDER BY    CLI_NOME ; ');&lt;br /&gt;    self.ADOQuery_Clientes.Active:= False;&lt;br /&gt;    self.ADOQuery_Clientes.SQL.Clear();&lt;br /&gt;    self.ADOQuery_Clientes.SQL:= alx_str_sql_texto;&lt;br /&gt;    self.ADOQuery_Clientes.Parameters[0].Value:= sl_str_prefixo;&lt;br /&gt;    self.ADOQuery_Clientes.Active:= True;&lt;br /&gt;  except&lt;br /&gt;    on E: Exception do begin&lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao Pesquisar o conjunto de CLIENTES! Veja: ' + E.Message );&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;//==============================================================================&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1308388809942346558-2600599837254977299?l=alexandremanoeldossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandremanoeldossantos.blogspot.com/feeds/2600599837254977299/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1308388809942346558&amp;postID=2600599837254977299' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/2600599837254977299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/2600599837254977299'/><link rel='alternate' type='text/html' href='http://alexandremanoeldossantos.blogspot.com/2007/06/rotina-em-delphi-para-localizar-um-nome.html' title='Rotina em DELPHI para localizar nomes de Clientes em um dado DBGrid'/><author><name>Engº Alexandre Manoel dos Santos, M.Sc.</name><uri>http://www.blogger.com/profile/06205352072784818925</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_Kl7Ajw6APsk/TQTBsBuMrOI/AAAAAAAAANI/i7NQBA3t4sU/S220/Alexandre_Manoel_Home_Foto_02.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1308388809942346558.post-6318271897861542511</id><published>2007-06-10T05:51:00.000-07:00</published><updated>2007-06-10T06:10:31.475-07:00</updated><title type='text'>Rotinas em DELPHI para Popular um ComboBox</title><content type='html'>&lt;a href="http://bp1.blogger.com/_Kl7Ajw6APsk/Rmv4NiWe8fI/AAAAAAAAAIk/yu-l1xBhF4I/s1600-h/imagem_sgc_lancamento_receitas.bmp"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_Kl7Ajw6APsk/Rmv4NiWe8fI/AAAAAAAAAIk/yu-l1xBhF4I/s320/imagem_sgc_lancamento_receitas.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5074422316606091762" /&gt;&lt;/a&gt;&lt;br /&gt;Esta postagem tem duplo objetivo:&lt;br /&gt;(i) Mostar como se pode popular um combobox com valores buscados de um banco de dados;&lt;br /&gt;(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".&lt;br /&gt;&lt;br /&gt;Os componentes "TEdit´s" que receberão os "Id´s" e os componentes "TComboBox´s" estão descritos na figura abaixo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Primeiro evento: O usuário seleciona um item de um combobox;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Veja o corpo das functions abaixo na seção "implementation":   &lt;br /&gt;function  alx_int_Pegar_Conta_Bancaria_Id(alx_str_conta_bancaria_nome: String): Integer;      &lt;br /&gt;function  alx_int_Pegar_Conta_Nivel_4_Id(alx_str_conta_nivel_4_nome: String): Integer;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;unit Unit_SGC_Lancamentos_Receitas;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, Grids, DBGrids, DB, ADODB,  Unit_SGC_Data_Module;&lt;br /&gt;&lt;br /&gt;type  &lt;br /&gt;Talx_frm_sgc_lancamentos_receitas = class(TForm)    &lt;br /&gt;&lt;br /&gt;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);    &lt;br /&gt;&lt;br /&gt;procedure ComboBox1Select(Sender: TObject);    &lt;br /&gt;procedure ComboBox2Select(Sender: TObject);  &lt;br /&gt;&lt;br /&gt;private    &lt;br /&gt;{ Private declarations }   &lt;br /&gt;  alx_str_user_nome : String;    &lt;br /&gt;  alx_int_user_na_id: Integer;    &lt;br /&gt;  //-------    &lt;br /&gt;  function  alx_int_Pegar_Conta_Bancaria_Id(alx_str_conta_bancaria_nome: String): Integer;    &lt;br /&gt;  function  alx_int_Pegar_Conta_Nivel_4_Id(alx_str_conta_nivel_4_nome: String): Integer;    &lt;br /&gt;  //-------    &lt;br /&gt;  procedure alx_voi_Atualizar_Cartao_Atividades_Extensao();    &lt;br /&gt;  procedure alx_voi_Definir_Data_Lancamento_Receita();    &lt;br /&gt;  procedure alx_voi_Popular_Contas_Bancarias_ComboBox();    &lt;br /&gt;  procedure alx_voi_Popular_Contas_Nivel_4_ComboBox();    &lt;br /&gt;  procedure alx_voi_Popular_Grid_Atividades_Extensao();    &lt;br /&gt;  procedure alx_voi_Rateio_Preparar_Para_Digitar_Valor();    &lt;br /&gt;  procedure alx_voi_Rateio_Preparar_Para_Calcular_Automaticamente();    &lt;br /&gt;  procedure alx_voi_Registrar_Entrada_Usuario(alx_str_nome: String ; alx_int_na_id: Integer);    &lt;br /&gt;  procedure alx_voi_Registrar_Status_Bar_Usuario();&lt;br /&gt;  &lt;br /&gt;public    &lt;br /&gt;{ Public declarations }    &lt;br /&gt;  constructor alx_voi_Create(alx_obj_owner: TComponent ; alx_str_user_name: String ; alx_int_nivel_acesso_id: Integer);    &lt;br /&gt;  destructor alx_voi_Destroy();  &lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;//==============================================================================&lt;br /&gt;function  Talx_frm_sgc_lancamentos_receitas.alx_int_Pegar_Conta_Bancaria_Id(alx_str_conta_bancaria_nome: String): Integer;&lt;br /&gt;var  &lt;br /&gt;  alx_str_sql_text: TStrings;  alx_int_apoio   : Integer;&lt;br /&gt;begin  &lt;br /&gt;  try    &lt;br /&gt;    alx_str_sql_text:= TStringList.Create();    &lt;br /&gt;    alx_str_sql_text.Add('SELECT  CB_ID  FROM  CONTAS_BANCARIAS  WHERE  CB_NOME = : ');    &lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;   &lt;br /&gt;    self.ADOQuery_Apoio.SQL.Clear();    &lt;br /&gt;    self.ADOQuery_Apoio.SQL:= alx_str_sql_text;    &lt;br /&gt;    self.ADOQuery_Apoio.Parameters[0].Value:= alx_str_conta_bancaria_nome; &lt;br /&gt;    self.ADOQuery_Apoio.Active:= True;    &lt;br /&gt;    //-----------------    &lt;br /&gt;    alx_int_apoio:= self.ADOQuery_Apoio.Fields[0].AsInteger; &lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;    &lt;br /&gt;    //-----------------  &lt;br /&gt;  except    &lt;br /&gt;    on E: Exception do begin      &lt;br /&gt;      alx_int_apoio:= 0;      &lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao buscar o código para uma Contas de Nível 4 de nome conhecido! Veja: ' + E.Message);    &lt;br /&gt;    end;  &lt;br /&gt;  end;  &lt;br /&gt;  result:= alx_int_apoio;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;function  Talx_frm_sgc_lancamentos_receitas.alx_int_Pegar_Conta_Nivel_4_Id(alx_str_conta_nivel_4_nome: String): Integer;&lt;br /&gt;var  &lt;br /&gt;  alx_str_sql_text: TStrings;  alx_int_apoio   : Integer;&lt;br /&gt;begin  &lt;br /&gt;  try    &lt;br /&gt;    alx_str_sql_text:= TStringList.Create();    &lt;br /&gt;    alx_str_sql_text.Add('SELECT  CN4_ID  FROM  CONTAS_NIVEL_4  WHERE  CN4_NOME = : ');    &lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;    &lt;br /&gt;    self.ADOQuery_Apoio.SQL.Clear();    &lt;br /&gt;    self.ADOQuery_Apoio.SQL:= alx_str_sql_text;   &lt;br /&gt;    self.ADOQuery_Apoio.Parameters[0].Value:= alx_str_conta_nivel_4_nome; &lt;br /&gt;    self.ADOQuery_Apoio.Active:= True;    &lt;br /&gt;    //-----------------    &lt;br /&gt;    alx_int_apoio:= self.ADOQuery_Apoio.Fields[0].AsInteger;   &lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;    &lt;br /&gt;    //-----------------  &lt;br /&gt;  except    &lt;br /&gt;    on E: Exception do begin      &lt;br /&gt;      alx_int_apoio:= 0;      &lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao buscar o código para uma Contas de Nível 4 de nome conhecido! Veja: ' + E.Message);    &lt;br /&gt;    end;  &lt;br /&gt;  end;  &lt;br /&gt;  result:= alx_int_apoio;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Talx_frm_sgc_lancamentos_receitas.ComboBox1Select( Sender: TObject);&lt;br /&gt;begin  &lt;br /&gt;  self.Edit1.Text:= inttostr(self.alx_int_Pegar_Conta_Bancaria_Id(self.ComboBox1.Text));&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Talx_frm_sgc_lancamentos_receitas.ComboBox2Select(Sender: TObject);&lt;br /&gt;begin  &lt;br /&gt;  self.Edit2.Text:= inttostr(self.alx_int_Pegar_Conta_Nivel_4_Id(self.ComboBox2.Text));&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Talx_frm_sgc_lancamentos_receitas.alx_voi_Popular_Contas_Bancarias_ComboBox();&lt;br /&gt;var  &lt;br /&gt;  alx_str_sql_text: TStrings;&lt;br /&gt;begin  &lt;br /&gt;  try    &lt;br /&gt;    alx_str_sql_text:= TStringList.Create();    &lt;br /&gt;    alx_str_sql_text.Add('SELECT CB_NOME FROM CONTAS_BANCARIAS WHERE CB_ATIVO = TRUE ORDER BY CB_NOME ;');    &lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;    &lt;br /&gt;    self.ADOQuery_Apoio.SQL.Clear();    &lt;br /&gt;    self.ADOQuery_Apoio.SQL:= alx_str_sql_text;   &lt;br /&gt;    self.ADOQuery_Apoio.Active:= True;    &lt;br /&gt;    //-----------------    &lt;br /&gt;    self.ComboBox1.Items.Clear();    &lt;br /&gt;    while not(self.ADOQuery_Apoio.Eof) do begin    &lt;br /&gt;      self.ComboBox1.Items.Add(self.ADOQuery_Apoio.Fields[0].AsString);&lt;br /&gt;      self.ADOQuery_Apoio.Next();    &lt;br /&gt;    end;    &lt;br /&gt;    self.ComboBox1.Text:= 'escolha uma conta bancária';   &lt;br /&gt;    self.Edit1.Text:= '';    &lt;br /&gt;    //-----------------    &lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;    &lt;br /&gt;    //-----------------  &lt;br /&gt;  except    &lt;br /&gt;    on E: Exception do begin      &lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao popular o combo de Contas Bancárias! Veja: ' + E.Message);    &lt;br /&gt;    end; &lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Talx_frm_sgc_lancamentos_receitas.alx_voi_Popular_Contas_Nivel_4_ComboBox();&lt;br /&gt;var  &lt;br /&gt;  alx_str_sql_text: TStrings;&lt;br /&gt;begin    &lt;br /&gt;  try    &lt;br /&gt;    alx_str_sql_text:= TStringList.Create();    &lt;br /&gt;    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 ');&lt;br /&gt;    alx_str_sql_text.Add('WHERE    CN4_CN3_ID = CN3_ID  AND  CN3_CN2_ID = CN2_ID AND ');    &lt;br /&gt;    alx_str_sql_text.Add('         CN2_CN1_ID = CN1_ID  AND  CN1_ID     = 4      AND  CN4_ATIVO = TRUE ');    &lt;br /&gt;    alx_str_sql_text.Add('ORDER BY CN4_NOME ; ');    &lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;    &lt;br /&gt;    self.ADOQuery_Apoio.SQL.Clear();    &lt;br /&gt;    self.ADOQuery_Apoio.SQL:= alx_str_sql_text;    &lt;br /&gt;    self.ADOQuery_Apoio.Active:= True;   &lt;br /&gt;    //-----------------    &lt;br /&gt;    self.ComboBox2.Items.Clear();    &lt;br /&gt;    while not(self.ADOQuery_Apoio.Eof) do begin      &lt;br /&gt;      self.ComboBox2.Items.Add(self.ADOQuery_Apoio.Fields[0].AsString);    &lt;br /&gt;      self.ADOQuery_Apoio.Next();    &lt;br /&gt;    end;    &lt;br /&gt;    self.ComboBox2.Text:= 'escolha uma conta de nível 4 para o lançamento';  &lt;br /&gt;    self.Edit2.Text:= '';    &lt;br /&gt;    //-----------------    &lt;br /&gt;    self.ADOQuery_Apoio.Active:= False;    &lt;br /&gt;    //-----------------  &lt;br /&gt;    except    &lt;br /&gt;      on E: Exception do begin      &lt;br /&gt;        showmessage('Ôpa, ocorreu um erro ao popular o combo de Contas de Nível 4! Veja: ' + E.Message);    &lt;br /&gt;      end;  &lt;br /&gt;    end;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1308388809942346558-6318271897861542511?l=alexandremanoeldossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandremanoeldossantos.blogspot.com/feeds/6318271897861542511/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1308388809942346558&amp;postID=6318271897861542511' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/6318271897861542511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/6318271897861542511'/><link rel='alternate' type='text/html' href='http://alexandremanoeldossantos.blogspot.com/2007/06/rotinas-em-delphi-para-popular-um.html' title='Rotinas em DELPHI para Popular um ComboBox'/><author><name>Engº Alexandre Manoel dos Santos, M.Sc.</name><uri>http://www.blogger.com/profile/06205352072784818925</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_Kl7Ajw6APsk/TQTBsBuMrOI/AAAAAAAAANI/i7NQBA3t4sU/S220/Alexandre_Manoel_Home_Foto_02.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_Kl7Ajw6APsk/Rmv4NiWe8fI/AAAAAAAAAIk/yu-l1xBhF4I/s72-c/imagem_sgc_lancamento_receitas.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1308388809942346558.post-5129394627612681806</id><published>2007-06-07T18:05:00.002-07:00</published><updated>2007-06-07T19:08:08.787-07:00</updated><title type='text'>Rotinas em DELPHI para um Painel Central Completo</title><content type='html'>&lt;a href="http://bp1.blogger.com/_Kl7Ajw6APsk/Rmi58SWe8eI/AAAAAAAAAIc/KmdYIq3ZasA/s1600-h/imagem_sgc_painel_central.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5073509425602294242" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_Kl7Ajw6APsk/Rmi58SWe8eI/AAAAAAAAAIc/KmdYIq3ZasA/s320/imagem_sgc_painel_central.bmp" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;A Unit "Unit_SGC_Painel_Central" controla a interface descrita na figura abaixo. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Como características principais tem-se:&lt;br /&gt;&lt;br /&gt;Entrada Lógica no sistema;&lt;br /&gt;&lt;br /&gt;Saída Lógica do sistema;&lt;br /&gt;&lt;br /&gt;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);&lt;br /&gt;&lt;br /&gt;Uma série de controle são efetuados no processo de entrada e de saída lógica do sistema;&lt;br /&gt;A seguir é apresentada a referida Unit.&lt;br /&gt;&lt;br /&gt;unit Unit_SGC_Painel_Central;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;&lt;br /&gt;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, Menus, ComCtrls, jpeg, DB, ADODB, Unit_SGC_Data_Module;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;&lt;br /&gt;Talx_frm_painel_central = class(TForm)&lt;br /&gt;&lt;br /&gt;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;&lt;br /&gt;&lt;br /&gt;procedure BitBtn1Click(Sender: TObject);&lt;br /&gt;procedure FormCreate(Sender: TObject); &lt;/div&gt;&lt;br /&gt;&lt;div&gt;procedure Sair1Click(Sender: TObject);&lt;br /&gt;procedure BitBtn15Click(Sender: TObject);&lt;br /&gt;procedure BitBtn2Click(Sender: TObject);&lt;br /&gt;procedure BitBtn11Click(Sender: TObject); &lt;/div&gt;&lt;br /&gt;&lt;div&gt;procedure BitBtn6Click(Sender: TObject);&lt;br /&gt;&lt;br /&gt;private&lt;br /&gt;{ Private declarations }&lt;br /&gt;//----------------&lt;br /&gt;alx_str_user_nome : String;&lt;br /&gt;alx_int_user_na_id : Integer;&lt;br /&gt;alx_int_componentes_iniciais: Integer;&lt;br /&gt;//----------------&lt;br /&gt;function alx_boo_Usuario_Existe(alx_str_user_apelido_digitado: String): Boolean;&lt;br /&gt;function alx_boo_Senha_Ok(alx_str_user_apelido_digitado: String ;&lt;br /&gt;alx_str_senha_digitada: String): Boolean;&lt;br /&gt;//----------------&lt;br /&gt;procedure alx_voi_Habilitar_Botoes(alx_boo_liberar: Boolean);&lt;br /&gt;procedure alx_voi_Habilitar_Menus(alx_boo_liberar: Boolean);&lt;br /&gt;procedure alx_voi_Preparar_Form_Caso_Entrada_Logica();&lt;br /&gt;procedure alx_voi_Preparar_Form_Caso_Saida_Logica();&lt;br /&gt;procedure alx_voi_Preparar_Form_Caso_Usuario_E_Senha_Ok();&lt;br /&gt;procedure alx_voi_Preparar_Form_Caso_Usuario_Ok_Senha_Errada();&lt;br /&gt;procedure alx_voi_Preparar_Form_Caso_Usuario_Nao_Existe();&lt;br /&gt;procedure alx_voi_Registrar_Entrada_Usuario(alx_str_nome: String ; alx_int_na_id: Integer);&lt;br /&gt;procedure alx_voi_Registrar_Status_Bar_Usuario();&lt;br /&gt;procedure alx_voi_Destruir_Todos_Os_Forms_Criados();&lt;br /&gt;//----------------&lt;br /&gt;public&lt;br /&gt;{ Public declarations }&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;alx_frm_painel_central: Talx_frm_painel_central;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;implementation&lt;br /&gt;&lt;br /&gt;uses Unit_SGC_Lancamentos_Receitas;&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;//============================================================================== procedure Talx_frm_painel_central.alx_voi_Destruir_Todos_Os_Forms_Criados();&lt;br /&gt;begin&lt;br /&gt;while (Application.ComponentCount &gt; self.alx_int_componentes_iniciais) do begin&lt;br /&gt;Application.Components[Application.ComponentCount - 1].Destroy;&lt;br /&gt;end;&lt;br /&gt;end;&lt;br /&gt;//============================================================================== procedure Talx_frm_painel_central.alx_voi_Registrar_Entrada_Usuario(alx_str_nome: String ; alx_int_na_id: Integer);&lt;br /&gt;begin&lt;br /&gt;self.alx_str_user_nome := alx_str_nome;&lt;br /&gt;self.alx_int_user_na_id:= alx_int_na_id;&lt;br /&gt;end;&lt;br /&gt;//============================================================================== procedure Talx_frm_painel_central.alx_voi_Registrar_Status_Bar_Usuario();&lt;br /&gt;begin&lt;br /&gt;self.StatusBar1.Panels[0].Text:= ' Usuário: ' + self.alx_str_user_nome;&lt;br /&gt;self.StatusBar1.Panels[1].Text:= ' Nível de Acesso: ' + inttostr(self.alx_int_user_na_id);&lt;br /&gt;end;&lt;br /&gt;//============================================================================== function Talx_frm_painel_central.alx_boo_Usuario_Existe(alx_str_user_apelido_digitado: String): Boolean;&lt;br /&gt;var&lt;br /&gt;alx_str_sql_text : TStrings;&lt;br /&gt;alx_boo_usuario_existe: Boolean;&lt;br /&gt;alx_str_user_apelido : String;&lt;br /&gt;begin&lt;br /&gt;try&lt;br /&gt;alx_str_sql_text:= TStringList.Create();&lt;br /&gt;alx_str_sql_text.Add('SELECT USER_APELIDO FROM USERS ORDER BY USER_APELIDO ;');&lt;br /&gt;self.ADOQuery_SGC_Login.Active:= False;&lt;br /&gt;self.ADOQuery_SGC_Login.SQL.Clear();&lt;br /&gt;self.ADOQuery_SGC_Login.SQL:= alx_str_sql_text;&lt;br /&gt;self.ADOQuery_SGC_Login.Active:= True;&lt;br /&gt;//------------&lt;br /&gt;while not(self.ADOQuery_SGC_Login.Eof) do begin&lt;br /&gt;alx_str_user_apelido:= self.ADOQuery_SGC_Login.Fields[0].AsString;&lt;br /&gt;if (alx_str_user_apelido = alx_str_user_apelido_digitado ) then begin&lt;br /&gt;alx_boo_usuario_existe:= true; break;&lt;br /&gt;end&lt;br /&gt;else begin&lt;br /&gt;alx_boo_usuario_existe:= false;&lt;br /&gt;end;&lt;br /&gt;self.ADOQuery_SGC_Login.Next();&lt;br /&gt;end;&lt;br /&gt;//------------&lt;br /&gt;except&lt;br /&gt;on E:Exception do begin&lt;br /&gt;ShowMessage('Ôpa, ocorreu um erro ao verificar a existência de um usuário! Veja: ' + E.Message);&lt;br /&gt;end;&lt;br /&gt;end;&lt;br /&gt;result:= alx_boo_usuario_existe;&lt;br /&gt;end;&lt;br /&gt;//============================================================================== function Talx_frm_painel_central.alx_boo_Senha_Ok(alx_str_user_apelido_digitado: String ; alx_str_senha_digitada: String): Boolean;&lt;br /&gt;var&lt;br /&gt;alx_str_sql_text : TStrings;&lt;br /&gt;alx_boo_senha_ok : Boolean;&lt;br /&gt;alx_str_user_apelido : String;&lt;br /&gt;alx_str_user_senha : String;&lt;br /&gt;alx_int_na_id : Integer;&lt;br /&gt;begin&lt;br /&gt;try&lt;br /&gt;alx_str_sql_text:= TStringList.Create();&lt;br /&gt;alx_str_sql_text.Add('SELECT USER_APELIDO , USER_SENHA , USER_NA_ID FROM USERS ORDER BY USER_APELIDO ;');&lt;br /&gt;self.ADOQuery_SGC_Login.Active:= False;&lt;br /&gt;self.ADOQuery_SGC_Login.SQL.Clear();&lt;br /&gt;self.ADOQuery_SGC_Login.SQL:= alx_str_sql_text;&lt;br /&gt;self.ADOQuery_SGC_Login.Active:= True;&lt;br /&gt;//------------&lt;br /&gt;while not(self.ADOQuery_SGC_Login.Eof) do begin&lt;br /&gt;alx_str_user_apelido:= self.ADOQuery_SGC_Login.Fields[0].AsString;&lt;br /&gt;alx_str_user_senha := self.ADOQuery_SGC_Login.Fields[1].AsString;&lt;br /&gt;alx_int_na_id := self.ADOQuery_SGC_Login.Fields[2].AsInteger;&lt;br /&gt;if ((alx_str_user_apelido = alx_str_user_apelido_digitado) and (alx_str_user_senha = alx_str_senha_digitada) ) then begin&lt;br /&gt;self.alx_voi_Registrar_Entrada_Usuario(alx_str_user_apelido , alx_int_na_id );&lt;br /&gt;alx_boo_senha_ok:= true;&lt;br /&gt;break;&lt;br /&gt;end&lt;br /&gt;else begin&lt;br /&gt;alx_boo_senha_ok:= false;&lt;br /&gt;end;&lt;br /&gt;self.ADOQuery_SGC_Login.Next();&lt;br /&gt;end;&lt;br /&gt;//------------&lt;br /&gt;except&lt;br /&gt;on E:Exception do begin&lt;br /&gt;ShowMessage('Ôpa, ocorreu um erro ao verificar a senha de um usuário! Veja: ' + E.Message);&lt;br /&gt;end;&lt;br /&gt;end;&lt;br /&gt;result:= alx_boo_senha_ok;&lt;br /&gt;end;&lt;br /&gt;//============================================================================== procedure Talx_frm_painel_central.alx_voi_Preparar_Form_Caso_Usuario_E_Senha_Ok();&lt;br /&gt;begin&lt;br /&gt;self.alx_int_componentes_iniciais:= Application.ComponentCount;&lt;br /&gt;self.Edit1.Color := clAqua;&lt;br /&gt;self.Edit1.ReadOnly := True;&lt;br /&gt;self.Edit2.Color := clAqua;&lt;br /&gt;self.Edit2.ReadOnly := True;&lt;br /&gt;self.Edit2.Text := 'edit2'; //... modifica o valor da senha ...&lt;br /&gt;self.BitBtn15.Caption := 'saída lógica';&lt;br /&gt;//-------------------&lt;br /&gt;self.alx_voi_Habilitar_Botoes(True);&lt;br /&gt;self.alx_voi_Habilitar_Menus(True);&lt;br /&gt;self.alx_voi_Registrar_Status_Bar_Usuario();&lt;br /&gt;end;&lt;br /&gt;//============================================================================== procedure Talx_frm_painel_central.alx_voi_Preparar_Form_Caso_Usuario_Ok_Senha_Errada();&lt;br /&gt;begin&lt;br /&gt;self.Edit1.Color:= clGray;&lt;br /&gt;self.Edit2.Color:= clYellow;&lt;br /&gt;self.Edit2.SetFocus();&lt;br /&gt;ShowMessage('ôpa, a senha do usuário [' + self.Edit1.Text + '] NÃO confere!' );&lt;br /&gt;//-------------------&lt;br /&gt;self.alx_voi_Habilitar_Botoes(False);&lt;br /&gt;self.alx_voi_Habilitar_Menus(False);&lt;br /&gt;end;&lt;br /&gt;//============================================================================== procedure Talx_frm_painel_central.alx_voi_Preparar_Form_Caso_Usuario_Nao_Existe();&lt;br /&gt;begin&lt;br /&gt;self.Edit1.Color:= clRed; self.Edit1.SetFocus();&lt;br /&gt;showmessage('ôpa, o usuário [' + self.Edit1.Text + '] NÃO existe!');&lt;br /&gt;//-------------------&lt;br /&gt;self.alx_voi_Habilitar_Botoes(False);&lt;br /&gt;self.alx_voi_Habilitar_Menus(False);&lt;/div&gt;&lt;br /&gt;&lt;div&gt;end;&lt;br /&gt;//==============================================================================&lt;/div&gt;&lt;br /&gt;&lt;div&gt;procedure Talx_frm_painel_central.alx_voi_Preparar_Form_Caso_Entrada_Logica();&lt;br /&gt;begin&lt;br /&gt;if (self.BitBtn15.Caption = 'entrada lógica') then begin&lt;br /&gt;if(self.alx_boo_Usuario_Existe(self.Edit1.Text)) then begin&lt;br /&gt;if(self.alx_boo_Senha_Ok(self.Edit1.Text , self.Edit2.Text)) then begin&lt;br /&gt;self.alx_voi_Preparar_Form_Caso_Usuario_E_Senha_Ok();&lt;br /&gt;end&lt;br /&gt;else begin&lt;br /&gt;self.alx_voi_Preparar_Form_Caso_Usuario_Ok_Senha_Errada();&lt;br /&gt;end;&lt;br /&gt;end&lt;br /&gt;else begin&lt;br /&gt;self.alx_voi_Preparar_Form_Caso_Usuario_Nao_Existe();&lt;br /&gt;end;&lt;br /&gt;end&lt;br /&gt;else if(self.BitBtn15.Caption = 'saída lógica') then begin&lt;br /&gt;self.alx_voi_Preparar_Form_Caso_Saida_Logica();&lt;br /&gt;end;&lt;br /&gt;end;&lt;br /&gt;//============================================================================== procedure Talx_frm_painel_central.alx_voi_Preparar_Form_Caso_Saida_Logica();&lt;br /&gt;begin&lt;br /&gt;self.Edit1.Text:= 'digite o nome';&lt;br /&gt;self.Edit1.ReadOnly:= False;&lt;br /&gt;self.Edit1.Color:= clWhite;&lt;br /&gt;self.Edit2.Text:= 'edit2';&lt;br /&gt;self.Edit2.ReadOnly:= False;&lt;br /&gt;self.Edit2.Color:= clWhite;&lt;br /&gt;self.BitBtn15.Caption:= 'entrada lógica';&lt;br /&gt;//-------------------&lt;br /&gt;self.alx_voi_Destruir_Todos_Os_Forms_Criados();&lt;br /&gt;self.alx_voi_Habilitar_Botoes(False);&lt;br /&gt;self.alx_voi_Habilitar_Menus(False);&lt;br /&gt;end;&lt;br /&gt;//============================================================================== procedure Talx_frm_painel_central.alx_voi_Habilitar_Botoes(alx_boo_liberar: Boolean);&lt;br /&gt;begin&lt;br /&gt;self.BitBtn1.Enabled := True;&lt;br /&gt;self.BitBtn2.Enabled := alx_boo_liberar;&lt;br /&gt;self.BitBtn3.Enabled := alx_boo_liberar;&lt;br /&gt;self.BitBtn4.Enabled := alx_boo_liberar;&lt;br /&gt;self.BitBtn5.Enabled := alx_boo_liberar;&lt;br /&gt;self.BitBtn6.Enabled := alx_boo_liberar;&lt;br /&gt;self.BitBtn7.Enabled := alx_boo_liberar;&lt;br /&gt;self.BitBtn8.Enabled := alx_boo_liberar;&lt;br /&gt;self.BitBtn9.Enabled := alx_boo_liberar;&lt;br /&gt;self.BitBtn10.Enabled:= alx_boo_liberar;&lt;br /&gt;self.BitBtn11.Enabled:= alx_boo_liberar;&lt;br /&gt;self.BitBtn12.Enabled:= alx_boo_liberar;&lt;br /&gt;self.BitBtn13.Enabled:= alx_boo_liberar;&lt;br /&gt;self.BitBtn14.Enabled:= alx_boo_liberar;&lt;br /&gt;self.BitBtn15.Enabled:= True;&lt;br /&gt;end;&lt;br /&gt;//============================================================================== procedure Talx_frm_painel_central.alx_voi_Habilitar_Menus(alx_boo_liberar: Boolean);&lt;br /&gt;begin&lt;br /&gt;self.MainMenu1.Items[0].Items[0].Enabled:= True;&lt;br /&gt;self.MainMenu1.Items[0].Items[1].Enabled:= alx_boo_liberar;&lt;br /&gt;self.MainMenu1.Items[0].Items[2].Enabled:= alx_boo_liberar;&lt;br /&gt;//------------&lt;br /&gt;self.MainMenu1.Items[1].Items[0].Enabled:= alx_boo_liberar;&lt;br /&gt;//------------&lt;br /&gt;self.MainMenu1.Items[2].Items[0].Enabled:= True;&lt;br /&gt;self.MainMenu1.Items[2].Items[1].Enabled:= True;&lt;br /&gt;self.MainMenu1.Items[2].Items[2].Enabled:= True;&lt;br /&gt;//------------&lt;br /&gt;self.MainMenu1.Items[3].Items[0].Enabled:= alx_boo_liberar;&lt;br /&gt;end;&lt;br /&gt;//============================================================================== &lt;/div&gt;&lt;br /&gt;&lt;div&gt;//============================================================================== procedure Talx_frm_painel_central.BitBtn1Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;self.Close();&lt;br /&gt;end;&lt;br /&gt;//==================================================================== procedure Talx_frm_painel_central.FormCreate(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;self.alx_voi_Habilitar_Botoes(False);&lt;br /&gt;self.alx_voi_Habilitar_Menus(False);&lt;br /&gt;end;&lt;br /&gt;//================================================================== procedure Talx_frm_painel_central.Sair1Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;self.Close();&lt;br /&gt;end;&lt;br /&gt;//================================================================== procedure Talx_frm_painel_central.BitBtn15Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;self.alx_voi_Preparar_Form_Caso_Entrada_Logica();&lt;br /&gt;end;&lt;br /&gt;//================================================================== procedure Talx_frm_painel_central.BitBtn2Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;alx_frm_lancamentos_receitas: Talx_frm_sgc_lancamentos_receitas;&lt;br /&gt;begin&lt;br /&gt;alx_frm_lancamentos_receitas:= Talx_frm_sgc_lancamentos_receitas.alx_voi_Create(Application);&lt;br /&gt;end;&lt;br /&gt;//================================================================== procedure Talx_frm_painel_central.BitBtn11Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;alx_int_count: Integer;&lt;br /&gt;begin &lt;/div&gt;&lt;br /&gt;&lt;div&gt;alx_int_count:= Application.ComponentCount;&lt;br /&gt;showmessage('Contagem de formulários: [' + inttostr(alx_int_count) + ']');&lt;br /&gt;end;&lt;br /&gt;//================================================================== procedure Talx_frm_painel_central.BitBtn6Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;self.alx_voi_Destruir_Todos_Os_Forms_Criados();&lt;br /&gt;end;&lt;br /&gt;//================================================================== end. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1308388809942346558-5129394627612681806?l=alexandremanoeldossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandremanoeldossantos.blogspot.com/feeds/5129394627612681806/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1308388809942346558&amp;postID=5129394627612681806' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/5129394627612681806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/5129394627612681806'/><link rel='alternate' type='text/html' href='http://alexandremanoeldossantos.blogspot.com/2007/06/rotinas-em-delphi-para-um-painel.html' title='Rotinas em DELPHI para um Painel Central Completo'/><author><name>Engº Alexandre Manoel dos Santos, M.Sc.</name><uri>http://www.blogger.com/profile/06205352072784818925</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_Kl7Ajw6APsk/TQTBsBuMrOI/AAAAAAAAANI/i7NQBA3t4sU/S220/Alexandre_Manoel_Home_Foto_02.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_Kl7Ajw6APsk/Rmi58SWe8eI/AAAAAAAAAIc/KmdYIq3ZasA/s72-c/imagem_sgc_painel_central.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1308388809942346558.post-3340198884448107139</id><published>2007-06-01T07:44:00.000-07:00</published><updated>2007-06-01T07:52:18.322-07:00</updated><title type='text'>Rotina em DELPHI para Popular Grid de Atores no Sistema SVL</title><content type='html'>unit Unit_alx_atores;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;  Dialogs, StdCtrls, Buttons, Grids, DBGrids, ComCtrls, jpeg, ExtCtrls, DB,&lt;br /&gt;  ADODB, Unit_alx_DataModule;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  Tfrm_alx_atores = class(TForm)&lt;br /&gt;    Panel1: TPanel;&lt;br /&gt;    Image1: TImage;&lt;br /&gt;    Panel2: TPanel;&lt;br /&gt;    StatusBar1: TStatusBar;&lt;br /&gt;    DBGrid1: TDBGrid;&lt;br /&gt;    Edit1: TEdit;&lt;br /&gt;    Edit2: TEdit;&lt;br /&gt;    Panel3: TPanel;&lt;br /&gt;    BitBtn1: TBitBtn;&lt;br /&gt;    BitBtn2: TBitBtn;&lt;br /&gt;    BitBtn3: TBitBtn;&lt;br /&gt;    BitBtn4: TBitBtn;&lt;br /&gt;    BitBtn5: TBitBtn;&lt;br /&gt;    ID: TLabel;&lt;br /&gt;    Nome: TLabel;&lt;br /&gt;    ADOQuery1: TADOQuery;&lt;br /&gt;    DataSource1: TDataSource;&lt;br /&gt;    BitBtn6: TBitBtn;&lt;br /&gt;    procedure FormClose(Sender: TObject; var Action: TCloseAction);&lt;br /&gt;    procedure DBGrid1CellClick(Column: TColumn);&lt;br /&gt;    procedure DBGrid1KeyUp(Sender: TObject; var Key: Word;&lt;br /&gt;      Shift: TShiftState);&lt;br /&gt;    procedure BitBtn6Click(Sender: TObject);&lt;br /&gt;  private&lt;br /&gt;    { Private declarations }&lt;br /&gt;    procedure alx_voi_Popular_Grid_Atores();&lt;br /&gt;    procedure alx_voi_Atualizar_Cartao_Atores();&lt;br /&gt;  public&lt;br /&gt;    { Public declarations }&lt;br /&gt;    constructor alx_voi_Create(alx_obj_owner: TComponent);&lt;br /&gt;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;//==============================================================================&lt;br /&gt;constructor Tfrm_alx_atores.alx_voi_Create(alx_obj_owner: TComponent);&lt;br /&gt;begin&lt;br /&gt;  inherited Create(alx_obj_owner);&lt;br /&gt;  self.alx_voi_Popular_Grid_Atores();     //... POPULAR O GRID DE ATORES ...&lt;br /&gt;  self.alx_voi_Atualizar_Cartao_Atores(); //... atualizar o cartão de atores...&lt;br /&gt;  self.Show();&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Tfrm_alx_atores.alx_voi_Popular_Grid_Atores();&lt;br /&gt;var&lt;br /&gt;  alx_str_sql_texto: TStrings;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;     alx_str_sql_texto:= TStringList.Create();&lt;br /&gt;     alx_str_sql_texto.Add('SELECT * FROM ATORES ORDER BY ATOR_NOME ;');&lt;br /&gt;     self.ADOQuery1.Active:= False;&lt;br /&gt;     self.ADOQuery1.SQL.Clear();&lt;br /&gt;     self.ADOQuery1.SQL:= alx_str_sql_texto;&lt;br /&gt;     self.ADOQuery1.Active:= True;&lt;br /&gt;  except&lt;br /&gt;    on E: Exception do begin&lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao popular o grid de atores! VEja: ' + E.Message );&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Tfrm_alx_atores.alx_voi_Atualizar_Cartao_Atores();&lt;br /&gt;begin&lt;br /&gt;   try&lt;br /&gt;     self.Edit1.Text:= self.ADOQuery1.Fields[0].AsString;&lt;br /&gt;     self.Edit2.Text:= self.ADOQuery1.Fields[1].AsString;&lt;br /&gt;   except&lt;br /&gt;    on E: Exception do begin&lt;br /&gt;      showmessage('Ôpa, ocorreu um erro ao atualizar o cartão de atores! VEja: ' + E.Message );&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure Tfrm_alx_atores.FormClose(Sender: TObject;&lt;br /&gt;  var Action: TCloseAction);&lt;br /&gt;begin&lt;br /&gt;  SELF:= NIL;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure Tfrm_alx_atores.DBGrid1CellClick(Column: TColumn);&lt;br /&gt;begin&lt;br /&gt;  self.alx_voi_Atualizar_Cartao_Atores();&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure Tfrm_alx_atores.DBGrid1KeyUp(Sender: TObject; var Key: Word;&lt;br /&gt;  Shift: TShiftState);&lt;br /&gt;begin&lt;br /&gt;  self.alx_voi_Atualizar_Cartao_Atores();&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure Tfrm_alx_atores.BitBtn6Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;  self.ADOQuery1.Next();&lt;br /&gt;  self.alx_voi_Atualizar_Cartao_Atores();&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1308388809942346558-3340198884448107139?l=alexandremanoeldossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandremanoeldossantos.blogspot.com/feeds/3340198884448107139/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1308388809942346558&amp;postID=3340198884448107139' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/3340198884448107139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/3340198884448107139'/><link rel='alternate' type='text/html' href='http://alexandremanoeldossantos.blogspot.com/2007/06/rotina-em-delphi-para-popular-grid-de.html' title='Rotina em DELPHI para Popular Grid de Atores no Sistema SVL'/><author><name>Engº Alexandre Manoel dos Santos, M.Sc.</name><uri>http://www.blogger.com/profile/06205352072784818925</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_Kl7Ajw6APsk/TQTBsBuMrOI/AAAAAAAAANI/i7NQBA3t4sU/S220/Alexandre_Manoel_Home_Foto_02.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1308388809942346558.post-3258277207476652230</id><published>2007-05-27T00:05:00.000-07:00</published><updated>2007-06-01T07:43:46.490-07:00</updated><title type='text'>Sistema Impactômetro desenvolvido em Java:</title><content type='html'>&lt;a href="http://bp0.blogger.com/_Kl7Ajw6APsk/RmAwi853m_I/AAAAAAAAAII/E-NuceSVGfo/s1600-h/Slide24.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5071106557441711090" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_Kl7Ajw6APsk/RmAwi853m_I/AAAAAAAAAII/E-NuceSVGfo/s320/Slide24.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://picasaweb.google.com.br/Alexandre.Manoel.dos.Santos/ImagensDeAlexandreManoel/photo#5069137619879172962"&gt;&lt;/a&gt;&lt;br /&gt;Neste sistema foi desenvolvido em Java um componente específico para renderizar todo o grafismo utilizado para descrever a variação da qualidade da água de um dado recurso natural.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_Kl7Ajw6APsk/Rlky1s53m9I/AAAAAAAAAHY/uhN8fgQMGco/s1600-h/Slide28.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5069138753750539218" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_Kl7Ajw6APsk/Rlky1s53m9I/AAAAAAAAAHY/uhN8fgQMGco/s320/Slide28.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_Kl7Ajw6APsk/Rlktr853mcI/AAAAAAAAAC8/vLOlHQ2kOEM/s1600-h/Slide27.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_" style="CLEAR: both; FLOAT: left; MARGIN: 0px 10px 10px 0px" alt="" src="http://bp1.blogger.com/_Kl7Ajw6APsk/Rlktr853mcI/AAAAAAAAAC8/vLOlHQ2kOEM/s320/Slide27.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="CLEAR: both; TEXT-ALIGN: left"&gt;&lt;a href="http://picasa.google.com/blogger/" target="ext"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1308388809942346558-3258277207476652230?l=alexandremanoeldossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandremanoeldossantos.blogspot.com/feeds/3258277207476652230/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1308388809942346558&amp;postID=3258277207476652230' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/3258277207476652230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/3258277207476652230'/><link rel='alternate' type='text/html' href='http://alexandremanoeldossantos.blogspot.com/2007/05/blog-post.html' title='Sistema Impactômetro desenvolvido em Java:'/><author><name>Engº Alexandre Manoel dos Santos, M.Sc.</name><uri>http://www.blogger.com/profile/06205352072784818925</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_Kl7Ajw6APsk/TQTBsBuMrOI/AAAAAAAAANI/i7NQBA3t4sU/S220/Alexandre_Manoel_Home_Foto_02.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_Kl7Ajw6APsk/RmAwi853m_I/AAAAAAAAAII/E-NuceSVGfo/s72-c/Slide24.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1308388809942346558.post-6665535149764345703</id><published>2007-05-26T19:01:00.000-07:00</published><updated>2007-05-27T00:10:03.482-07:00</updated><title type='text'>Rotina em DELPHI para Validar CPF e CNPJ</title><content type='html'>&lt;a href="http://bp3.blogger.com/_Kl7Ajw6APsk/Rljrgs53mbI/AAAAAAAAAC0/zIpZO_OpXF0/s1600-h/imagem_interface_para_cpf.bmp"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_Kl7Ajw6APsk/Rljrgs53mbI/AAAAAAAAAC0/zIpZO_OpXF0/s320/imagem_interface_para_cpf.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5069060327647713714" /&gt;&lt;/a&gt;&lt;br /&gt;Esta "unit" tem a finalidade de testar o valor de um CPF digitado por um usuário&lt;br /&gt;em uma interface adequada, conforme a figura ao lado.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;unit Unit_CPF_Painel_Central;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses  &lt;br /&gt;   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,     &lt;br /&gt;   Dialogs, ExtCtrls, StdCtrls, Buttons, jpeg;&lt;br /&gt;type  &lt;br /&gt;   TFrm_CPF_Painel_Central = class(TForm)    &lt;br /&gt;   GroupBox1: TGroupBox;    &lt;br /&gt;   Edit1: TEdit;    &lt;br /&gt;   Label1: TLabel;    &lt;br /&gt;   BitBtn1: TBitBtn;    &lt;br /&gt;   BitBtn2: TBitBtn;    &lt;br /&gt;   Panel1: TPanel;    &lt;br /&gt;   GroupBox2: TGroupBox;    &lt;br /&gt;   Edit2: TEdit;    &lt;br /&gt;   BitBtn3: TBitBtn;    &lt;br /&gt;   BitBtn4: TBitBtn;    &lt;br /&gt;   GroupBox3: TGroupBox;    &lt;br /&gt;   Edit3: TEdit;    &lt;br /&gt;   Label2: TLabel;    &lt;br /&gt;   Label3: TLabel;    &lt;br /&gt;   BitBtn5: TBitBtn;    &lt;br /&gt;   Button1: TButton;    &lt;br /&gt;   Memo1: TMemo;    &lt;br /&gt;   Panel2: TPanel;    &lt;br /&gt;   BitBtn6: TBitBtn;    &lt;br /&gt;   Image1: TImage; &lt;br /&gt;   //===============   &lt;br /&gt;   procedure BitBtn6Click(Sender: TObject);    &lt;br /&gt;   procedure BitBtn1Click(Sender: TObject);    &lt;br /&gt;   procedure BitBtn2Click(Sender: TObject);&lt;br /&gt;   //===============  &lt;br /&gt;   private    &lt;br /&gt;      { Private declarations }    &lt;br /&gt;      function alx_boo_CPF_Validado(alx_str_cpf_digitado: String)  : Boolean;&lt;br /&gt;      function alx_boo_CNPJ_Validado(alx_str_cnpj_digitado: String): Boolean;&lt;br /&gt;   //===============&lt;br /&gt;   public    &lt;br /&gt;      { Public declarations }  &lt;br /&gt;   end;&lt;br /&gt;&lt;br /&gt;var  &lt;br /&gt;   Frm_CPF_Painel_Central: TFrm_CPF_Painel_Central;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;//==============================================================================&lt;br /&gt;function TFrm_CPF_Painel_Central.alx_boo_CPF_Validado(alx_str_cpf_digitado: String): Boolean;&lt;br /&gt;var &lt;br /&gt;  alx_int_position     : Array [1..11] of Integer; &lt;br /&gt;  alx_int_controle_d1  : Integer; alx_int_controle_d2  : Integer;     &lt;br /&gt;  alx_str_controle_1   : String; alx_str_controle_2    : String;   &lt;br /&gt;  alx_boo_apoio        : Boolean; alx_int_i            : Integer;  &lt;br /&gt;  alx_int_j            : Integer;&lt;br /&gt;begin  &lt;br /&gt;  try    &lt;br /&gt;    alx_int_controle_d1:= 0;    &lt;br /&gt;    alx_int_controle_d2:= 0;    &lt;br /&gt;    if (System.Length(alx_str_cpf_digitado) = 11) then begin        &lt;br /&gt;      for alx_int_i:= 1 to 9 do begin            &lt;br /&gt;        alx_int_position[alx_int_i]:= strtoint(alx_str_cpf_digitado [alx_int_i]);            &lt;br /&gt;        alx_int_controle_d1:=  alx_int_controle_d1 + alx_int_position[alx_int_i]*(11 - alx_int_i)        &lt;br /&gt;      end;        &lt;br /&gt;      alx_int_position[10]:= strtoint(alx_str_cpf_digitado[10]);         &lt;br /&gt;      alx_int_position[11]:= strtoint(alx_str_cpf_digitado[11]);        &lt;br /&gt;      //------------------        &lt;br /&gt;      alx_int_controle_d1:= 11 - (alx_int_controle_d1 mod 11);        &lt;br /&gt;      if(alx_int_controle_d1 &gt;= 10) then begin            &lt;br /&gt;        alx_int_controle_d1:= 0;        &lt;br /&gt;      end;        &lt;br /&gt;      for alx_int_j:= 1 to 9 do begin            &lt;br /&gt;        alx_int_controle_d2:= alx_int_controle_d2 +  alx_int_position[alx_int_j]*(12 - alx_int_j);        &lt;br /&gt;      end;        &lt;br /&gt;      alx_int_controle_d2:= alx_int_controle_d2 + alx_int_controle_d1*(2); &lt;br /&gt;      alx_int_controle_d2:= 11 - (alx_int_controle_d2 mod 11);        &lt;br /&gt;      if(alx_int_controle_d2 &gt;= 10) then begin            &lt;br /&gt;        alx_int_controle_d2:= 0;        &lt;br /&gt;      end;        &lt;br /&gt;      //-------------------        &lt;br /&gt;      alx_str_controle_1:= inttostr(alx_int_controle_d1) + inttostr(alx_int_controle_d2);        &lt;br /&gt;      alx_str_controle_2:= alx_str_cpf_digitado[10] + alx_str_cpf_digitado[11];        &lt;br /&gt;      //-------------------        &lt;br /&gt;      if(alx_str_controle_1 = alx_str_controle_2) then begin    &lt;br /&gt;        alx_boo_apoio:= true;        &lt;br /&gt;      end        &lt;br /&gt;      else begin          &lt;br /&gt;        alx_boo_apoio:= false;        &lt;br /&gt;      end;        &lt;br /&gt;      //--------------------    &lt;br /&gt;    end    &lt;br /&gt;    else begin       &lt;br /&gt;      self.Edit1.SetFocus();       &lt;br /&gt;      showmessage('Você apresentou um CPF com [' + inttostr(System.Length(alx_str_cpf_digitado)) + '] digitos. Digite o CPF com 11 números! '); &lt;br /&gt;      alx_boo_apoio:= false;    &lt;br /&gt;    end;  &lt;br /&gt;  except     &lt;br /&gt;    on E: Exception do begin       &lt;br /&gt;      self.Edit1.SetFocus();       &lt;br /&gt;      showmessage('Digite o CPF com 11 dígitos numéricos! Veja: ' + E.Message);       &lt;br /&gt;      alx_boo_apoio:= false;     &lt;br /&gt;    end;  &lt;br /&gt;  end;  &lt;br /&gt;  result:= alx_boo_apoio;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;function TFrm_CPF_Painel_Central.alx_boo_CNPJ_Validado(alx_str_cnpj_digitado: String): Boolean;&lt;br /&gt;var&lt;br /&gt; alx_int_position     : Array [1..14] of Integer;&lt;br /&gt; alx_int_controle_d1  : Integer;&lt;br /&gt; alx_int_controle_d2  : Integer;&lt;br /&gt; alx_str_controle_1   : String;&lt;br /&gt; alx_str_controle_2   : String;&lt;br /&gt; alx_boo_apoio        : Boolean;&lt;br /&gt; alx_int_i            : Integer;&lt;br /&gt; alx_int_j            : Integer;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    alx_int_controle_d1:= 0;&lt;br /&gt;    alx_int_controle_d2:= 0;&lt;br /&gt;    if (System.Length(alx_str_cnpj_digitado) = 14) then begin&lt;br /&gt;        for alx_int_i:= 1 to 12 do begin&lt;br /&gt;            alx_int_position[alx_int_i]:= strtoint(alx_str_cnpj_digitado[alx_int_i]);&lt;br /&gt;        end;&lt;br /&gt;        alx_int_position[13]:= strtoint(alx_str_cnpj_digitado[13]);&lt;br /&gt;        alx_int_position[14]:= strtoint(alx_str_cnpj_digitado[14]);&lt;br /&gt;        //------------------&lt;br /&gt;        alx_int_controle_d1:=  alx_int_position[1]*(5) + alx_int_position[2]*(4) + alx_int_position[3]*(3)   + alx_int_position[4]*(2);&lt;br /&gt;        alx_int_controle_d1:=  alx_int_controle_d1     + alx_int_position[5]*(9) + alx_int_position[6]*(8)   + alx_int_position[7]*(7);&lt;br /&gt;        alx_int_controle_d1:=  alx_int_controle_d1     + alx_int_position[8]*(6) + alx_int_position[9]*(5)   + alx_int_position[10]*(4);&lt;br /&gt;        alx_int_controle_d1:=  alx_int_controle_d1     + alx_int_position[11]*(3) + alx_int_position[12]*(2);&lt;br /&gt;        //------------------&lt;br /&gt;        alx_int_controle_d1:= 11 - (alx_int_controle_d1 mod 11);&lt;br /&gt;        if(alx_int_controle_d1 &gt;= 10) then begin&lt;br /&gt;            alx_int_controle_d1:= 0;&lt;br /&gt;        end;&lt;br /&gt;        //------------------&lt;br /&gt;        alx_int_controle_d2:=  alx_int_position[1]*(6) + alx_int_position[2]*(5) + alx_int_position[3]*(4)   + alx_int_position[4]*(3);&lt;br /&gt;        alx_int_controle_d2:=  alx_int_controle_d2     + alx_int_position[5]*(2) + alx_int_position[6]*(9)   + alx_int_position[7]*(8);&lt;br /&gt;        alx_int_controle_d2:=  alx_int_controle_d2     + alx_int_position[8]*(7) + alx_int_position[9]*(6)   + alx_int_position[10]*(5);&lt;br /&gt;        alx_int_controle_d2:=  alx_int_controle_d2     + alx_int_position[11]*(4) + alx_int_position[12]*(3) + alx_int_controle_d1*(2);&lt;br /&gt;        //------------------&lt;br /&gt;        alx_int_controle_d2:= 11 - (alx_int_controle_d2 mod 11);&lt;br /&gt;        if(alx_int_controle_d2 &gt;= 10) then begin&lt;br /&gt;            alx_int_controle_d2:= 0;&lt;br /&gt;        end;&lt;br /&gt;        //-------------------&lt;br /&gt;        alx_str_controle_1:= inttostr(alx_int_controle_d1) + inttostr(alx_int_controle_d2);&lt;br /&gt;        alx_str_controle_2:= alx_str_cnpj_digitado[13] + alx_str_cnpj_digitado[14];&lt;br /&gt;        //-------------------&lt;br /&gt;        if(alx_str_controle_1 = alx_str_controle_2) then begin&lt;br /&gt;          alx_boo_apoio:= true;&lt;br /&gt;        end&lt;br /&gt;        else begin&lt;br /&gt;          alx_boo_apoio:= false;&lt;br /&gt;        end;&lt;br /&gt;        //--------------------&lt;br /&gt;    end&lt;br /&gt;    else begin&lt;br /&gt;       self.Edit2.SetFocus();&lt;br /&gt;       showmessage('Você apresentou um CNPJ com [' + inttostr(System.Length(alx_str_cnpj_digitado)) + '] digitos. Digite o CNPJ com 14 números! ');&lt;br /&gt;       alx_boo_apoio:= false;&lt;br /&gt;    end;&lt;br /&gt;  except&lt;br /&gt;     on E: Exception do begin&lt;br /&gt;       self.Edit2.SetFocus();&lt;br /&gt;       showmessage('Digite o CNPJ com 14 dígitos numéricos! Veja: ' + E.Message);&lt;br /&gt;       alx_boo_apoio:= false;&lt;br /&gt;     end;&lt;br /&gt;  end;&lt;br /&gt;  result:= alx_boo_apoio;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure TFrm_CPF_Painel_Central.BitBtn6Click(Sender: TObject);&lt;br /&gt;begin  &lt;br /&gt;  self.Close();&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;//=== ... ao clicar neste botão a verificação do CPF será realizada...&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure TFrm_CPF_Painel_Central.BitBtn1Click(Sender: TObject);&lt;br /&gt;begin  &lt;br /&gt;  if(self.alx_boo_CPF_Validado(self.Edit1.Text)) then begin    &lt;br /&gt;    showmessage('O cpf [' + self.Edit1.Text + '] está correto!');  &lt;br /&gt;  end  &lt;br /&gt;  else begin     &lt;br /&gt;    showmessage('O cpf [' + self.Edit1.Text + '] NÃO ESTÁ correto!');  &lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure TFrm_CPF_Painel_Central.BitBtn2Click(Sender: TObject);&lt;br /&gt;var &lt;br /&gt;  alx_int_resto: Integer;&lt;br /&gt;begin   &lt;br /&gt;  alx_int_resto:= (4 mod 3);   &lt;br /&gt;  showmessage('o resto da divisão de 4 por 3 é: [' + inttostr(alx_int_resto) + ']');&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;//=== ... ao clicar neste botão a verificação de CNPJ será realizada...&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure TFrm_CPF_Painel_Central.BitBtn3Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;  if(self.alx_boo_CNPJ_Validado(self.Edit2.Text)) then begin&lt;br /&gt;     showmessage('O cnpj [' + self.Edit2.Text + '] está correto!');&lt;br /&gt;  end&lt;br /&gt;  else begin&lt;br /&gt;     showmessage('O cnpj [' + self.Edit2.Text + '] NÃO ESTÁ correto!');&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1308388809942346558-6665535149764345703?l=alexandremanoeldossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandremanoeldossantos.blogspot.com/feeds/6665535149764345703/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1308388809942346558&amp;postID=6665535149764345703' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/6665535149764345703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/6665535149764345703'/><link rel='alternate' type='text/html' href='http://alexandremanoeldossantos.blogspot.com/2007/05/rotina-em-delphi-para-validar-cpf.html' title='Rotina em DELPHI para Validar CPF e CNPJ'/><author><name>Engº Alexandre Manoel dos Santos, M.Sc.</name><uri>http://www.blogger.com/profile/06205352072784818925</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_Kl7Ajw6APsk/TQTBsBuMrOI/AAAAAAAAANI/i7NQBA3t4sU/S220/Alexandre_Manoel_Home_Foto_02.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_Kl7Ajw6APsk/Rljrgs53mbI/AAAAAAAAAC0/zIpZO_OpXF0/s72-c/imagem_interface_para_cpf.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1308388809942346558.post-5788063420988768118</id><published>2007-05-21T16:32:00.000-07:00</published><updated>2007-05-26T23:30:27.349-07:00</updated><title type='text'>Rotina em DELPHI para verificar a senha de um usuário</title><content type='html'>Caros alunos, segue abaixo uma técnica de acesso a um banco de dados.&lt;br /&gt;Não se esqueça de especificar um objeto ADOConnection no ""DataModule" de sua aplicação.&lt;br /&gt;&lt;br /&gt;Saiba que o objeto ADOQuery1 da "unit" abaixo está apontando para o objeto ADOConnection por meio de sua propriedade "Connection". &lt;br /&gt;&lt;br /&gt;unit UntVideo;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;  Dialogs, StdCtrls, ExtCtrls, DBCtrls, Mask, XPMan, &lt;strong&gt;UntDataModule&lt;/strong&gt;, DB,&lt;br /&gt;  ADODB;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TForm1 = class(TForm)&lt;br /&gt;    Panel1: TPanel;&lt;br /&gt;    Button1: TButton;&lt;br /&gt;    Button2: TButton;&lt;br /&gt;    XPManifest1: TXPManifest;&lt;br /&gt;    Edit1: TEdit;&lt;br /&gt;    Edit2: TEdit;&lt;br /&gt;    Label1: TLabel;&lt;br /&gt;    Label2: TLabel;&lt;br /&gt;    ADOQuery1: TADOQuery;&lt;br /&gt;    procedure Button1Click(Sender: TObject);&lt;br /&gt;    procedure Button2Click(Sender: TObject);&lt;br /&gt;  private&lt;br /&gt;    { Private declarations }&lt;br /&gt;    function alx_boo_Usuario_Existe(alx_str_user_apelido_digitado: String): Boolean;&lt;br /&gt;    function alx_boo_Senha_Ok(alx_str_user_apelido_digitado: String ; alx_str_senha_digitada: String): Boolean;&lt;br /&gt;  public&lt;br /&gt;    { Public declarations }&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  Form1: TForm1;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;//==============================================================================&lt;br /&gt;function TForm1.alx_boo_Usuario_Existe(alx_str_user_apelido_digitado: String): Boolean;&lt;br /&gt;var&lt;br /&gt;  alx_str_sql_text      : TStrings;&lt;br /&gt;  alx_boo_usuario_existe: Boolean;&lt;br /&gt;  alx_str_user_apelido  : String;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    alx_str_sql_text:= TStringList.Create();&lt;br /&gt;    alx_str_sql_text.Add('SELECT FUNC_APELIDO FROM FUNCIONARIOS ORDER BY FUNC_APELIDO ;');&lt;br /&gt;    self.ADOQuery1.Active:= False;&lt;br /&gt;    self.ADOQuery1.SQL.Clear();&lt;br /&gt;    self.ADOQuery1.SQL:= alx_str_sql_text;&lt;br /&gt;    self.ADOQuery1.Active:= True;&lt;br /&gt;    //------------&lt;br /&gt;    while not(self.ADOQuery1.Eof) do begin&lt;br /&gt;      alx_str_user_apelido:= self.ADOQuery1.Fields[0].AsString;&lt;br /&gt;      if (alx_str_user_apelido = alx_str_user_apelido_digitado ) then begin&lt;br /&gt;        alx_boo_usuario_existe:= true;&lt;br /&gt;        break;&lt;br /&gt;      end&lt;br /&gt;      else begin&lt;br /&gt;        alx_boo_usuario_existe:= false;&lt;br /&gt;      end;&lt;br /&gt;      self.ADOQuery1.Next();&lt;br /&gt;    end;&lt;br /&gt;    //------------&lt;br /&gt;  except&lt;br /&gt;    on E:Exception do begin&lt;br /&gt;      ShowMessage('Ôpa, ocorreu um erro ao verificar a existência de um usuário! Veja: ' + E.Message);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;    result:= alx_boo_usuario_existe;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;function TForm1.alx_boo_Senha_Ok(alx_str_user_apelido_digitado: String ; alx_str_senha_digitada: String): Boolean;&lt;br /&gt;var&lt;br /&gt;  alx_str_sql_text      : TStrings;&lt;br /&gt;  alx_boo_senha_ok      : Boolean;&lt;br /&gt;  alx_str_user_apelido  : String;&lt;br /&gt;  alx_str_user_senha    : String;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    alx_str_sql_text:= TStringList.Create();&lt;br /&gt;    alx_str_sql_text.Add('SELECT FUNC_APELIDO , FUNC_SENHA FROM FUNCIONARIOS ORDER BY FUNC_APELIDO ;');&lt;br /&gt;    self.ADOQuery1.Active:= False;&lt;br /&gt;    self.ADOQuery1.SQL.Clear();&lt;br /&gt;    self.ADOQuery1.SQL:= alx_str_sql_text;&lt;br /&gt;    self.ADOQuery1.Active:= True;&lt;br /&gt;    //------------&lt;br /&gt;    while not(self.ADOQuery1.Eof) do begin&lt;br /&gt;      alx_str_user_apelido:= self.ADOQuery1.Fields[0].AsString;&lt;br /&gt;      alx_str_user_senha  := self.ADOQuery1.Fields[1].AsString;&lt;br /&gt;      if ((alx_str_user_apelido = alx_str_user_apelido_digitado) and (alx_str_user_senha = alx_str_senha_digitada) ) then begin&lt;br /&gt;        alx_boo_senha_ok:= true;&lt;br /&gt;        break;&lt;br /&gt;      end&lt;br /&gt;      else begin&lt;br /&gt;        alx_boo_senha_ok:= false;&lt;br /&gt;      end;&lt;br /&gt;      self.ADOQuery1.Next();&lt;br /&gt;    end;&lt;br /&gt;    //------------&lt;br /&gt;  except&lt;br /&gt;    on E:Exception do begin&lt;br /&gt;      ShowMessage('Ôpa, ocorreu um erro ao verificar a senha de um usuário! Veja: ' + E.Message);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;    result:= alx_boo_senha_ok;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;  if(self.alx_boo_Usuario_Existe(self.Edit1.Text)) then begin&lt;br /&gt;     self.Edit1.Color:= clBlue;&lt;br /&gt;     showmessage('oi, o usuário existe!');&lt;br /&gt;  end&lt;br /&gt;  else begin&lt;br /&gt;     self.Edit1.Color:= clRed;&lt;br /&gt;     showmessage('oi, o usuário NÃO existe!');&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TForm1.Button2Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;   if(self.alx_boo_Senha_Ok(self.Edit1.Text , self.Edit2.Text)) then begin&lt;br /&gt;     self.Edit2.Color:= clGreen;&lt;br /&gt;     showmessage('oi, a senha do usuário [' + self.Edit1.Text + '] confere!');&lt;br /&gt;  end&lt;br /&gt;  else begin&lt;br /&gt;     self.Edit2.Color:= clRed;&lt;br /&gt;     ShowMessage('ôpa, a senha do usuário [' + self.Edit1.Text + '] NÃO confere!');&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1308388809942346558-5788063420988768118?l=alexandremanoeldossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandremanoeldossantos.blogspot.com/feeds/5788063420988768118/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1308388809942346558&amp;postID=5788063420988768118' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/5788063420988768118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/5788063420988768118'/><link rel='alternate' type='text/html' href='http://alexandremanoeldossantos.blogspot.com/2007/05/rotina-em-delphi-para-verificar-senha.html' title='Rotina em DELPHI para verificar a senha de um usuário'/><author><name>Engº Alexandre Manoel dos Santos, M.Sc.</name><uri>http://www.blogger.com/profile/06205352072784818925</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_Kl7Ajw6APsk/TQTBsBuMrOI/AAAAAAAAANI/i7NQBA3t4sU/S220/Alexandre_Manoel_Home_Foto_02.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1308388809942346558.post-3199388476985050161</id><published>2007-05-21T12:29:00.001-07:00</published><updated>2007-05-26T22:20:06.591-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='criação de objetos'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='instanciação de objetos'/><title type='text'>Rotina em DELPHI para instanciar um objeto</title><content type='html'>A "unit" abaixo possui uma procedure que instancia um objeto formulário a&lt;br /&gt;partir do método construtor próprio da classe que controla o referido formulário.&lt;br /&gt;&lt;br /&gt;unit Unit_ALX_Painel_Central;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;  Dialogs, StdCtrls, Buttons, Unit_ALX_Clientes;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TFrm_ALX_Painel_Central = class(TForm)&lt;br /&gt;    BitBtn1: TBitBtn;&lt;br /&gt;    BitBtn2: TBitBtn;&lt;br /&gt;    BitBtn3: TBitBtn;&lt;br /&gt;    procedure BitBtn1Click(Sender: TObject);&lt;br /&gt;  private&lt;br /&gt;    { Private declarations }&lt;br /&gt;  public&lt;br /&gt;    { Public declarations }&lt;br /&gt;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  Frm_ALX_Painel_Central: TFrm_ALX_Painel_Central;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure TFrm_ALX_Painel_Central.BitBtn1Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;   alx_frm_clientes: TFrm_ALX_Clientes;&lt;br /&gt;begin&lt;br /&gt;   alx_frm_clientes:= TFrm_ALX_Clientes.alx_voi_Create(Application);&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1308388809942346558-3199388476985050161?l=alexandremanoeldossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandremanoeldossantos.blogspot.com/feeds/3199388476985050161/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1308388809942346558&amp;postID=3199388476985050161' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/3199388476985050161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/3199388476985050161'/><link rel='alternate' type='text/html' href='http://alexandremanoeldossantos.blogspot.com/2007/05/rotina-em-delphi-para-instanciar-um.html' title='Rotina em DELPHI para instanciar um objeto'/><author><name>Engº Alexandre Manoel dos Santos, M.Sc.</name><uri>http://www.blogger.com/profile/06205352072784818925</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_Kl7Ajw6APsk/TQTBsBuMrOI/AAAAAAAAANI/i7NQBA3t4sU/S220/Alexandre_Manoel_Home_Foto_02.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1308388809942346558.post-4213274198453804569</id><published>2007-05-21T12:27:00.000-07:00</published><updated>2007-05-21T15:15:58.884-07:00</updated><title type='text'>Rotina em DELPHI para Método Construtor</title><content type='html'>unit Unit_ALX_Clientes;&lt;br /&gt;interface&lt;br /&gt;uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs;&lt;br /&gt;type  TFrm_ALX_Clientes = class(TForm)&lt;br /&gt;    procedure FormClose(Sender: TObject; var Action: TCloseAction);  &lt;br /&gt;    private    &lt;br /&gt;      { Private declarations }    &lt;br /&gt;      procedure alx_voi_Tratar_Valores_Estaticos();  &lt;br /&gt;    public    &lt;br /&gt;      { Public declarations }    &lt;br /&gt;      constructor alx_voi_Create(alx_obj_owner: TComponent);  &lt;br /&gt;end;&lt;br /&gt;var   &lt;br /&gt;    alx_int_conta_form: Integer;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;   {$R *.dfm}&lt;br /&gt;&lt;br /&gt;//==============================================================================&lt;br /&gt;constructor    TFrm_ALX_Clientes.alx_voi_Create(alx_obj_owner: TComponent);&lt;br /&gt;begin   &lt;br /&gt;  inherited Create(alx_obj_owner);   &lt;br /&gt;  self.alx_voi_Tratar_Valores_Estaticos();   &lt;br /&gt;  //... realiza as inicializações ...                                                &lt;br /&gt;self.Show);&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure TFrm_ALX_Clientes.alx_voi_Tratar_Valores_Estaticos();&lt;br /&gt;begin   &lt;br /&gt;  alx_int_conta_form := alx_int_conta_form + 1;   &lt;br /&gt;  self.Caption:= 'Sistema ALX: Listagem de Clientes [' + inttostr(alx_int_conta_form) + ']';&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure TFrm_ALX_Clientes.FormClose(Sender: TObject; var Action: TCloseAction);&lt;br /&gt;begin   &lt;br /&gt;  self:= nil;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1308388809942346558-4213274198453804569?l=alexandremanoeldossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandremanoeldossantos.blogspot.com/feeds/4213274198453804569/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1308388809942346558&amp;postID=4213274198453804569' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/4213274198453804569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/4213274198453804569'/><link rel='alternate' type='text/html' href='http://alexandremanoeldossantos.blogspot.com/2007/05/rotina-em-delphi-para-mtodo-construtor.html' title='Rotina em DELPHI para Método Construtor'/><author><name>Engº Alexandre Manoel dos Santos, M.Sc.</name><uri>http://www.blogger.com/profile/06205352072784818925</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_Kl7Ajw6APsk/TQTBsBuMrOI/AAAAAAAAANI/i7NQBA3t4sU/S220/Alexandre_Manoel_Home_Foto_02.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1308388809942346558.post-2804340632980697504</id><published>2007-05-15T16:10:00.000-07:00</published><updated>2007-05-15T16:12:00.519-07:00</updated><title type='text'>Este sou eu</title><content type='html'>&lt;a href="http://bp2.blogger.com/_Kl7Ajw6APsk/Rko-LE0uiXI/AAAAAAAAAAM/mBbLUVIcTGU/s1600-h/imagem_foto.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5064929090925922674" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp2.blogger.com/_Kl7Ajw6APsk/Rko-LE0uiXI/AAAAAAAAAAM/mBbLUVIcTGU/s320/imagem_foto.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1308388809942346558-2804340632980697504?l=alexandremanoeldossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandremanoeldossantos.blogspot.com/feeds/2804340632980697504/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1308388809942346558&amp;postID=2804340632980697504' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/2804340632980697504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/2804340632980697504'/><link rel='alternate' type='text/html' href='http://alexandremanoeldossantos.blogspot.com/2007/05/este-sou-eu.html' title='Este sou eu'/><author><name>Engº Alexandre Manoel dos Santos, M.Sc.</name><uri>http://www.blogger.com/profile/06205352072784818925</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_Kl7Ajw6APsk/TQTBsBuMrOI/AAAAAAAAANI/i7NQBA3t4sU/S220/Alexandre_Manoel_Home_Foto_02.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_Kl7Ajw6APsk/Rko-LE0uiXI/AAAAAAAAAAM/mBbLUVIcTGU/s72-c/imagem_foto.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1308388809942346558.post-2964858155854025802</id><published>2007-05-15T15:39:00.000-07:00</published><updated>2007-05-26T22:40:34.251-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Petrobras e governo brasileiro'/><title type='text'>Petrobras na Bolívia</title><content type='html'>Penso que as instalações da Petrobras na Bolívia devem valer entre 5 e 15 bilhões de dólares americanos.&lt;br /&gt;&lt;br /&gt;Por que será que a Petrobras e o governo Brasileiro fecharam o negócio com o governo Boliviano por aproximadamente 120 milhões com tanta pressa?&lt;br /&gt;&lt;br /&gt;Por que será que não levaram o para o fórum internacional as questões associadas com a exigibilidade das cláusulas do contrato?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1308388809942346558-2964858155854025802?l=alexandremanoeldossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandremanoeldossantos.blogspot.com/feeds/2964858155854025802/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1308388809942346558&amp;postID=2964858155854025802' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/2964858155854025802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/2964858155854025802'/><link rel='alternate' type='text/html' href='http://alexandremanoeldossantos.blogspot.com/2007/05/petrobras-na-bolvia.html' title='Petrobras na Bolívia'/><author><name>Engº Alexandre Manoel dos Santos, M.Sc.</name><uri>http://www.blogger.com/profile/06205352072784818925</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_Kl7Ajw6APsk/TQTBsBuMrOI/AAAAAAAAANI/i7NQBA3t4sU/S220/Alexandre_Manoel_Home_Foto_02.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1308388809942346558.post-995740743221328835</id><published>2007-05-14T16:00:00.000-07:00</published><updated>2007-05-15T16:06:14.068-07:00</updated><title type='text'>Rotina em DELPHI para verificação de Login</title><content type='html'>&lt;p&gt;interface&lt;/p&gt;&lt;p&gt;uses&lt;br /&gt;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;Dialogs, Mask, StdCtrls, Buttons, DB, ADODB;&lt;/p&gt;&lt;p&gt;type&lt;br /&gt;TForm1 = class(TForm)&lt;br /&gt;GroupBox1: TGroupBox;&lt;br /&gt;BitBtn1: TBitBtn;&lt;br /&gt;Edit1: TEdit;&lt;br /&gt;Label1: TLabel;&lt;br /&gt;Label2: TLabel;&lt;br /&gt;MaskEdit1: TMaskEdit;&lt;br /&gt;ADOConnection1: TADOConnection;&lt;br /&gt;ADOQuery1: TADOQuery;&lt;br /&gt;procedure BitBtn1Click(Sender: TObject);&lt;br /&gt;private&lt;br /&gt;{ Private declarations }&lt;br /&gt;//----------&lt;br /&gt;function alx_boo_Usuario_Existe(alx_str_user_apelido_digitado: String): Boolean;&lt;br /&gt;function alx_boo_Senha_Confere(alx_str_user_apelido_digitado: String; alx_str_user_senha_digitada: String): Boolean;&lt;br /&gt;//----------&lt;br /&gt;public&lt;br /&gt;{ Public declarations }&lt;br /&gt;end;&lt;/p&gt;&lt;p&gt;var&lt;br /&gt;Form1: TForm1;&lt;/p&gt;&lt;p&gt;implementation&lt;/p&gt;&lt;p&gt;{$R *.dfm}&lt;/p&gt;&lt;p&gt;//==============================================================================&lt;br /&gt;function TForm1.alx_boo_Usuario_Existe(alx_str_user_apelido_digitado: String): Boolean;&lt;br /&gt;var&lt;br /&gt;alx_str_sql_text : TStrings;&lt;br /&gt;alx_boo_usuario_existe: Boolean;&lt;br /&gt;alx_str_user_apelido: String;&lt;br /&gt;begin&lt;br /&gt;try&lt;br /&gt;alx_str_sql_text:= TStringList.Create();&lt;br /&gt;alx_str_sql_text.Add('SELECT FUNC_APELIDO FROM FUNCIONARIOS ORDER BY FUNC_APELIDO ;');&lt;br /&gt;self.ADOQuery1.Active:= False;&lt;br /&gt;self.ADOQuery1.SQL.Clear();&lt;br /&gt;self.ADOQuery1.SQL:= alx_str_sql_text;&lt;br /&gt;self.ADOQuery1.Active:= True;&lt;br /&gt;//------------&lt;br /&gt;while not(self.ADOQuery1.Eof) do begin&lt;br /&gt;alx_str_user_apelido:= self.ADOQuery1.Fields[0].AsString;&lt;br /&gt;if (alx_str_user_apelido = alx_str_user_apelido_digitado ) then begin&lt;br /&gt;alx_boo_usuario_existe:= true;&lt;br /&gt;break;&lt;br /&gt;end&lt;br /&gt;else begin&lt;br /&gt;alx_boo_usuario_existe:= false;&lt;br /&gt;end;&lt;br /&gt;self.ADOQuery1.Next();&lt;br /&gt;end;&lt;br /&gt;//------------&lt;br /&gt;except&lt;br /&gt;on E:Exception do begin&lt;br /&gt;ShowMessage('Ôpa, ocorreu um erro ao verificar a existência de um usuário! VEja: ' + E.Message);&lt;br /&gt;end;&lt;br /&gt;end;&lt;br /&gt;result:= alx_boo_usuario_existe;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;function TForm1.alx_boo_Senha_Confere(alx_str_user_apelido_digitado: String; alx_str_user_senha_digitada: String): Boolean;&lt;br /&gt;var&lt;br /&gt;alx_str_sql_text : TStrings;&lt;br /&gt;alx_boo_senha_confere : Boolean;&lt;br /&gt;alx_str_user_apelido : String;&lt;br /&gt;alx_str_user_senha : String;&lt;br /&gt;begin&lt;br /&gt;try&lt;br /&gt;alx_str_sql_text:= TStringList.Create();&lt;br /&gt;alx_str_sql_text.Add('SELECT FUNC_APELIDO, FUNC_SENHA FROM FUNCIONARIOS ORDER BY FUNC_APELIDO ;');&lt;br /&gt;self.ADOQuery1.Active:= False;&lt;br /&gt;self.ADOQuery1.SQL.Clear();&lt;br /&gt;self.ADOQuery1.SQL:= alx_str_sql_text;&lt;br /&gt;self.ADOQuery1.Active:= True;&lt;br /&gt;//------------&lt;br /&gt;while not(self.ADOQuery1.Eof) do begin&lt;br /&gt;alx_str_user_apelido:= self.ADOQuery1.Fields[0].AsString;&lt;br /&gt;alx_str_user_senha := self.ADOQuery1.Fields[1].AsString;&lt;br /&gt;if ((alx_str_user_apelido = alx_str_user_apelido_digitado) and (alx_str_user_senha = alx_str_user_senha_digitada)) then begin&lt;br /&gt;alx_boo_senha_confere:= true;&lt;br /&gt;break;&lt;br /&gt;end&lt;br /&gt;else begin&lt;br /&gt;alx_boo_senha_confere:= false;&lt;br /&gt;end;&lt;br /&gt;self.ADOQuery1.Next();&lt;br /&gt;end;&lt;br /&gt;//------------&lt;br /&gt;except&lt;br /&gt;on E:Exception do begin&lt;br /&gt;ShowMessage('Ôpa, ocorreu um erro ao verificar a senha de um usuário! VEja: ' + E.Message);&lt;br /&gt;end;&lt;br /&gt;end;&lt;br /&gt;result:= alx_boo_senha_confere;&lt;br /&gt;end;&lt;br /&gt;//==============================================================================&lt;br /&gt;procedure TForm1.BitBtn1Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;if(self.alx_boo_Usuario_Existe(self.Edit1.Text)) then begin&lt;br /&gt;self.Edit1.Color:= clAqua;&lt;br /&gt;if (self.alx_boo_Senha_Confere(self.Edit1.Text , self.MaskEdit1.Text)) then begin&lt;br /&gt;self.MaskEdit1.Color:= clAqua;&lt;br /&gt;ShowMessage('Usuário e Senha conferem!');&lt;br /&gt;end&lt;br /&gt;else begin&lt;br /&gt;self.MaskEdit1.Color:= clRed;&lt;br /&gt;ShowMessage('Senha do usuário não confere! Tente novamente');&lt;br /&gt;self.MaskEdit1.SetFocus;&lt;br /&gt;end;&lt;br /&gt;end&lt;br /&gt;else begin&lt;br /&gt;self.Edit1.Color:= clRed;&lt;br /&gt;ShowMessage('Esse usuário não existe!');&lt;br /&gt;self.Edit1.SetFocus;&lt;br /&gt;end;&lt;br /&gt;end;&lt;/p&gt;&lt;p&gt;end.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1308388809942346558-995740743221328835?l=alexandremanoeldossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandremanoeldossantos.blogspot.com/feeds/995740743221328835/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1308388809942346558&amp;postID=995740743221328835' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/995740743221328835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1308388809942346558/posts/default/995740743221328835'/><link rel='alternate' type='text/html' href='http://alexandremanoeldossantos.blogspot.com/2007/05/interface-uses-windows-messages.html' title='Rotina em DELPHI para verificação de Login'/><author><name>Engº Alexandre Manoel dos Santos, M.Sc.</name><uri>http://www.blogger.com/profile/06205352072784818925</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_Kl7Ajw6APsk/TQTBsBuMrOI/AAAAAAAAANI/i7NQBA3t4sU/S220/Alexandre_Manoel_Home_Foto_02.jpg'/></author><thr:total>0</thr:total></entry></feed>
