Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 05 de Outubro de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
56 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Componente TSQLComboBox
Publicado por ActiveDelphi : Sexta, Abril 01, 2005 - 12:18 GMT-3 (6016 leituras)
Comentários 1 Comentário   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Administrador Pessoal, neste artigo vou demonstrar como criar um componente derivado do TComboBox que carregue valores de uma tabela do Interbase via SQL.
Inicialmente com o Delphi aberto vamos acessar no Menu Component a opção New Component e na tela que for exibida preencher com os seguintes valores.:

Ancestor type.:  TComboBox

Class Name.:  TSQLComboBox

Palette Page.: Standart

Unit file name.: Indicar o nome da unit com o caminho onde será salvo o arquivo do código fonte do componente.

 

Cabe lembrar que estes valores poderão ser alterados conforme o gosto de cada um, o único que não poderá ser alterado é o Ancestor type, pois é dele que nosso componente irá herdar as suas propriedades.

 

Feito isso, o delphi nos irá gerar a estrutura básica do arquivo. Altere o restante conforme código descrito abaixo.:

 

unit SQLComboBox;

 

interface

 

uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

  StdCtrls, DB, IBDatabase, IBQuery;

 

type

  TSQLComboBox = class(TComboBox)

  private

    { Private declarations }

    FConnection : TIBDatabase;

    FTransaction: TIBTransaction;

    FSQLText    : string;

    FFieldName  : string;

    qryDados : TIBQuery;

    { Query interna para efetuar a consulta sql }

    procedure SetIBXConnection(Value : TIBDatabase);

    { procedure para Setar a conexão ao banco de dados }

    procedure SetFTransaction(const Value: TIBTransaction);

    { procedure para Setar a transação da query }

  protected

    { Protected declarations }

  public

    { Public declarations }

    procedure LoadItems;

  published

    { Published declarations }

    property Connection : TIBDatabase read FConnection write SetIBXConnection;

    { propriedade onde será selecionada o componente de conexão ao BD }

    property Transaction : TIBTransaction read FTransaction write SetFTransaction;

    { propriedade onde será selecionado o componente transaction }

    property SQLText : string read FSQLText write FSQLText;

    { propriedade onde definimos a intrução sql de consulta }

    property FieldName : string read FFieldName write FFieldName;

    { propriedade para informar o nome do campo da tabela cujos valores

      serão exibidos na listagem do nosso componente }

  end;

 

procedure Register;

 

implementation

 

{ procedure para registrar o componente no delphi }

procedure Register;

begin

  RegisterComponents('Standard', [TSQLComboBox]);

end;

 

{ Setar o componente de conexão ao banco de dados }

procedure TSQLComboBox.SetIBXConnection(Value: TIBDatabase);

begin

  if FConnection <> Value then FConnection := Value;

  if Value <> nil then Value.FreeNotification(self);

end;

 

{ Setar o componente transaction para a query de consulta }

procedure TSQLComboBox.SetFTransaction(const Value: TIBTransaction);

begin

  FTransaction := Value;

  if Value <> nil then Value.FreeNotification(Self);

end;

 

{ procedure responsavel em carregar os valores da tabela }

procedure TSQLComboBox.LoadItems;

begin

 Items.Clear;

 { limpar os itens já existentes }

 qryDados              := TIBQuery.Create(Self);

 { criar em run-time a query para consulta }

 qryDados.Database     := FConnection;

 qryDados.Transaction  := FTransaction;

 qryDados.SQL.Text     := FSQLText;

 qryDados.Open;

 { executar a consulta }

 with qryDados do

 begin

  DisableControls;

  First;

  { posicionar no 1º registro da tabela

    e caso a mesma não seja vazia ou no final... }

  while not Eof do

  begin

   Items.Add(qryDados.FieldByName(FFieldName).asstring);

   { incluir o valor na lista de itens }

   Next;

   { próximo registro }

  end;

  EnableControls;

 end;

 qryDados.Close;

 { fechar a query }

 qryDados.Free;

 { destruir a query da memória }

end;

 

end.

 

Não podemos nos esquecer de incluir na cláusula USES as seguintes units.: DB, IBDatabase e IBQuery.

 

O nosso componente estará pronto para ser compilado e instalado no Delphi.

 

Para usar, basta setar as propriedades Connection e Transaction. E informar a condição SQL na propriedade SQLText e o nome do campo a ser usado na propriedade FieldName.

 

Para carregar os registros, na lista do ComboBox, por exemplo, bastará no evento OnShow do Form colocar o seguinte.:

 

procedure TForm1.OnShow(Sender: TObject);

begin

    SQLComboBox1.LoadItems;

end;

 

Vale lembrar que o componente tem as mesmas funcionalidades de um ComboBox comum, a única diferença esta na opção de poder adquirir os itens de uma tabela.

 

 Clique aqui para fazer download dos fontes.



Observação: John Klaus Kanenberg
kanenberg@yahoo.com.br


Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: johnklaus : Abr 02, 2005 - 12:24
(Informações sobre o membro | Enviar uma mensagem) http://
É possivel também usar uma condição para que não sejam incluídos registros duplicados, para isso basta substituir a linha.:

Items.Add(qryDados.FieldByName(FFieldName).asstring);

por.:

if (qryDados.FieldByName(FFieldName).asstring <> '') and
(items.indexof(qryDados.FieldByName(FFieldName).asstring) < 0) then
Items.Add(qryDados.FieldByName(FFieldName).asstring);

Espero que mais esta dica melhore ainda mais o componente... Peço que se alguém tiver idéias, envie ou comente... Valeu !!!
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados