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

376 lines
9.6 KiB
ObjectPascal

unit frmKontrolaCCP1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids,
ddPlugin_TLB, Vcl.StdCtrls, Vcl.Mask, RxToolEdit, Vcl.ComCtrls, Vcl.NumberBox,
Vcl.Buttons;
type
TMyGrid = class(TDBGrid);
TformKontrolaCCP1 = class(TForm)
GridPanel1: TGridPanel;
grdCCP1: TStringGrid;
GridPanel2: TGridPanel;
Label1: TLabel;
pnlLabel1: TPanel;
Label2: TLabel;
pnlLabel2: TPanel;
Label3: TLabel;
pnlLabel3: TPanel;
Label4: TLabel;
pnlLabel4: TPanel;
Label5: TLabel;
pnlLabel5: TPanel;
Label6: TLabel;
pnlLabel6: TPanel;
Label7: TLabel;
pnlLabel7: TPanel;
Label8: TLabel;
pnlLabel8: TPanel;
Label9: TLabel;
pnlLabel9: TPanel;
Label10: TLabel;
pnlLabel10: TPanel;
Label11: TLabel;
pnlLabel11: TPanel;
Label12: TLabel;
pnlLabel12: TPanel;
GridPanel3: TGridPanel;
GridPanel4: TGridPanel;
GridPanel5: TGridPanel;
Label13: TLabel;
edtVyrDenDis: TEdit;
Label14: TLabel;
GridPanel6: TGridPanel;
dtDatum: TDateTimePicker;
dtTime: TDateTimePicker;
numBoxEditor: TNumberBox;
checkBoxEditor: TCheckBox;
btnAddNew: TButton;
btnQuit: TSpeedButton;
GridPanel7: TGridPanel;
pnlInfo: TPanel;
GridPanel8: TGridPanel;
Label15: TLabel;
Label16: TLabel;
GridPanel9: TGridPanel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
lblTeplotaCCP1: TLabel;
lblRozmer: TLabel;
lblHmotnost: TLabel;
lblDelka: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure grdCCP1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
procedure numBoxEditorChange(Sender: TObject);
procedure grdCCP1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
procedure checkBoxEditorClick(Sender: TObject);
procedure btnAddNewClick(Sender: TObject);
procedure btnQuitClick(Sender: TObject);
procedure numBoxEditorKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
private
function VisibleColsCount: integer;
public
apiMod: boolean;
Helios: IHelios;
vyrobniDen: TDateTime;
end;
var
formKontrolaCCP1: TformKontrolaCCP1;
colWidths: TArray<Extended>;
oldGridWidth: integer;
zapisNum: boolean;
aktCol, aktRow: integer;
implementation
uses System.StrUtils,
datMod, frmKontrolaCCP1edt, funkceTB, helTabsBIDs;
{$R *.dfm}
procedure TformKontrolaCCP1.FormResize(Sender: TObject);
var i1,i2: integer;
begin
i2:= 0;
for i1:=0 to grdCCP1.ColCount-1 do
begin
if (grdCCP1.ColWidths[i1]>1) then
begin
grdCCP1.ColWidths[i1]:= Trunc(grdCCP1.Width * colWidths[i1]);
// GridPanel2.ColumnCollection[i2].Value:= grdCCP1.Columns[i1].Width;
// Inc(i2);
end
else
grdCCP1.ColWidths[i1]:= 1;
end;
GridPanel2.Invalidate;
end;
procedure TformKontrolaCCP1.FormShow (Sender: TObject);
var i: integer;
p: Integer;
begin
grdCCP1.Options:= grdCCP1.Options - [goEditing] - [goAlwaysShowEditor];
dm.NactiCCP1 (self);
edtVyrDenDis.Text:= FormatDateTime('dd.mm.yyyy', vyrobniDen);
dtDatum.Date:= vyrobniDen;
dtTime.Time:= Now;
pnlInfo.Visible:= false;
grdCCP1.Invalidate;
self.Invalidate;
end;
procedure TformKontrolaCCP1.grdCCP1DrawCell (Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var cellRect: TRect;
t: string;
a: TAlignment;
sAlg: word;
begin
a:= grdCCP1.ColAlignments[ACol];
if not(gdFixed in State) then
if (ARow=aktRow) then
begin
grdCCP1.Canvas.Brush.Color:= $00FFC891;
// grdCCP1.Canvas.Font.Color:= clWindow;
end
else
begin
grdCCP1.Canvas.Brush.Color:= clWindow;
// grdCCP1.Canvas.Font.Color:= clBlack;
end;
if (ACol=13) then // bunka je Checkbox ?
begin
grdCCP1.Canvas.FillRect (cellRect); // Nakreslíme buňku jako prázdnou
cellRect:= Rect;
InflateRect(cellRect, -2, -2); // Zmenšíme velikost checkboxu, aby byl uvnitř buňky
checkBoxEditor.Left:= cellRect.Left;
checkBoxEditor.Top:= cellRect.Top;
checkBoxEditor.Width:= cellRect.Width;
checkBoxEditor.Height:= cellRect.Height;
checkBoxEditor.Visible:= true;
checkBoxEditor.Checked:= (grdCCP1.Cells[ACol, ARow]='1'); // Např. '1' značí zaškrtnutý checkbox
end
else
begin
// Pro ostatní sloupce nakreslíme text normálně
if (a=taCenter) then
begin
t:= grdCCP1.Cells[ACol, ARow];
sAlg:= SetTextAlign (grdCCP1.Canvas.Handle, TA_CENTER);
grdCCP1.Canvas.TextRect (Rect, Rect.Left + (Rect.Right-Rect.Left) div 2, Rect.Top + 2, t);
SetTextAlign (grdCCP1.Canvas.Handle, sAlg);
{
grdCCP1.Canvas.FillRect (cellRect); // Nakreslíme buňku jako prázdnou
cellRect:= Rect;
cellRect.Top:= cellRect.Top + 3; // adjust top to center vertical
DrawText(grdCCP1.Canvas.Handle, PChar(t), Length(t), cellRect, DT_CENTER); // draw text
}
end
else
grdCCP1.Canvas.TextRect (Rect, Rect.Left + 2, Rect.Top + 2, grdCCP1.Cells[ACol, ARow]);
end;
end;
procedure TformKontrolaCCP1.grdCCP1SelectCell (Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
var R: TRect;
t: string;
begin
CanSelect:= false;
aktCol:= ACol;
aktRow:= ARow;
if (ACol=1) then
CanSelect:= true;
end;
procedure TformKontrolaCCP1.numBoxEditorChange (Sender: TObject);
begin
// grdCCP1.Cells[grdCCP1.Col, grdCCP1.Row]:= numBoxEditor.Text;
// numBoxEditor.Visible:= False;
// grdCCP1.SetFocus;
end;
procedure TformKontrolaCCP1.numBoxEditorKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState);
var c: Boolean;
begin
if (Key=VK_RETURN) or (Key=VK_TAB) then
begin
grdCCP1.Cells[aktCol, grdCCP1.Row]:= numBoxEditor.Text;
numBoxEditor.Visible:= False;
numBoxEditor.Text:= '';
grdCCP1.SetFocus;
case aktCol of
4, 5, 6, 7: grdCCP1SelectCell(Sender, aktCol+1, grdCCP1.Row, c);
end;
end;
end;
function TformKontrolaCCP1.VisibleColsCount: Integer;
var i: integer;
begin
result:= 0;
for i:=0 to grdCCP1.ColCount-1 do
if (grdCCP1.ColWidths[i]>1) then
result:= result + 1;
end;
procedure TformKontrolaCCP1.btnAddNewClick (Sender: TObject);
var f: TformKontrolaCCP1edt;
begin
f:= TformKontrolaCCP1edt.Create(nil);
try
f.Helios:= Helios;
f.vyrobniDen:= vyrobniDen;
f.apiMod:= apiMod;
f.Position:= poDesigned;
f.Left:= self.Left + 60;
f.Top:= self.Top + 60;
f.Caption:= 'CCP1 - NOVÉ ZÁZNAMY';
f.grdCCP1.RowCount:= dm.PocetStrojuSVyrobou + 1;
f.ShowModal;
finally
f.Free;
end;
dm.NactiCCP1 (self);
end;
procedure TformKontrolaCCP1.btnQuitClick(Sender: TObject);
begin
Close;
end;
procedure TformKontrolaCCP1.checkBoxEditorClick(Sender: TObject);
begin
// Aktualizujeme hodnotu v buňce podle stavu checkboxu
if (grdCCP1.Col=13) and (grdCCP1.Row>=0) then
begin
if checkBoxEditor.Checked then
grdCCP1.Cells[grdCCP1.Col, grdCCP1.Row] := '1'
else
grdCCP1.Cells[grdCCP1.Col, grdCCP1.Row] := '0';
end;
checkBoxEditor.Visible:= false; // Skryjeme checkbox po kliknutí
end;
procedure TformKontrolaCCP1.FormCreate(Sender: TObject);
const HideScrollStyles = WS_HSCROLL;
var i1, i2: integer;
grdStyle: Integer;
begin
{ // pro TDBGrid
TMyGrid(grdCCP1).DefaultRowHeight:= 40;
TMyGrid(grdCCP1).RowHeights[0]:= 0;
TMyGrid(grdCCP1).ScrollBars:= TScrollStyle.ssVertical;
grdStyle:= GetWindowLong(grdCCP1.Handle, GWL_STYLE);
if (grdStyle and HideScrollStyles) <> 0 then
SetWindowLong(grdCCP1.Handle, GWL_STYLE, grdStyle and not HideScrollStyles);
}
{
grdCCP1.ColWidths[0]:= 0; // colID
grdCCP1.ColWidths[1]:= Trunc(GridPanel2.ColumnCollection[0].Value + GridPanel2.ColumnCollection[1].Value) - 6;
grdCCP1.ColWidths[2]:= Trunc(GridPanel2.ColumnCollection[2].Value);
grdCCP1.ColWidths[3]:= Trunc(GridPanel2.ColumnCollection[3].Value);
grdCCP1.ColWidths[4]:= Trunc(GridPanel2.ColumnCollection[4].Value);
grdCCP1.ColWidths[5]:= Trunc(GridPanel2.ColumnCollection[5].Value);
grdCCP1.ColWidths[6]:= Trunc(GridPanel2.ColumnCollection[6].Value);
grdCCP1.ColWidths[7]:= Trunc(GridPanel2.ColumnCollection[7].Value);
grdCCP1.ColWidths[8]:= Trunc(GridPanel2.ColumnCollection[8].Value);
grdCCP1.ColWidths[9]:= Trunc(GridPanel2.ColumnCollection[9].Value);
grdCCP1.ColWidths[10]:= Trunc(GridPanel2.ColumnCollection[10].Value);
grdCCP1.ColWidths[11]:= Trunc(GridPanel2.ColumnCollection[11].Value);
grdCCP1.ColWidths[12]:= Trunc(GridPanel2.ColumnCollection[12].Value);
}
grdCCP1.ColWidths[13]:= 0; // colIDNorma
grdCCP1.ColAlignments[3]:= taCenter; // smena
grdCCP1.DefaultDrawing:= false;
i2:= 0;
SetLength(colWidths, grdCCP1.ColCount);
for i1:=0 to grdCCP1.ColCount-1 do
begin
if (grdCCP1.ColWidths[i1]>0) then
begin
colWidths[i1]:= grdCCP1.ColWidths[i1] / grdCCP1.Width;
// GridPanel2.ColumnCollection[i2].SizeStyle:= ssAbsolute;
// GridPanel2.ColumnCollection[i2].Value:= grdCCP1.Columns[i1].Width;
// Inc(i2);
end
else
colWidths[i1]:= 0;
end;
end;
procedure TformKontrolaCCP1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key=VK_ESCAPE) then
Close;
end;
end.