unit frmKanbanBox; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, System.StrUtils, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, RzEdit, RzBtnEdt, ddPlugin_TLB, Vcl.ExtCtrls; const tblKanBox = '[dbo].[_TabKanbanBox]'; tblKmen = '[dbo].[TabKmenZbozi]'; type TformKanbanBox = class(TForm) selCisloZbozi: TRzButtonEdit; Label1: TLabel; Label2: TLabel; lblID: TEdit; lblPopis: TLabel; edtKs: TEdit; Label3: TLabel; btnOK: TButton; btnZrus: TButton; Label4: TLabel; edtPozn: TEdit; colBarva1: TPanel; colBarva2: TPanel; procedure FormShow(Sender: TObject); procedure btnZrusClick(Sender: TObject); procedure btnOKClick(Sender: TObject); procedure selCisloZboziButtonClick(Sender: TObject); procedure edtPoznExit(Sender: TObject); procedure edtKsExit(Sender: TObject); procedure selCisloZboziExit(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private procedure NactiKmen(idKZx: Integer); safecall; public Helios: IHelios; idBox: integer; end; var formKanbanBox: TformKanbanBox; idKZ: integer; edit: boolean; mnoz: integer; implementation {$R *.dfm} procedure TformKanbanBox.btnOKClick(Sender: TObject); var lSQL: string; jeOK: boolean; begin jeOK:= true; if (edit) then begin lSQL:= 'Zmenil=SUSER_SNAME(), DatZmeny=GETDATE(), Poznamka=' + Ifthen(edtPozn.Text='','null','N' + QuotedStr(edtPozn.Text)); jeOK:= true; end else begin if (idKZ=0) then begin jeOK:= false; selCisloZbozi.SetFocus; end; lSQL:= 'idKmenZbozi=' + IntToStr(idKZ) + ',Mnozstvi=' + edtKs.Text + ',Poznamka=' + Ifthen(edtPozn.Text='','null','N' + QuotedStr(edtPozn.Text)); end; if (jeOK) then begin lSQL:= 'UPDATE ' + tblKanBox + ' SET ' + lSQL + ' WHERE id=' + IntToStr(idBox); try Helios.ExecSQL(lSQL); Helios.Refresh(true); Close; except on E:Exception do Helios.Error(#1'Chyba box ' + IntToStR(idBox) + ': '#1 + E.Message); end; end else Helios.Error(#1'Vyplňte všechny potřebné údaje...'#1); end; procedure TformKanbanBox.btnZrusClick(Sender: TObject); begin with Helios.OpenSQL('SELECT id FROM ' + tblKanBox + ' WHERE Id=' + IntToStr(idBox) + ' AND IdKmenZbozi=0') do if (RecordCount=1) then Helios.ExecSQL('DELETE FROM ' + tblKanBox + ' WHERE Id=' + IntToStr(idBox)); with Helios.OpenSQL('SELECT ISNULL(MAX(id),1) FROM ' + tblKanBox) do Helios.ExecSQL('DBCC CHECKIDENT(_TabKanbanBox, reseed, ' + VarToStr(FieldValues(0)) + ')'); Close; end; procedure TformKanbanBox.edtKsExit(Sender: TObject); begin edtKs.Text:= Trim(edtKs.Text); end; procedure TformKanbanBox.edtPoznExit(Sender: TObject); begin edtPozn.Text:= Trim(edtPozn.Text); end; procedure TformKanbanBox.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:= caFree; end; function RGBtoTColor(strRGB: string): TColor; var sR,sG,sB: string; r,g,b: byte; begin result:= 0; strRGB:= StringOfChar('0', 6-Length(strRGB)) + strRGB; sR:= LeftStr(strRGB,2); r:= StrToInt('$'+sR); sG:= MidStr(strRGB,3,2); g:= StrToInt('$'+sG); sB:= RightStr(strRGB,2); b:= StrToInt('$'+sB); result:= RGB(r,g,b); end; procedure TformKanbanBox.FormShow(Sender: TObject); var lSQL: string; begin edit:= false; selCisloZbozi.Enabled:= false; edtKs.Enabled:= false; mnoz:= 0; if (idBox>0) then begin edit:= true; lSQL:= 'SELECT kz.CisloZbozi, kz.Nazev1, kz.Id, kze._KanbanMnozstvi, b.Poznamka, kze._KanbanBarva,'; lSQL:= lSQL + ' kze._KanbanBarva2 FROM ' + tblKanBox + ' b INNER JOIN ' + tblKmen + ' kz ON (kz.Id=b.IdKmenZbozi) INNER JOIN'; lSQL:= lSQL + ' dbo.TabKmenZbozi_EXT kze ON (kze.Id=kz.Id) WHERE b.Id=' + IntToStr(idBox); with Helios.OpenSQL(lSQL) do if (RecordCount>0) then begin lblID.Text:= IntToStr(idBox); selCisloZbozi.Text:= VarToStr(FieldValues(0)); lblPopis.Caption:= VarToStr(FieldValues(1)); idKZ:= StrToInt(VarToStr(FieldValues(2))); edtKs.Text:= VarToStr(FieldValues(3)); if not(VarIsNull(FieldValues(4))) then edtPozn.Text:= Trim(VarToStr(FieldValues(4))); if not(VarIsNull(FieldValues(5))) then // colBarva1.Color:= RGBtoTColor(IntToHex(StrToInt(VarToStr(FieldValues(5))),2)); colBarva1.Color:= StrToInt(VarToStr(FieldValues(5))); if not(VarIsNull(FieldValues(6))) then // colBarva2.Color:= RGBtoTColor(IntToHex(StrToInt(VarToStr(FieldValues(6))),2)); colBarva2.Color:= StrToInt(VarToStr(FieldValues(6))); end; end else begin idBox:= 0; with Helios.OpenSQL('INSERT ' + tblKanBox + ' (Mnozstvi) VALUES (0); SELECT SCOPE_IDENTITY();') do begin lblID.Text:= VarToStr(FieldValues(0)); idBox:= StrToInt(lblID.Text); end; idKZ:= 0; lblPopis.Caption:= ''; selCisloZbozi.Enabled:= true; selCisloZbozi.Text:= ''; end; end; procedure TformKanbanBox.NactiKmen(idKZx: Integer); var lSQL: string; begin lSQL:= 'SELECT kz.RegCis, kz.Nazev1, kze._KanbanBarva, kze._KanbanBarva2, kze._KanbanMnozstvi FROM ' + tblKmen + ' kz'; lSQL:= lSQL + ' LEFT JOIN dbo.TabKmenZbozi_EXT kze ON (kze.Id=kz.Id) WHERE kz.Id=' + IntToStr(idKZx); with Helios.OpenSQL(lSQL) do begin selCisloZbozi.Text:= VarToStr(FieldValues(0)); lblPopis.Caption:= VarToStr(FieldValues(1)); if not VarIsNull(FieldValues(2)) then colBarva1.Color:= StrToInt(VarToStr(FieldValues(2))); if not VarIsNull(FieldValues(3)) then colBarva1.Color:= StrToInt(VarToStr(FieldValues(3))); if not VarIsNull(FieldValues(4)) then edtKs.Text:= VarToStr(FieldValues(4)); end; end; procedure TformKanbanBox.selCisloZboziButtonClick(Sender: TObject); var oVar: OleVariant; begin if Helios.Prenos(2,'TabKmenZbozi.id',oVar,'TabKmenZbozi.Blokovano=0','Vyberte položku',true) then begin idKZ:= StrToInt(VarToStr(oVar)); NactiKmen(idKZ); end; end; procedure TformKanbanBox.selCisloZboziExit(Sender: TObject); begin selCisloZbozi.Text:= Trim(selCisloZbozi.Text); if (selCisloZbozi.Text<>'') and (idKZ=0) then begin with Helios.OpenSQL('SELECT id FROM ' + tblKmen + ' WHERE RegCis=N' + QuotedStr(selCisloZbozi.Text)) do if (RecordCount=1) then begin idKZ:= StrToInt(VarToStr(FieldValues(0))); NactiKmen(idKZ); end; end; end; end.