unit frmSpravaVzorku; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, ddPlugin_TLB, Data.DB, Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids, JvExDBGrids, JvDBGrid, Vcl.StdCtrls, Vcl.DBCtrls, JvDBCheckBox; {$I iConsts.inc} type TformSpravaVzorku = class(TForm) grdSpravaVzorku: TJvDBGrid; GridPanel1: TGridPanel; GridPanel2: TGridPanel; GridPanel3: TGridPanel; btnTiskKartonu: TButton; btnTiskSeznamVzorku: TButton; btnVyraditVzorek: TButton; btnUkoncitKarton: TButton; GridPanel4: TGridPanel; Label1: TLabel; edtSZ: TEdit; edtRegCis: TEdit; edtNazev1: TEdit; edtStroj: TEdit; Label9: TLabel; Label2: TLabel; Label3: TLabel; dbCb1: TJvDBCheckBox; procedure FormShow(Sender: TObject); procedure grdSpravaVzorkuDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); procedure edtSZChange(Sender: TObject); procedure edtRegCisChange(Sender: TObject); procedure edtNazev1Change(Sender: TObject); procedure edtStrojChange(Sender: TObject); procedure Label1Click(Sender: TObject); procedure grdSpravaVzorkuColExit(Sender: TObject); procedure grdSpravaVzorkuMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure grdSpravaVzorkuDblClick(Sender: TObject); procedure grdSpravaVzorkuColEnter(Sender: TObject); private procedure Filtruj; public Helios: IHelios; end; var formSpravaVzorku: TformSpravaVzorku; grdSpravaVzorkuAktRow, grdSpravaVzorkuAktCol: integer; Pt: TPoint; Cell: TGridCoord; TitleOffset: Byte; implementation uses System.StrUtils, System.DateUtils, datMod, helUtils; {$R *.dfm} procedure TformSpravaVzorku.edtNazev1Change (Sender: TObject); begin Filtruj; end; procedure TformSpravaVzorku.edtRegCisChange (Sender: TObject); begin Filtruj; end; procedure TformSpravaVzorku.edtStrojChange (Sender: TObject); begin Filtruj; end; procedure TformSpravaVzorku.edtSZChange (Sender: TObject); begin Filtruj; end; procedure TformSpravaVzorku.Filtruj; var filtr: string; begin filtr:= ''; if (edtSZ.Text<>'') then filtr:= 'UPPER(colSZ) LIKE ''%' + edtSZ.Text.Trim.ToUpper + '%'''; if (edtRegCis.Text<>'') then filtr:= filtr + IfThen(filtr='', '', ' AND ') + 'UPPER(colRC) LIKE ''%' + edtRegCis.Text.Trim.ToUpper + '%'''; if (edtNazev1.Text<>'') then filtr:= filtr + IfThen(filtr='', '', ' AND ') + 'UPPER(colNazev1) LIKE ''%' + edtNazev1.Text.Trim.ToUpper + '%'''; if (edtStroj.Text<>'') then filtr:= filtr + IfThen(filtr='', '', ' AND ') + 'UPPER(colStroj) LIKE ''%' + edtStroj.Text.Trim.ToUpper + '%'''; dm.vtSpravaVzorku.Filter:= filtr; dm.vtSpravaVzorku.Filtered:= (filtr<>''); grdSpravaVzorku.Invalidate; end; procedure TformSpravaVzorku.FormShow (Sender: TObject); begin dm.NactiVzorky (self); end; procedure TformSpravaVzorku.grdSpravaVzorkuColEnter(Sender: TObject); begin if (grdSpravaVzorku.SelectedField.DataType = ftBoolean) then grdSpravaVzorku.Options:= grdSpravaVzorku.Options - [dgEditing]; end; procedure TformSpravaVzorku.grdSpravaVzorkuColExit(Sender: TObject); begin if (grdSpravaVzorku.SelectedField.FieldName = dbCb1.DataField) then dbCb1.Visible:= False end; procedure TformSpravaVzorku.grdSpravaVzorkuDblClick (Sender: TObject); var id: integer; begin if (Sender is TJvDBGrid) then begin if (grdSpravaVzorkuAktCol-1=datMod.GetDBGridIndexByFieldName (grdSpravaVzorku, 'colArchiv', false)) then if (Helios.YesNo('Vzorek je v archivu ' + #1 + dm.vtSpravaVzorku.FieldByName('colArchiv').AsString + #1 + '.' + CRLF + 'Chceje jej vyřadit ?' , false)) then begin dm.vtSpravaVzorku.Edit; id:= dm.vtSpravaVzorku.FieldByName('colID').AsInteger; try Helios.ExecSQL('UPDATE ' + tblVzorky + ' SET Vyrazeno=1 WHERE ID=' + id.ToString); dm.vtSpravaVzorku.FieldByName('colVyrazeno').AsBoolean:= true; finally end; dm.vtSpravaVzorku.Post; end; end; end; procedure TformSpravaVzorku.grdSpravaVzorkuDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); const IsChecked : array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED); var DrawState: Integer; DrawRect: TRect; begin if (gdFocused in State) then begin if (Column.Field.FieldName = dbCb1.DataField) then begin dbCb1.Left:= Rect.Left + grdSpravaVzorku.Left + 2; dbCb1.Top:= Rect.Top + grdSpravaVzorku.top + 2; dbCb1.Width:= Rect.Right - Rect.Left; dbCb1.Height:= Rect.Bottom - Rect.Top; dbCb1.Visible:= True; end end else begin if (Column.Field.FieldName = dbCb1.DataField) then begin DrawRect:=Rect; InflateRect (DrawRect,-1,-1); DrawState:= ISChecked[Column.Field.AsBoolean]; grdSpravaVzorku.Canvas.FillRect (Rect); DrawFrameControl (grdSpravaVzorku.Canvas.Handle, DrawRect, DFC_BUTTON, DrawState); end; end; { if (gdFocused in State) and (Column.FieldName='colKArchivaci') then begin if (Column.Field.Value=1) then SetBounds (Left + grdSpravaVzorku.Left + 1, Rect.Top + grdSpravaVzorku.Top + 1, Rect.Right - Rect.Left + 1, Rect.Bottom - Rect.Top + 1); end; } if (not(gdSelected in State)) then begin if (Odd(grdSpravaVzorku.DataSource.DataSet.RecNo)) then TJvDBGrid(Sender).Canvas.Brush.Color:= clWindow else TJvDBGrid(Sender).Canvas.Brush.Color:= $00E0E0E0; end; if (Column.FieldName='colNazev1') or (Column.FieldName='colArchiv') then begin if (gdSelected in State) then TDBGrid(Sender).Canvas.Font.Color:= clBlack; TDBGrid(Sender).Canvas.Brush.Color:= $00D0FEC6; end; TDBGrid(Sender).DefaultDrawColumnCell (Rect, DataCol, Column, State); end; procedure TformSpravaVzorku.grdSpravaVzorkuMouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin grdSpravaVzorkuAktRow:= TDBGrid(Sender).MouseCoord(X, Y).Y; grdSpravaVzorkuAktCol:= TDBGrid(Sender).MouseCoord(X, Y).X; // TitleOffset := Ord(dgTitles in grdRozpracovane.Options); Pt:= grdSpravaVzorku.ScreenToClient (Mouse.CursorPos); Cell:= grdSpravaVzorku.MouseCoord (Pt.X, Pt.Y); end; procedure TformSpravaVzorku.Label1Click (Sender: TObject); begin edtSZ.Text:= ''; edtRegCis.Text:= ''; edtNazev1.Text:= ''; edtStroj.Text:= ''; Filtruj; end; end.