• Fabriciojf.com
  • fabriciojf@gmail.com

Fabricio S Costa Tecnologia, dicas e uma pá de coisas legais!

  • Blog
  • Bemmelhor SI
  • Serviços
    • Consultoria Asterisk

Pesquisa Lookup parametrizada em delphi 7

    Sun, May 01 2011
      

Este é um exemplo simples para quem necessita fazer uma janela lookup parametrizada para uma aplicação delphi. Desenvolvi este modelo para um projeto da faculdade onde era necessário através de uma única janela, buscar dados de qualquer tabela do banco de dados, por isso ficou bem didático e fácil de manipular. Indico este formato apenas aos que precisarem de algo bem simples, mas é possível manipular a classe para incluir novas funcionalidades.

Para utilizar o formulário lookup parametrizado o princípio é bem simples, você deve chamá-lo de forma modal passando a tabela e os campos chave e descrição que deverão ser pesquisados, depois pega o valor de retorno através dos parâmetros getChave e getDescricao. Abaixo segue um exemplo de chamada ao formulário de pesquisa.

Dicas

Criando o DataModule

Para este exemplo eu utilizei um dataModule chamado uDm.pas com um componente tIbQuery por isso abra seu projeto e siga os seguintes passos:

  • Clique em File;
  • New;
  • Data Module;
  • Abra a paleta interbase;
  • Importe para o Projeto um componente tIbTransaction, tIbDatabase, tIbQuery;
  • Conecte o componente tIbDatabase ao banco de dados;
  • Conecte os compontes tIbDatabase ao tIbTransaction e tIbQuery ao tIbDatabase;
  • Renomeie o tIbQuery para qAux;
  • Clique em File, Save as e Salve o dataModule como uDm na pasta do projeto;
  • Troque a propriedade name do dataModule para dm;

Importando os arquivos para o projeto

Para importar o arquivo uLocalizar.pas para o projeto faça o seguinte:

  • Salve os arquivos uLocalizar.pas e uLocalizar.dfm na pasta do projeto;
  • Pressione Shift + F11;
  • Selecione o arquivo localizar.pas;
  • Clique em OK;

Importando os arquivos para o form

Para importar o arquivo uLocalizar.pas para o form que irá utilizá-lo faça o seguinte:

  • Abra o form que utilizará o valor lookup;
  • Pressione Alt + F11;
  • Selecione o arquivo uLocalizar.pas;
  • Clique em OK;

Utilizando o Lookup

Para utilizar o form uLocalizar como lookup faça o seguinte:

  • Acrescente um botão no form que utilizará o lookup;
  • No evento OnClick digite o código abaixo;

Exemplo de chamada ao formulário parametrizado:

obs: por problemas de incompatibilidade com o navegador, troque as aspas duplas por aspas simples

procedure TfAluno.btnLocalizarCursoClick(Sender: TObject);
var
    frm: TfLocalizarDados;
begin

    frm:= TfLocalizarDados.create(application);
    try

        with frm do
        begin
            {tabela que será pesquisada}
            Tabela:= "curso";

            {campo codigo da tabela que será pesquisada}
            campoChave:= "codCurso";

            {campo descritivo da tabela que será pesquisada}
            campoParametro:= "nomeCurso";

            {pega os dados e joga na grade}
            getDados;
        end;

        if frm.showmodal = mrOk then
        begin
            {pega o codigo de retorno e joga no campo codigo desejado}
            edtCodCurso.text:= frm.getChave;

            {pega a descricao de retorno e joga no campo desejado}
            edtNomeCurso.text:= frm.getDescricao;
        end;

        finally
            frm.free;
    end;
end;

Importante:

  • Troque os nomes dos edits utilizados no exemplo por aqueles que você criou no seu projeto;
  • O exemplo acima foi desenvolvido para buscar dados da tabela curso, você deverá mudar os valores de: tabela, campochave e campoParametro para os nomes daqueles que deseja pesquisar;
  • O projeto acima utiliza a paleta Interbase, se você não está acostumado com esta paleta, troque os componentes para os que desejar;

Segue o conteúdo do arquivo uLocalizar.pas.

obs: por problemas de incompatibilidade com o navegador, troque as aspas duplas por aspas simples

unit uLocalizar;

interface

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, ComCtrls, ExtCtrls, StdCtrls, Buttons;

type
    TfLocalizarDados = class(TForm)
    Panel1: TPanel;
    lvDados: TListView;
    GroupBox1: TGroupBox;
    btnPesquisar: TBitBtn;
    edtParametro: TEdit;
    Label1: TLabel;
    btnRetornar: TBitBtn;
    Panel2: TPanel;
    procedure btnRetornarClick(Sender: TObject);
    procedure lvDadosDblClick(Sender: TObject);
    procedure btnPesquisarClick(Sender: TObject);
    
    private
        { Private declarations }
        vCampoChave : string;
        vCampoPar : string;
        vTabela : string;
        vresultcampo : string;
        vresultChave : string;
        vresultDescricao : string;

    public
        { Public declarations }
        property CampoChave : string read vCampoChave write vCampoChave;
        property CampoParametro : string read vCampoPar write vCampoPar;
        property Tabela : string read vTabela write vTabela;
        property getChave : string read vresultChave write vresultChave;
        property getDescricao : string read vresultDescricao write vresultDescricao;

        procedure getDados;
    
end;

var
    fLocalizarDados: TfLocalizarDados;

implementation

uses uDm;

{$R *.dfm}

procedure TfLocalizarDados.getDados;
var
    it: tListItem;
begin

    self.Caption:= "Pesquisa " + tabela;

    with dm.qAux do
    begin
        close;
        sql.clear;
        sql.add("select " + campoChave + "," + campoParametro );
        sql.add("from " + tabela );

        if trim(edtParametro.Text) <> "" then
            sql.add("where " + campoParametro + " like ""%" + edtParametro.text + "%""");

        open;
    end;

    lvDados.Clear;
    while not dm.qAux.eof do
    begin
        it:= lvDados.Items.Add;

        it.Caption:= dm.qAux.fieldByName(campoChave).asString;
        it.SubItems.add(dm.qAux.fieldByName( campoParametro).asString);

        dm.qAux.next;
    end;
end;

procedure TfLocalizarDados.btnRetornarClick(Sender: TObject);
begin
    modalResult:= mrCancel;
end;

procedure TfLocalizarDados.lvDadosDblClick(Sender: TObject);
begin
    try
        vresultChave:= lvDados.Selected.Caption;
        vresultDescricao:= lvDados.Selected.SubItems[0];

        ModalResult:= mrOk;
        except
    end;
end;

procedure TfLocalizarDados.btnPesquisarClick(Sender: TObject);
begin
    getDados;
end;

end.
Leave a comment
  • Primeiro
  • «
  • 13
  • 14
  • 15 (current)
  • 16
  • 17
  • »
  • Último
Fabriciojf.com

6 Frameworks para deixar seu site Responsivo

Fabriciojf.com

Dica Rápida: Ajustando MTU no Debian e Windows

Fabriciojf.com

Problem creating jar: [...]/target/classes (Is a directory)

Fabriciojf.com

Analise o design responsivo do seu site

Fabriciojf.com

Programa Hospitalar didático para estudantes Delphi

Fabriciojf.com

Dica Rápida: Como criar usuários no ProFtp

Fabriciojf.com

Criando um servidor para controle de versões com Subversion

Fabriciojf.com

Dica Rápida: Problema com CHKJ3000E no Eclipse

Últimos Artigos


Fabriciojf.com

6 Frameworks para deixar seu site Responsivo

Fabriciojf.com

Analise o design responsivo do seu site

Fabriciojf.com

Dica Rápida: Revertendo modificações no GIT

Fabriciojf.com

Dica Rápida: Conectando um banco de dados MySQL ou Postgres com PHP

Fabriciojf.com

Criando AGI no Asterisk com PHP-AGI

Fabriciojf.com

Dica Rápida: Ajustando MTU no Debian e Windows

Fabriciojf.com

Configurando Apache, Trac e Subversion

Fabriciojf.com

Problem creating jar: [...]/target/classes (Is a directory)

Fabriciojf.com

Dica Rápida: Problema com CHKJ3000E no Eclipse

Fabriciojf.com

Acrescentando funcionalidades ao pom.xml

   Social



   Recursos

  •    Conversor Hash PHP
  •    Mapa do Site (xml)


   Bemmelhor CMS

Este site foi desenvolvido com a Plataforma Bemmelhor CMS, um sistema gestor de conteúdo potente e fácil de usar, ideal para empresas que desejam apresentar seu valor na internet. Clique aqui e conheça mais detalhes sobre essa ferramenta espetacular.

© Fabriciojf.com - Site pessoal de Fabricio S. Costa - Copyright 2025