unit frmPolozkyMD; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, ddPlugin_TLB, Vcl.ControlList, ES.ControlListControls, datModul, Vcl.TitleBarCtrls, Vcl.Grids; type TformPolozkyMD = class(TForm) Panel1: TPanel; btnNaPilu: TButton; btnStorno: TButton; ctrlPolozkyMD: TControlList; lblDeleni: TLabel; lblNadoba: TLabel; lblRegCisPrikaz: TLabel; lblRadaPrikaz: TLabel; lblRezatUhel: TLabel; Label2: TLabel; Label3: TLabel; lblNadobaSort: TLabel; custTitleBar: TTitleBarPanel; Label1: TLabel; lblMaterial: TLabel; lblRegCis: TLabel; Label4: TLabel; grdAltMaterial: TStringGrid; lblAltMatCapt: TLabel; lblSkladem: TLabel; lblDelkaCelkem: TLabel; Label5: TLabel; lblRadaPrikazFin: TLabel; lblRegCisPrikazFin: TLabel; procedure btnStornoClick (Sender: TObject); procedure FormCreate(Sender: TObject); procedure btnNaPiluClick(Sender: TObject); procedure ctrlPolozkyMDBeforeDrawItem(AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState); procedure FormShow(Sender: TObject); procedure grdAltMaterialDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); procedure grdAltMaterialMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private procedure NactiAlternativy; public Helios: IHelios; idMatDavky: integer; mrVal: integer; dm: Tdm; mForm: TForm; selRC: string; end; var formPolozkyMD: TformPolozkyMD; idKZMatDavky: integer; idKZ, idKZAlt, idPrKVazby: integer; aktR, aktC: integer; implementation uses Vcl.Clipbrd, helUtils; {$R *.dfm} procedure TformPolozkyMD.NactiAlternativy; var lSQL, popisMat: string; i, idAlt: integer; mnozSkl: Extended; begin lblAltMatCapt.Font.Color:= clWindowText; idKZAlt:= 0; idKZ:= idKZMatDavky; lSQL:= 'SELECT IDKZNahrada FROM ' + tblAlterKZ + ' WHERE IDKmeneZbozi=' + idKZMatDavky.ToString; lSQL:= lSQL + ' ORDER BY Priorita'; with Helios.OpenSQL(lSQL) do begin lblAltMatCapt.Visible:= (RecordCount>0); grdAltMaterial.Visible:= lblAltMatCapt.Visible; Panel1.Top:= lblRegCis.Top + lblRegCis.Height + 5; lblDelkaCelkem.Top:= Panel1.Top + Panel1.Height + 5; btnNaPilu.Top:= lblDelkaCelkem.Top + lblDelkaCelkem.Height + 10; btnStorno.Top:= btnNaPilu.Top; if (RecordCount>0) then begin lblAltMatCapt.Font.Color:= clRed; grdAltMaterial.RowCount:= RecordCount; First; i:= 0; while not(EOF) do begin idAlt:= VarToStr(FieldByNameValues('IDKZNahrada')).ToInteger; idKZAlt:= idAlt; grdAltMaterial.Cells[0, i]:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RegCis FROM ' + tblKZ + ' WHERE ID=' + idAlt.ToString); lSQL:= 'SELECT ISNULL(_Rozmer, N'''') + N'' '' + ISNULL(_S1_X, N'''') + N'' / '' + ISNULL(_JakostMaterialu, N'''') FROM ' + tblKZe + ' WHERE ID=' + idAlt.ToString; lSQL:= 'SELECT ISNULL(_JakostMaterialu, N'''') FROM ' + tblKZe + ' WHERE ID=' + idAlt.ToString; popisMat:= helUtils.getHeliosStrVal(Helios, '', lSQL); if (popisMat<>'') then grdAltMaterial.Cells[1, i]:= ' ' + popisMat else grdAltMaterial.Cells[1, i]:= ' ' + helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev1 FROM ' + tblKZ + ' WHERE ID=' + idAlt.ToString); lSQL:= 'SELECT Mnozstvi FROM ' + tblSS + ' WHERE IDSklad=N' + datModul.sklMat.QuotedString + ' AND Mnozstvi>0 AND IDKmenZbozi=' + idAlt.ToString; mnozSkl:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); grdAltMaterial.Cells[2, i]:= ' ' + mnozSkl.ToString + ' ' + helUtils.getHeliosStrVal(Helios, '', 'SELECT MJEvidence FROM ' + tblKZ + ' WHERE ID=' + idAlt.ToString); Inc(i); Next; end; grdAltMaterial.Height:= (grdAltMaterial.DefaultRowHeight * grdAltMaterial.RowCount) + 10; Panel1.Top:= grdAltMaterial.Top + grdAltMaterial.Height + 5; lblDelkaCelkem.Top:= Panel1.Top + Panel1.Height + 5; btnNaPilu.Top:= lblDelkaCelkem.Top + lblDelkaCelkem.Height + 10; btnStorno.Top:= btnNaPilu.Top; end; end; end; procedure TformPolozkyMD.btnNaPiluClick (Sender: TObject); var lSQL, d: string; begin if not(dm.tblPila.Active) then dm.tblPila.Open; d:= helUtils.getHeliosStrVal(Helios, '', 'SELECT CisloDavky FROM ' + tblRezPredpisPily + ' WHERE CisloDavky IS NOT NULL AND LoginName=SUSER_SNAME() AND Aktivni=1'); lSQL:= 'SELECT 1 AS A FROM ' + tblMatDavkyH + ' WHERE LoginName=SUSER_SNAME() AND NaPile=1'; if (helUtils.sqlExistsTestGeneral(Helios, lSQL)) then Helios.Error ('Uživatel ' + #1 + datModul.sqlUserName + #1 + ' už má zahájenou dávku č.' + d + ', nelze zpracovat další dávku !') else begin // dopln vazby na alternativu mrVal:= 1; Close; end; end; procedure TformPolozkyMD.btnStornoClick (Sender: TObject); begin Close; end; procedure TformPolozkyMD.ctrlPolozkyMDBeforeDrawItem (AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState); var lSQL, sz, rc, oper, szFin, rcFin: string; uhel, mnoz: Extended; idPrKV, idVPr, idKZFin, dokl, idDilec: integer; begin { // pokud je povoleno, neni videt vyber polozky v seznamu // Nastavení barvy pera pro rámeček ACanvas.Pen.Color:= clBlack; ACanvas.Pen.Width:= 1; // Šířka rámečku // Nakreslení rámečku kolem položky ACanvas.Rectangle(ARect); } try dm.tblPolozkyMD.RecNo:= AIndex + 1; // AIndex zero-based // lblMaterial.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colNazev1').Value).Trim; // lblPozice.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colPozice').Value).Trim; // lblRegCis.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colRegCis').Value) + ' ' + VarToStr(dm.tblPolozkyMD.FieldByName('colRozmer').Value).Trim // + '/' + VarToStr(dm.tblPolozkyMD.FieldByName('colSilaMat').Value) + ' ' + VarToStr(dm.tblPolozkyMD.FieldByName('colJakostMat').Value); lblDeleni.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colKs').Value) + ' x ' + VarToStr(dm.tblPolozkyMD.FieldByName('colDelka').Value) + ' mm '; lblNadoba.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colNadoba').Value); lblRegCisPrikaz.Caption:= '' + VarToStr(dm.tblPolozkyMD.FieldByName('colRegCisPrikaz').Value).Trim; lblRadaPrikaz.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colRadaPrikaz').Value).Trim; // lblPrumer.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colPrumer').Value).Trim; // lblTloustka.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colSilaMat').Value).Trim; idPrKV:= dm.tblPolozkyMD.FieldByName('colIDPrKVazby').AsInteger; idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrKVaz + ' WHERE ID=' + idPrKV.ToString); with Helios.OpenSQL('SELECT RadaPrikaz, IDTabKmen FROM ' + tblVPr + ' WHERE ID=(SELECT IDPrikazRidici FROM ' + tblVPr + ' WHERE ID=' + idVPr.ToString + ')') do if (RecordCount=1) then begin lblRadaPrikazFin.Caption:= VarToStr(FieldByNameValues('RadaPrikaz')); idKZFin:= VarToStr(FieldByNameValues('IDTabKmen')).ToInteger; lblRegCisPrikazFin.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT SkupZbo + N'' '' + RegCis FROM ' + tblKZ + ' WHERE ID=' + idKZfin.ToString); end; if (idKZ<>idKZAlt) and (idKZAlt>0) then begin lSQL:= ''; oper:= helUtils.getHeliosStrVal(Helios, '', 'SELECT operace FROM ' + tblPrKVaz + ' WHERE ID=' + idPrKV.ToString); dokl:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT Doklad FROM ' + tblPrKVaz + ' WHERE ID=' + idPrKV.ToString); idDilec:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT vyssi FROM ' + tblPrKVaz + ' WHERE ID=' + idPrKV.ToString); mnoz:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT mnoz_zad FROM ' + tblPrKVaz + ' WHERE ID=' + idPrKV.ToString); lSQL:= 'SELECT 1 FROM ' + tblPrKVaz + ' WHERE IDPrikaz=' + idVPr.ToString + ' AND IDOdchylkyDo IS NULL AND Doklad=' + dokl.ToString + ' AND nizsi=' + idKZAlt.ToString; lSQL:= lSQL + ' AND vyssi=' + idDilec.ToString; if not(helUtils.sqlExistsTestGeneral(Helios, lSQL)) and (oper<>'') then begin lSQL:= 'EXEC dbo.hp_NewPozadavek_TabPrKVazby @IDPrikaz=' + idVPr.ToString + ', @IDKmenZbozi=' + idKZAlt.ToString + ', @Operace=N' + oper.QuotedString + ', @Mnozstvi='; lSQL:= lSQL + mnoz.ToString.Replace(',', '.') + ', @Mnoz_zad=' + mnoz.ToString.Replace(',', '.') + ', @Alt_K_Dokladu=' + dokl.ToString; try Helios.ExecSQL (lSQL); finally end; end; end; lblRezatUhel.Caption:= ''; sz:= VarToStr(dm.tblPolozkyMD.FieldByName('colSZPrikaz').Value).Trim; rc:= VarToStr(dm.tblPolozkyMD.FieldByName('colRegCisPrikaz').Value).Trim; if (sz<>'') and (rc<>'') then begin lSQL:= 'SELECT TOP(1) Uhel FROM dbo.hvw_ADE_INSERT_VYROBA WHERE SkupZbo=N' + sz.QuotedString + ' AND RegCis=N' + rc.QuotedString + ' AND LastRec=1 AND StavPolozky=N''50'''; uhel:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); if (uhel>1) then lblRezatUhel.Caption:= 'úhel ' + uhel.ToString; end; except end; end; procedure TformPolozkyMD.FormCreate (Sender: TObject); begin mrVal:= 0; end; procedure TformPolozkyMD.FormShow (Sender: TObject); var lSQL, c, mj, pr: string; begin grdAltMaterial.ColWidths[0]:= 150; grdAltMaterial.ColWidths[1]:= 130; grdAltMaterial.ColWidths[2]:= 110; idKZMatDavky:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDKmenZboziMat FROM ' + tblMatDavkyH + ' WHERE ID=' + idMatDavky.ToString); lSQL:= 'SELECT Mnozstvi FROM ' + tblSS + ' WHERE IDKmenZbozi=' + idKZMatDavky.ToString + ' AND IDSklad=N' + QuotedStr('1030'); c:= helUtils.getHeliosStrVal(Helios, '0', lSQL); mj:= helUtils.getHeliosStrVal(Helios, '', 'SELECT MJEvidence FROM ' + tblKZ + ' WHERE ID=' + idKZMatDavky.ToString); lblSkladem.Caption:= c + ' ' + mj; if (c='0') then lblSkladem.Font.Color:= clRed else lblSkladem.Font.Color:= clWindowText; dm.NactiPolozkyMatDavky (idMatDavky, self); ctrlPolozkyMD.ItemCount:= dm.tblPolozkyMD.RecordCount; c:= ' Materiálová dávka č. ' + helUtils.getHeliosStrVal(Helios, '', 'SELECT Cislo FROM ' + tblMatDavkyH + ' WHERE ID=' + idMatDavky.ToString); { if (dm.tblPolozkyMD.RecordCount>0) then c:= c + ' / materiál ' + dm.tblPolozkyMD.FieldByName('colSZ').AsString + ' ' + dm.tblPolozkyMD.FieldByName('colRegCis').AsString + ' - ' + dm.tblPolozkyMD.FieldByName('colNazev1').AsString + ' / jakost ' + dm.tblPolozkyMD.FieldByName('colJakostMat').AsString + ' / prumer ' + dm.tblPolozkyMD.FieldByName('colPrumer').AsString; } self.Caption:= c; dm.tblPolozkyMD.First; lblMaterial.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colNazev1').Value).Trim; // lblPozice.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colPozice').Value).Trim; lblRegCis.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colRegCis').Value) + ' ' + VarToStr(dm.tblPolozkyMD.FieldByName('colRozmer').Value).Trim + '/' + VarToStr(dm.tblPolozkyMD.FieldByName('colSilaMat').Value) + ' ' + VarToStr(dm.tblPolozkyMD.FieldByName('colJakostMat').Value); pr:= dm.tblPolozkyMD.FieldByName('colPrumer').AsString; if (pr<>'') then lblRegCis.Caption:= lblRegCis.Caption + ' / průměr ' + pr; NactiAlternativy; lblDelkaCelkem.Caption:= 'celkem ' + (dm.SumaDelkyMatDavky (idMatDavky)/1000).ToString + ' ' + mj; end; procedure TformPolozkyMD.grdAltMaterialDrawCell (Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var o: string; begin grdAltMaterial.Canvas.Font.Color:= clWindowText; if (ACol=2) then begin o:= grdAltMaterial.Cells[ACol, ARow]; if (o.Trim='0 m') then grdAltMaterial.Canvas.Font.Color:= clRed; grdAltMaterial.Canvas.FillRect (Rect); grdAltMaterial.Canvas.TextRect(Rect, Rect.Left, Rect.Top-4, o); end; end; procedure TformPolozkyMD.grdAltMaterialMouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if (ssShift in Shift) then begin grdAltMaterial.MouseToCell (X, Y, aktC, aktR); selRC:= grdAltMaterial.Cells[aktC, aktR].Trim; Clipboard.AsText:= selRC; end; end; end.