unit fbuscararticulos;

interface

uses
  FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, FireDAC.Stan.Async, FireDAC.DApt, FireDAC.Comp.DataSet, FireDAC.Comp.Client, uFireDacHelper,
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.DBGrids, Vcl.ExtCtrls,
  Vcl.StdCtrls, Data.DB;

type
  Tbuscararticulos = class(TForm)
    Panel1: TPanel;
    DBGrid1: TDBGrid;
    Label1: TLabel;
    Edit1: TEdit;
    qarticulos: TFDQuery;
    dsqarticulos: TDataSource;
    btAguardar: TButton;
    DataSource1: TDataSource;
    qtipos_iva: TFDQuery;
    qtipos_ivaid: TIntegerField;
    qtipos_ivadescripcion: TWideStringField;
    qtipos_ivatipo: TIntegerField;
    qtipos_ivatipo_req: TFloatField;
    qarticulosidempresa: TIntegerField;
    qarticulosid: TIntegerField;
    qarticuloscodigo: TWideStringField;
    qarticulosdescripcion: TWideStringField;
    qarticulosfamilia: TIntegerField;
    qarticulosprovhab: TIntegerField;
    qarticulostipoiva: TIntegerField;
    qarticulospreciocoste: TFloatField;
    qarticulosmargen: TFloatField;
    qarticulosbeneficio: TFloatField;
    qarticulospvp: TFloatField;
    qarticulosstock: TFloatField;
    qarticulosult_preciocompra: TFloatField;
    qarticulosfacturable: TIntegerField;
    qarticulosobservaciones: TWideStringField;
    qarticulosimagen: TBlobField;
    qarticulosactivo: TIntegerField;
    qarticulosvalor_almacen: TFloatField;
    qarticulosstock_minimo: TFloatField;
    qarticulosavisar_stock: TIntegerField;
    qarticuloscontrolar_traza: TIntegerField;
    qarticulospeso: TFloatField;
    qarticulosdescripcion_doc: TWideStringField;
    qarticulosinventariable: TIntegerField;
    qarticulosactualizar_stock: TIntegerField;
    qarticulosregistro: TWideStringField;
    qarticulosmateria_activa: TWideStringField;
    qarticulosplazo_seguridad: TIntegerField;
    qarticulosdosis: TWideStringField;
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure qarticulosBeforeOpen(DataSet: TDataSet);
    procedure btAguardarClick(Sender: TObject);
    procedure Edit1Exit(Sender: TObject);
    procedure DBGrid1ColExit(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  buscararticulos: Tbuscararticulos;
  padre,filtro:string;

implementation

{$R *.dfm}

procedure Tbuscararticulos.btAguardarClick(Sender: TObject);
begin
    buscararticulos.Close;
end;

procedure Tbuscararticulos.DBGrid1ColExit(Sender: TObject);
begin
    if dbgrid1.SelectedIndex=1 then btaguardar.SetFocus;

end;

procedure Tbuscararticulos.Edit1Change(Sender: TObject);
begin
    filtro:=edit1.Text;
    qarticulos.Close;
    qarticulos.Open;
    qtipos_iva.Open;
end;

procedure Tbuscararticulos.Edit1Exit(Sender: TObject);
begin
   dbgrid1.SetFocus;
end;

procedure Tbuscararticulos.FormKeyPress(Sender: TObject; var Key: Char);
var formatos:tformatsettings;
punto:string;
begin
    key:=upcase(key);
    GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, formatos);
    punto:=formatos.DecimalSeparator;
    if punto=',' then
    begin
        if (key='.') and (activecontrol is tdbgrid) then
        begin
            key:=',';
        end;
    end;
    if (activecontrol is tdbgrid) then
    begin
        if Key = #13 then Key :=#9;
    end;

    if (key=#13) then
    begin
        Perform(WM_NextDLGCtl,0,0);
        key:=#0;
    end;
end;

procedure Tbuscararticulos.FormShow(Sender: TObject);
begin
   qarticulos.Open;
end;

procedure Tbuscararticulos.qarticulosBeforeOpen(DataSet: TDataSet);
var filtrolocal:string;
begin
    filtrolocal:='';
    filtrolocal:=' and (descripcion like('+''''+'%'+filtro+'%'+''''+') or codigo like('+''''+'%'+filtro+'%'+''''+'))';
    qarticulos.SQL.Clear;
    qarticulos.SQL.Add('select * from articulosf where activo=1 '+filtrolocal+' order by descripcion');

end;

end.
