unit frmZasobaObjednavky; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Data.DB, Vcl.Grids, Vcl.DBGrids, Vcl.StdCtrls, ddPlugin_TLB, JvExDBGrids, JvDBGrid; type TformZasobaObjednavky = class(TForm) GridPanel1: TGridPanel; grdZasobaObjednavky: TJvDBGrid; GridPanel2: TGridPanel; GridPanel3: TGridPanel; edtSZ: TEdit; edtRC: TEdit; edtNazev1: TEdit; edtMJ: TEdit; edtBaleni1: TEdit; edtBaleni2: TEdit; cbVyroba: TComboBox; cbNaCeste: TComboBox; cbSklad: TComboBox; cbCelkem: TComboBox; cbObjednano: TComboBox; Label1: TLabel; procedure FormShow (Sender: TObject); procedure grdZasobaObjednavkyDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); procedure grdZasobaObjednavkyDblClick (Sender: TObject); procedure edtSZChange (Sender: TObject); procedure edtRCChange (Sender: TObject); procedure edtNazev1Change (Sender: TObject); procedure cbVyrobaChange (Sender: TObject); procedure cbNaCesteChange (Sender: TObject); procedure cbSkladChange (Sender: TObject); procedure cbCelkemChange (Sender: TObject); procedure cbObjednanoChange (Sender: TObject); procedure edtMJChange (Sender: TObject); procedure edtBaleni1Change (Sender: TObject); procedure edtBaleni2Change (Sender: TObject); procedure Label1Click (Sender: TObject); private procedure Filtruj; public Helios: iHelios; vyrobniDen: TDateTime; end; var formZasobaObjednavky: TformZasobaObjednavky; implementation uses System.StrUtils, System.Math, datMod, frmObjednavkaMat, helUtils; {$R *.dfm} procedure TformZasobaObjednavky.cbCelkemChange(Sender: TObject); begin Filtruj; end; procedure TformZasobaObjednavky.cbNaCesteChange(Sender: TObject); begin Filtruj; end; procedure TformZasobaObjednavky.cbObjednanoChange(Sender: TObject); begin Filtruj; end; procedure TformZasobaObjednavky.cbSkladChange(Sender: TObject); begin Filtruj; end; procedure TformZasobaObjednavky.cbVyrobaChange(Sender: TObject); begin Filtruj; end; procedure TformZasobaObjednavky.edtBaleni1Change(Sender: TObject); var n: Extended; begin edtBaleni1.Text:= edtBaleni1.Text.Trim; if not(TryStrToFloat(edtBaleni1.Text, n)) then n:= 0; Filtruj; end; procedure TformZasobaObjednavky.edtBaleni2Change(Sender: TObject); var n: Extended; begin edtBaleni2.Text:= edtBaleni2.Text.Trim; if not(TryStrToFloat(edtBaleni2.Text, n)) then n:= 0; Filtruj; end; procedure TformZasobaObjednavky.edtMJChange(Sender: TObject); begin edtMJ.Text:= edtMJ.Text.Trim; Filtruj; end; procedure TformZasobaObjednavky.edtNazev1Change(Sender: TObject); begin Filtruj; end; procedure TformZasobaObjednavky.edtRCChange(Sender: TObject); begin Filtruj; end; procedure TformZasobaObjednavky.edtSZChange(Sender: TObject); begin edtSZ.Text:= edtSZ.Text.Trim; Filtruj; end; procedure TformZasobaObjednavky.Filtruj; var filtr: string; n: Extended; begin filtr:= ''; if (edtSZ.Text<>'') then filtr:= 'UPPER(colSZ) LIKE ''%' + edtSZ.Text.Trim.ToUpper + '%'''; if (edtRC.Text<>'') then filtr:= filtr + IfThen(filtr='', '', ' AND ') + 'UPPER(colRC) LIKE ''%' + edtRC.Text.Trim.ToUpper + '%'''; if (edtNazev1.Text<>'') then filtr:= filtr + IfThen(filtr='', '', ' AND ') + 'UPPER(colNazev1) LIKE ''%' + edtNazev1.Text.Trim.ToUpper + '%'''; if (edtMJ.Text<>'') then filtr:= filtr + IfThen(filtr='', '', ' AND ') + 'UPPER(colMJ) LIKE ''%' + edtMJ.Text.Trim.ToUpper + '%'''; if (edtBaleni1.Text<>'') then begin if not(TryStrToFloat(edtBaleni1.Text, n)) then n:= 0; filtr:= filtr + IfThen(filtr='', '', ' AND ') + 'colBaleni1=' + n.ToString.Replace(',', '.'); end; if (edtBaleni2.Text<>'') then begin if not(TryStrToFloat(edtBaleni2.Text, n)) then n:= 0; filtr:= filtr + IfThen(filtr='', '', ' AND ') + 'colBaleni2=' + n.ToString.Replace(',', '.'); end; if (cbVyroba.Text.Trim<>'') then filtr:= filtr + IfThen(filtr='', '', ' AND ') + 'colVyroba' + cbVyroba.Text; if (cbNaCeste.Text.Trim<>'') then filtr:= filtr + IfThen(filtr='', '', ' AND ') + 'colNaCeste' + cbNaCeste.Text; if (cbSklad.Text.Trim<>'') then filtr:= filtr + IfThen(filtr='', '', ' AND ') + 'colSklad' + cbSklad.Text; if (cbCelkem.Text.Trim<>'') then filtr:= filtr + IfThen(filtr='', '', ' AND ') + 'colCelkem' + cbCelkem.Text; if (cbObjednano.Text.Trim<>'') then filtr:= filtr + IfThen(filtr='', '', ' AND ') + 'colObjednano' + cbObjednano.Text; // + ' OR colPalet' + cbObjednano.Text; grdZasobaObjednavky.LockDrawing; if (filtr='') then begin dm.vtZasobyObjednavky.Filter:= filtr; dm.vtZasobyObjednavky.Filtered:= false; end else begin dm.vtZasobyObjednavky.Filter:= filtr; dm.vtZasobyObjednavky.Filtered:= true; end; grdZasobaObjednavky.UnlockDrawing; grdZasobaObjednavky.Invalidate; end; procedure TformZasobaObjednavky.FormShow (Sender: TObject); begin grdZasobaObjednavky.Font.Height:= Helios.FontHeight; dm.NactiZasobaObjednavky (self); end; procedure TformZasobaObjednavky.grdZasobaObjednavkyDblClick (Sender: TObject); var idKZ: integer; f: TformObjednavkaMat; begin idKZ:= TDBGrid(Sender).DataSource.DataSet.FieldByName('colIDKmen').AsInteger; f:= TformObjednavkaMat.Create(nil); try f.Helios:= Helios; f.vyrobniDen:= vyrobniDen; f.idKmen:= idKZ; f.ShowModal; finally f.Free; end; end; procedure TformZasobaObjednavky.grdZasobaObjednavkyDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if (not(gdSelected in State)) then begin if (Odd(grdZasobaObjednavky.DataSource.DataSet.RecNo)) then TDBGrid(Sender).Canvas.Brush.Color:= clWindow else TDBGrid(Sender).Canvas.Brush.Color:= $00E0E0E0; end; if (Column.FieldName='colNazev1') then begin TDBGrid(Sender).Canvas.Brush.Color:= $00D0FEC6; if (gdSelected in State) then begin TDBGrid(Sender).Canvas.Font.Color:= clBlack; TDBGrid(Sender).Canvas.Brush.Color:= $0061F0FC; end; end; TDBGrid(Sender).DefaultDrawColumnCell (Rect, DataCol, Column, State); end; procedure TformZasobaObjednavky.Label1Click (Sender: TObject); begin edtSZ.Text:= ''; edtRC.Text:= ''; edtNazev1.Text:= ''; edtMJ.Text:= ''; edtBaleni1.Text:= ''; edtBaleni2.Text:= ''; cbVyroba.ItemIndex:= -1; cbNaCeste.ItemIndex:= -1; cbObjednano.ItemIndex:= -1; cbSklad.ItemIndex:= -1; cbCelkem.ItemIndex:= -1; Filtruj; end; end.