Files
Rootvin-pluginHDCRTN/frmSpravaVzorku.pas
2025-05-21 21:06:33 +02:00

254 lines
6.6 KiB
ObjectPascal

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.