421 lines
11 KiB
ObjectPascal
421 lines
11 KiB
ObjectPascal
|
|
unit U_LabelPrint;
|
|||
|
|
|
|||
|
|
interface
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|||
|
|
Vcl.Printers, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
|
|||
|
|
cxDataStorage, cxEdit, DB, cxDBData, ToolWin, ComCtrls, U_BaseHelp,
|
|||
|
|
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridLevel,
|
|||
|
|
cxClasses, cxControls, cxGridCustomView, cxGrid, DBClient, ADODB, ImgList,
|
|||
|
|
StdCtrls, ExtCtrls, cxTextEdit, cxGridCustomPopupMenu, cxGridPopupMenu,
|
|||
|
|
cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxDateRanges,
|
|||
|
|
dxBarBuiltInMenu, System.ImageList, U_BaseInput, RM_Common, RM_Class,
|
|||
|
|
RM_GridReport, RM_Dataset, Vcl.Buttons, RM_E_llPDF, RM_BarCode, RM_e_Graphic,
|
|||
|
|
RM_e_Jpeg, RM_e_Xls, cxContainer, cxMaskEdit, cxDropDownEdit, cxMRUEdit,
|
|||
|
|
System.Net.HttpClient, System.Net.HttpClientComponent, System.JSON,
|
|||
|
|
dxSkinsCore, dxSkinsDefaultPainters;
|
|||
|
|
|
|||
|
|
type
|
|||
|
|
TfrmLabelPrint = class(TfrmBaseHelp)
|
|||
|
|
ADOQueryTemp: TADOQuery;
|
|||
|
|
ADOConnection1: TADOConnection;
|
|||
|
|
Panel1: TPanel;
|
|||
|
|
ImageList1: TImageList;
|
|||
|
|
RMDB_1: TRMDBDataSet;
|
|||
|
|
RM1: TRMGridReport;
|
|||
|
|
RMDB_2: TRMDBDataSet;
|
|||
|
|
CDS_Label: TClientDataSet;
|
|||
|
|
ADO_1: TADOQuery;
|
|||
|
|
btnShow: TSpeedButton;
|
|||
|
|
ADO_2: TADOQuery;
|
|||
|
|
RMDB_3: TRMDBDataSet;
|
|||
|
|
ADO_3: TADOQuery;
|
|||
|
|
RMXLSExport1: TRMXLSExport;
|
|||
|
|
RMJPEGExport1: TRMJPEGExport;
|
|||
|
|
RMBarCodeObject1: TRMBarCodeObject;
|
|||
|
|
RMllPDFExport1: TRMllPDFExport;
|
|||
|
|
CheckBox1: TCheckBox;
|
|||
|
|
Label1: TLabel;
|
|||
|
|
cbbLab: TcxMRUEdit;
|
|||
|
|
CheckBox2: TCheckBox;
|
|||
|
|
CheckBox3: TCheckBox;
|
|||
|
|
ADOQueryCmd: TADOQuery;
|
|||
|
|
ADO_While: TADOQuery;
|
|||
|
|
ComboBox1: TcxComboBox;
|
|||
|
|
ComboBox_Print: TcxComboBox;
|
|||
|
|
btnPrint: TSpeedButton;
|
|||
|
|
procedure FormCreate(Sender: TObject);
|
|||
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|||
|
|
procedure FormShow(Sender: TObject);
|
|||
|
|
procedure FormDestroy(Sender: TObject);
|
|||
|
|
procedure TV1DblClick(Sender: TObject);
|
|||
|
|
procedure btnPrintClick(Sender: TObject);
|
|||
|
|
procedure btnShowClick(Sender: TObject);
|
|||
|
|
procedure cbbLabPropertiesButtonClick(Sender: TObject);
|
|||
|
|
private
|
|||
|
|
procedure InitGrid();
|
|||
|
|
procedure PrintLabel(MIsShow: Boolean);
|
|||
|
|
procedure PrintServerLabel(MIsShow: Boolean);
|
|||
|
|
function JsonGetChildValue(JsonStr, KeyName: string): string;
|
|||
|
|
{ Private declarations }
|
|||
|
|
public
|
|||
|
|
FPreviewPrint, IsSql1, IsSql2, IsSql3: Boolean;
|
|||
|
|
FLMType: string; //<2F><>ǩ<EFBFBD><C7A9><EFBFBD><EFBFBD>
|
|||
|
|
FFiltration1, FFiltration2, FFiltration3: string;
|
|||
|
|
FparamBlclid: string;
|
|||
|
|
{ Public declarations }
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
var
|
|||
|
|
frmLabelPrint: TfrmLabelPrint;
|
|||
|
|
|
|||
|
|
implementation
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
U_DataLink, U_RTFun, U_LabelMapSet, U_printPdf;
|
|||
|
|
|
|||
|
|
{$R *.dfm}
|
|||
|
|
function TfrmLabelPrint.JsonGetChildValue(JsonStr, KeyName: string): string;
|
|||
|
|
var
|
|||
|
|
JSONObject: TJSONObject; // JSON<4F><4E>
|
|||
|
|
JSONPair: TJSONPair;
|
|||
|
|
i, Cloint: integer;
|
|||
|
|
Z, X: string;
|
|||
|
|
begin
|
|||
|
|
Result := '';
|
|||
|
|
JSONObject := TJSONObject.ParseJSONValue(JsonStr) as TJSONObject;
|
|||
|
|
Cloint := JSONObject.Count;
|
|||
|
|
for i := 0 to Cloint - 1 do
|
|||
|
|
begin
|
|||
|
|
JSONPair := JSONObject.Pairs[i];
|
|||
|
|
Z := JSONPair.JsonString.Value;
|
|||
|
|
X := JSONPair.JSONValue.Value;
|
|||
|
|
if JSONPair.JsonString.Value = KeyName then
|
|||
|
|
Result := JSONPair.JSONValue.Value;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrmLabelPrint.PrintServerLabel(MIsShow: Boolean);
|
|||
|
|
var
|
|||
|
|
MaxBLCLID, LBName: string;
|
|||
|
|
WBoolean: Boolean;
|
|||
|
|
HttpClient: THttpClient;
|
|||
|
|
Request: TStringStream;
|
|||
|
|
Response: IHTTPResponse;
|
|||
|
|
ResponseString: string;
|
|||
|
|
jsonArray: TJSONArray; // JSON<4F><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
JSONObject: TJSONObject; // JSON<4F><4E>
|
|||
|
|
JSONPair: TJSONPair;
|
|||
|
|
JSONStr: string;
|
|||
|
|
i: Integer;
|
|||
|
|
Mmessage, MpdfFileId, Mcode: string;
|
|||
|
|
mprintFlag, mprinter: Integer;
|
|||
|
|
begin
|
|||
|
|
if CDS_Label.IsEmpty then
|
|||
|
|
begin
|
|||
|
|
Application.MessageBox(PChar('<27><><EFBFBD><EFBFBD>' + FLMType + 'û<><C3BB><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD>ǩ!'), '<27><>ʾ', 0);
|
|||
|
|
Exit;
|
|||
|
|
end;
|
|||
|
|
LBName := cbbLab.text;
|
|||
|
|
|
|||
|
|
if CDS_Label.Locate('LMName', LBName, []) then
|
|||
|
|
begin
|
|||
|
|
if GetLSNo(ADOQueryCmd, MaxBLCLID, 'X', 'Bs_Report_Cloud_Log', 4, 1) = False then
|
|||
|
|
begin
|
|||
|
|
ADOQueryCmd.Connection.RollbackTrans;
|
|||
|
|
Application.MessageBox('ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>', '<27><>ʾ', 0);
|
|||
|
|
Exit;
|
|||
|
|
end;
|
|||
|
|
with ADOQueryCmd do
|
|||
|
|
begin
|
|||
|
|
Close;
|
|||
|
|
SQL.Clear;
|
|||
|
|
sql.Add('select * from Bs_Report_Cloud_Log where 1=2');
|
|||
|
|
Open;
|
|||
|
|
end;
|
|||
|
|
with ADOQueryCmd do
|
|||
|
|
begin
|
|||
|
|
Append;
|
|||
|
|
FieldByName('BLCLID').Value := MaxBLCLID;
|
|||
|
|
FieldByName('Filler').Value := dname;
|
|||
|
|
FieldByName('LMName').Value := trim(CDS_Label.fieldbyname('LMName').AsString);
|
|||
|
|
FieldByName('LMSql1').Value := trim(CDS_Label.fieldbyname('LMSql1').AsString);
|
|||
|
|
FieldByName('LMSql2').Value := trim(CDS_Label.fieldbyname('LMSql2').AsString);
|
|||
|
|
FieldByName('LMSql3').Value := trim(CDS_Label.fieldbyname('LMSql3').AsString);
|
|||
|
|
FieldByName('Filtration1').Value := Trim(FFiltration1);
|
|||
|
|
FieldByName('Filtration2').Value := Trim(FFiltration2);
|
|||
|
|
FieldByName('Filtration3').Value := Trim(FFiltration3);
|
|||
|
|
FieldByName('IsSql1').Value := IsSql1;
|
|||
|
|
FieldByName('IsSql2').Value := IsSql2;
|
|||
|
|
FieldByName('IsSql3').Value := IsSql3;
|
|||
|
|
FieldByName('Sheets').Value := strtointdef(ComboBox1.Text, 1);
|
|||
|
|
FieldByName('paramBlclid').Value := StrToFloatDef(FparamBlclid, 0);
|
|||
|
|
Post;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
if MIsShow then
|
|||
|
|
mprintFlag := 1
|
|||
|
|
else
|
|||
|
|
mprintFlag := 0;
|
|||
|
|
|
|||
|
|
mprinter := ComboBox_Print.ItemIndex;
|
|||
|
|
printPdf(Application, 1, PChar('title'), PChar(dcode), PChar(dname), PChar(MaxBLCLID), StrToIntDef(ComboBox1.Text, 1), mprintFlag, mprinter, PChar(DConString))// HttpClient := THttpClient.Create;
|
|||
|
|
|
|||
|
|
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrmLabelPrint.PrintLabel(MIsShow: Boolean);
|
|||
|
|
var
|
|||
|
|
fPrintFile, fPrintFile10, FMainID, LBName: string;
|
|||
|
|
begin
|
|||
|
|
if CDS_Label.IsEmpty then
|
|||
|
|
begin
|
|||
|
|
Application.MessageBox(PChar('<27><><EFBFBD><EFBFBD>' + FLMType + 'û<><C3BB><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD>ǩ!'), '<27><>ʾ', 0);
|
|||
|
|
Exit;
|
|||
|
|
end;
|
|||
|
|
RMllPDFExport1.ShowDialog := CheckBox2.Checked;
|
|||
|
|
RMJPEGExport1.ShowDialog := CheckBox2.Checked;
|
|||
|
|
RMXLSExport1.ShowDialog := CheckBox2.Checked;
|
|||
|
|
RM1.ShowPrintDialog := CheckBox1.Checked;
|
|||
|
|
|
|||
|
|
LBName := cbbLab.text;
|
|||
|
|
ExportFtErpFile(LBName + '.rmf', ADOQueryTemp);
|
|||
|
|
|
|||
|
|
if CDS_Label.Locate('LMName', LBName, []) then
|
|||
|
|
begin
|
|||
|
|
|
|||
|
|
if trim(CDS_Label.fieldbyname('LMSql1').AsString) <> '' then
|
|||
|
|
begin
|
|||
|
|
with ADO_1 do
|
|||
|
|
begin
|
|||
|
|
Close;
|
|||
|
|
sql.Clear;
|
|||
|
|
if IsSql1 then
|
|||
|
|
begin
|
|||
|
|
sql.add('exec ' + trim(CDS_Label.fieldbyname('LMSql1').AsString));
|
|||
|
|
sql.add(FFiltration1);
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
begin
|
|||
|
|
sql.add('exec ' + trim(CDS_Label.fieldbyname('LMSql1').AsString) + ' @Filtration=' + quotedstr(Trim(FFiltration1)));
|
|||
|
|
end;
|
|||
|
|
Open;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
if trim(CDS_Label.fieldbyname('LMSql2').AsString) <> '' then
|
|||
|
|
begin
|
|||
|
|
with ADO_2 do
|
|||
|
|
begin
|
|||
|
|
Close;
|
|||
|
|
sql.Clear;
|
|||
|
|
if IsSql1 then
|
|||
|
|
begin
|
|||
|
|
sql.add('exec ' + trim(CDS_Label.fieldbyname('LMSql2').AsString));
|
|||
|
|
sql.add(FFiltration2);
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
begin
|
|||
|
|
sql.add('exec ' + trim(CDS_Label.fieldbyname('LMSql2').AsString) + ' @Filtration=' + quotedstr(Trim(FFiltration2)));
|
|||
|
|
end;
|
|||
|
|
Open;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
if trim(CDS_Label.fieldbyname('LMSql3').AsString) <> '' then
|
|||
|
|
begin
|
|||
|
|
with ADO_3 do
|
|||
|
|
begin
|
|||
|
|
Close;
|
|||
|
|
sql.Clear;
|
|||
|
|
if IsSql1 then
|
|||
|
|
begin
|
|||
|
|
sql.add('exec ' + trim(CDS_Label.fieldbyname('LMSql3').AsString));
|
|||
|
|
sql.add(FFiltration3);
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
begin
|
|||
|
|
sql.add('exec ' + trim(CDS_Label.fieldbyname('LMSql3').AsString) + ' @Filtration=' + quotedstr(Trim(FFiltration3)));
|
|||
|
|
end;
|
|||
|
|
Open;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
end;
|
|||
|
|
fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + LBName + '.rmf';
|
|||
|
|
if FileExists(fPrintFile) then
|
|||
|
|
begin
|
|||
|
|
|
|||
|
|
RM1.LoadFromFile(fPrintFile);
|
|||
|
|
RM1.DefaultCopies := StrToIntDef(ComboBox1.Text, 1);
|
|||
|
|
RMVariables['LBPrtCode'] := dcode;
|
|||
|
|
RMVariables['LBPrtName'] := dname;
|
|||
|
|
if MIsShow then
|
|||
|
|
RM1.ShowReport
|
|||
|
|
else
|
|||
|
|
RM1.PrintReport;
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
begin
|
|||
|
|
Application.MessageBox(PChar('û<><C3BB><EFBFBD><EFBFBD>' + fPrintFile), '<27><>ʾ', 0);
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrmLabelPrint.FormCreate(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
FPreviewPrint := True;
|
|||
|
|
try
|
|||
|
|
with ADOConnection1 do
|
|||
|
|
begin
|
|||
|
|
Connected := false;
|
|||
|
|
ConnectionString := DConString;
|
|||
|
|
Connected := true;
|
|||
|
|
end;
|
|||
|
|
ADOQueryBaseCmd.Connection := ADOConnection1;
|
|||
|
|
ADOQueryBaseTemp.Connection := ADOConnection1;
|
|||
|
|
except
|
|||
|
|
{if Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>,<2C>Ƿ<EFBFBD>Ҫ<EFBFBD>ٴ<EFBFBD><D9B4><EFBFBD><EFBFBD><EFBFBD>?','<27><>ʾ',32+4)=IDYES then
|
|||
|
|
begin
|
|||
|
|
try
|
|||
|
|
with ADOConnection1 do
|
|||
|
|
begin
|
|||
|
|
Connected:=false;
|
|||
|
|
ConnectionString:=DConString;
|
|||
|
|
//ConnectionString:='23242';
|
|||
|
|
Connected:=true;
|
|||
|
|
end;
|
|||
|
|
except
|
|||
|
|
end;
|
|||
|
|
end; }
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrmLabelPrint.btnPrintClick(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
if not CheckBox3.Checked then
|
|||
|
|
begin
|
|||
|
|
PrintLabel(False);
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
begin
|
|||
|
|
PrintServerLabel(False);
|
|||
|
|
end;
|
|||
|
|
ModalResult := 1;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrmLabelPrint.btnShowClick(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
if not CheckBox3.Checked then
|
|||
|
|
begin
|
|||
|
|
PrintLabel(true);
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
begin
|
|||
|
|
PrintServerLabel(true);
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrmLabelPrint.cbbLabPropertiesButtonClick(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
|
|||
|
|
try
|
|||
|
|
frmLabelMapSet := TfrmLabelMapSet.Create(Application);
|
|||
|
|
with frmLabelMapSet do
|
|||
|
|
begin
|
|||
|
|
IsSql1 := self.IsSql1;
|
|||
|
|
IsSql2 := self.IsSql2;
|
|||
|
|
IsSql3 := self.IsSql3;
|
|||
|
|
FFiltration1 := self.FFiltration1;
|
|||
|
|
FFiltration2 := self.FFiltration2;
|
|||
|
|
FFiltration3 := self.FFiltration3;
|
|||
|
|
FLMType := self.FLMType;
|
|||
|
|
if ShowModal = 1 then
|
|||
|
|
begin
|
|||
|
|
Self.InitGrid();
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
finally
|
|||
|
|
frmLabelMapSet.Free;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrmLabelPrint.FormClose(Sender: TObject; var Action: TCloseAction);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
Action := cahide;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrmLabelPrint.InitGrid();
|
|||
|
|
begin
|
|||
|
|
|
|||
|
|
with ADOQueryTemp do
|
|||
|
|
begin
|
|||
|
|
close;
|
|||
|
|
sql.Clear;
|
|||
|
|
sql.Add('select LMName name from BS_Label_Map where LMType=' + QuotedStr(TRIM(FLMType)));
|
|||
|
|
sql.Add(' order by SerialNo ');
|
|||
|
|
Open;
|
|||
|
|
if isEmpty then
|
|||
|
|
begin
|
|||
|
|
exit;
|
|||
|
|
end;
|
|||
|
|
cbbLab.Properties.LookupItems.Clear;
|
|||
|
|
while not Eof do
|
|||
|
|
begin
|
|||
|
|
|
|||
|
|
cbbLab.Properties.LookupItems.Add(Trim(fieldByName('Name').AsString));
|
|||
|
|
Next;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
cbbLab.ItemIndex := 0;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
with ADOQueryTemp do
|
|||
|
|
begin
|
|||
|
|
Filtered := False;
|
|||
|
|
Close;
|
|||
|
|
sql.Clear;
|
|||
|
|
Sql.Add('select * from BS_Label_Map where LMType=' + QuotedStr(TRIM(FLMType)));
|
|||
|
|
Open;
|
|||
|
|
end;
|
|||
|
|
SCreateCDS(ADOQueryTemp, CDS_Label);
|
|||
|
|
SInitCDSData(ADOQueryTemp, CDS_Label);
|
|||
|
|
if CDS_Label.IsEmpty then
|
|||
|
|
begin
|
|||
|
|
Application.MessageBox(PChar('<27><><EFBFBD><EFBFBD>' + FLMType + 'û<><C3BB><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD>ǩ!'), '<27><>ʾ', 0);
|
|||
|
|
Exit;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrmLabelPrint.FormShow(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
if FPreviewPrint then
|
|||
|
|
RM1.PreviewButtons := [rmpbZoom, rmpbLoad, rmpbSave, rmpbPrint, rmpbFind, rmpbPageSetup, rmpbExit, rmpbSaveToXLS, rmpbExport, rmpbNavigator]
|
|||
|
|
else
|
|||
|
|
RM1.PreviewButtons := [rmpbZoom, rmpbLoad, rmpbSave, rmpbFind, rmpbPageSetup, rmpbExit, rmpbSaveToXLS, rmpbExport, rmpbNavigator];
|
|||
|
|
|
|||
|
|
if Trim(FFiltration2) = '' then
|
|||
|
|
FFiltration2 := FFiltration1;
|
|||
|
|
if Trim(FFiltration3) = '' then
|
|||
|
|
FFiltration3 := FFiltration1;
|
|||
|
|
ComboBox_Print.Properties.Items.Assign(printer.Printers);
|
|||
|
|
InitGrid();
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrmLabelPrint.TV1DblClick(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
ModalResult := 1;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrmLabelPrint.FormDestroy(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
frmLabelPrint := nil;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
end.
|
|||
|
|
|