Enter the name of the product in Edit and get the image of the bank in the TImage component

2

I'm doing a system where I need to search for the product name. Below the edit appears a grid for auto complete, then when I press Enter in the product name, the grid must appear in the TImage image, which I recorded the path in time of the product registration.
I've been researching since yesterday and found no way. Follow the image and the code

unit untPrincipal;

interface

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

type
  TfrmBusca = class(TForm)
    frmBusca: TImage;
    BitBtn1: TBitBtn;
    edtBusca: TEdit;
    dbgAutoComplete: TDBGrid;
    Image1: TImage;
    dsBuscaProdutos: TDataSource;
    Panel1: TPanel;
    edtImagem: TEdit;
    procedure BitBtn1Click(Sender: TObject);
    procedure edtBuscaChange(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure dbgAutoCompleteKeyPress(Sender: TObject; var Key: Char);
  private

    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmBusca: TfrmBusca;

implementation

uses untGerenciamento, untDataModuleCONEXAO, untModuloProdutos;

{$R *.dfm}

procedure TfrmBusca.BitBtn1Click(Sender: TObject);
begin
  frmGerenciamento.ShowModal;
end;

procedure TfrmBusca.dbgAutoCompleteKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    edtBusca.Text := dsBuscaProdutos.DataSet.FieldByName('pro_nome').AsString;
    dbgAutoComplete.Visible := False;
    //Image1.Picture.LoadFromFile(dmCONEXAO.adoCONSULTA_PRODUTOSTODOSpro_imagem);
    //edtImagem.Text := dmCONEXAO.adoCONSULTA_PRODUTOSTODOSpro_imagem.AsString;

    //if not FileExists(edtBusca.Text) then
    // Image1.Picture:= Nil
    // Else    
  end;
end;

procedure TfrmBusca.edtBuscaChange(Sender: TObject);
begin
  //puxa os dados e filtra pelo nome da cidade digitado
  //dsBuscaProdutos.DataSet.Filter := 'pro_nome like '+QuotedStr('%' +edtBusca.Text+'%');

  //ativa o filtro
  //dsBuscaProdutos.DataSet.Filtered := false;

  //faz teste se estiva não vazio o dsCidades
  //if not dsBuscaProdutos.DataSet.IsEmpty then
    //ativa a dbgrid
    //dbgAutoComplete.Visible := True
  //else
    //dbgAutoComplete.Visible := False;
    //end;

  dsBuscaProdutos.DataSet.Filtered := false;
  if edtBusca.Text <> ''  then
  begin
    dsBuscaProdutos.DataSet.Filter := 'pro_nome like '+
    QuotedStr('%' +edtBusca.Text+'%');
    dsBuscaProdutos.DataSet.Filtered := true;
    dbgAutoComplete.Visible := True;
  end 
  else
    dbgAutoComplete.Visible := False;    
end;

procedure TfrmBusca.FormKeyPress(Sender: TObject; var Key: Char);
begin
  edtBusca.Text := dsBuscaProdutos.DataSet.FieldByName('pro_nome').AsString;
  dbgAutoComplete.Visible := True;
end;

end.
    
asked by anonymous 24.08.2014 / 19:14

1 answer

3

In a short answer, I believe this is what you are looking for:

procedure TfrmBusca.dbgAutoCompleteKeyPress(Sender: TObject; var Key: Char);
var
  fileName: string;
begin
  if Key = #13 then
  begin
    dbgAutoComplete.Visible := False;

    // apresenta apenas o nome do produto
    edtBusca.Text := dsBuscaProdutos.DataSet.FieldByName('pro_nome').AsString;

    // obtem o path do arquivo de imagem
    fileName := dmCONEXAO.adoCONSULTA_PRODUTOSTODOSpro_imagem.AsString;

    // Se o arquivo existir, então carrega a imagem
    if FileExists(fileName) then
      Image1.Picture.LoadFromFile(fileName);        
    else
      Image1.Picture:= nil; // se não encontrar a imagem, então limpa o TImage
  end;
end;
    
25.08.2014 / 05:17