unit vehiculos;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Touch.Keyboard, Vcl.ImgList,
  Vcl.StdCtrls, Vcl.Grids, Vcl.DBGrids, Vcl.ExtCtrls, Data.DB, ZDataset,
  ZAbstractRODataset, ZAbstractDataset, Vcl.DBCtrls, Vcl.Mask;

type
  Tfvehiculos = class(TForm)
    Panel13: TPanel;
    Panel17: TPanel;
    DBGrid3: TDBGrid;
    Panel7: TPanel;
    btAcancelar: TButton;
    btAmodificar: TButton;
    btAborrar: TButton;
    btAnuevo: TButton;
    btAguardar: TButton;
    listaiconos: TImageList;
    Panel1: TPanel;
    teclado: TTouchKeyboard;
    Panel2: TPanel;
    vehiculos: TZQuery;
    qvehiculos: TZReadOnlyQuery;
    dsvehiculos: TDataSource;
    dsqvehiculos: TDataSource;
    tbuscar: TEdit;
    Label1: TLabel;
    todosarticulos: TCheckBox;
    vehiculosIDEMPRESA: TIntegerField;
    vehiculosID: TWideStringField;
    vehiculosTIPO: TWideStringField;
    vehiculosDESCRIPCION: TWideStringField;
    vehiculosFECHA_COMPRA: TDateField;
    vehiculosPROPIO: TIntegerField;
    vehiculosvehiculo: TIntegerField;
    vehiculosmaquinaria: TIntegerField;
    vehiculosACTIVO: TIntegerField;
    qvehiculosid: TWideStringField;
    DBEdit1: TDBEdit;
    DBCheckBox1: TDBCheckBox;
    DBEdit2: TDBEdit;
    Label2: TLabel;
    Label3: TLabel;
    DBCheckBox2: TDBCheckBox;
    DBCheckBox3: TDBCheckBox;
    DBCheckBox4: TDBCheckBox;
    Label4: TLabel;
    DBEdit3: TDBEdit;
    qvehiculosidempresa: TIntegerField;
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure qvehiculosBeforeOpen(DataSet: TDataSet);
    procedure tbuscarChange(Sender: TObject);
    procedure todosarticulosClick(Sender: TObject);
    procedure dsvehiculosStateChange(Sender: TObject);
    procedure btAnuevoClick(Sender: TObject);
    procedure btAborrarClick(Sender: TObject);
    procedure btAmodificarClick(Sender: TObject);
    procedure btAguardarClick(Sender: TObject);
    procedure btAcancelarClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fvehiculos: Tfvehiculos;
  vertodos:integer;
  filtro:string;

implementation

{$R *.dfm}

procedure Tfvehiculos.btAborrarClick(Sender: TObject);
begin
    vehiculos.Delete;
end;

procedure Tfvehiculos.btAcancelarClick(Sender: TObject);
begin
    vehiculos.Cancel;
    vehiculos.MasterSource:=dsqvehiculos;
end;

procedure Tfvehiculos.btAguardarClick(Sender: TObject);
var id:string;
begin
    vehiculos.Post;
    id:=qvehiculosid.AsString;
    qvehiculos.Refresh;
    qvehiculos.Locate('id',id,[locaseinsensitive,lopartialkey]);
    vehiculos.MasterSource:=dsqvehiculos;
end;

procedure Tfvehiculos.btAmodificarClick(Sender: TObject);
begin
    vehiculos.MasterSource:=nil;
    vehiculos.Edit;
    dbedit1.SetFocus;
end;

procedure Tfvehiculos.btAnuevoClick(Sender: TObject);
begin
   vehiculos.MasterSource:=nil;
   vehiculos.append;
   dbedit1.setfocus;
   vehiculosidempresa.Value:=1;
end;

procedure Tfvehiculos.dsvehiculosStateChange(Sender: TObject);
begin
if vehiculos.State in [dsedit,dsinsert] then
begin
    btanuevo.Enabled:=false;
    btamodificar.Enabled:=false;
    btaborrar.Enabled:=false;
    btacancelar.Enabled:=true;
    btaguardar.Enabled:=true;
    panel2.Enabled:=true;
end else
begin
    btanuevo.Enabled:=true;
    btamodificar.Enabled:=true;
    btaborrar.Enabled:=true;
    btacancelar.Enabled:=false;
    btaguardar.Enabled:=false;
    panel2.Enabled:=false;
end;
end;

procedure Tfvehiculos.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if (activecontrol is tdbgrid) then
    begin
        if Key = 13 then Key :=9;
    end;

end;

procedure Tfvehiculos.FormKeyPress(Sender: TObject; var Key: Char);
begin
   key:=upcase(key);
    if (key='.') and (activecontrol is tdbedit) then
    begin
       if  (activecontrol as tdbedit).Field.DataType in [ftfloat,ftCurrency,ftbcd,ftfmtbcd] then key:=','
    end;
    if (key='.') and (activecontrol is tdbgrid) then
    begin
        key:=','
    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 Tfvehiculos.FormShow(Sender: TObject);
begin
qvehiculos.Open;
vehiculos.Open;
end;

procedure Tfvehiculos.qvehiculosBeforeOpen(DataSet: TDataSet);
var filtrolocal:string;
begin
    if filtro<>'' then
    begin
       begin
         filtrolocal:=' where descripcion like('+''''+filtro+''''+') or id like('+''''+filtro+''''+')';
       end;
      if vertodos=0 then
      begin
          begin
            filtrolocal:=' where (descripcion like('+''''+filtro+''''+') or id like('+''''+filtro+''''+')';
            filtrolocal:=filtrolocal+') and activo=1 ';
          end;
      end;
    end;

    if filtro='' then
    begin
      filtrolocal:='';
      if vertodos=0 then
      begin
          filtrolocal:=' where activo=1 ';
      end;
    end;


    qvehiculos.SQL.Clear;
    qvehiculos.SQL.Add('select * from ordenes_coste ' + filtrolocal +' order by descripcion');


end;

procedure Tfvehiculos.tbuscarChange(Sender: TObject);
begin
    filtro:='%'+tbuscar.Text+'%';
    qvehiculos.Close;
    qvehiculos.open;
end;

procedure Tfvehiculos.todosarticulosClick(Sender: TObject);
begin
    if todosarticulos.Checked=true then
    begin
        vertodos:=1;
        qvehiculos.Close;
        qvehiculos.Open;
    end else
    begin
        vertodos:=0;
        qvehiculos.Close;
        qvehiculos.Open;
    end;
end;

end.
