D10gmBitao/A00通用窗体/U_LabelPrint2.pas

453 lines
13 KiB
ObjectPascal
Raw Normal View History

2025-05-24 13:44:22 +08:00
unit U_LabelPrint2;
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, dxSkinWXI;
type
TfrmLabelPrint2 = 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
frmLabelPrint2: TfrmLabelPrint2;
implementation
uses
U_DataLink, U_RTFun, U_LabelMapSet, U_printPdf, U_LabelPrint;
{$R *.dfm}
function TfrmLabelPrint2.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 TfrmLabelPrint2.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;
// JSONStr := '{"reportFileName":"","ciid":"' + MaxBLCLID + '"}';
// Request := TStringStream.Create(JSONStr);
//
// try
// HttpClient.ContentType := 'application/json';
// Response := HttpClient.Post('http://101.132.143.144:8089/datasnap/rest/TServerMethods1/RmfToPdf/', Request);
// ResponseString := Response.ContentAsString;
// JSONObject := TJSONObject.ParseJSONValue(ResponseString) as TJSONObject;
// jsonArray := TJSONArray(JSONObject.GetValue('result'));
// for i := 0 to 2 do
// begin
// JSONPair := jsonArray.Items[0].GetValue<TJSONObject>.Pairs[i];
// if JSONPair.JsonString.Value = 'code' then
// Mcode := JSONPair.JSONValue.Value;
// if JSONPair.JsonString.Value = 'pdfFileId' then
// MpdfFileId := JSONPair.JSONValue.Value;
// if JSONPair.JsonString.Value = 'message' then
// Mmessage := JSONPair.JSONValue.Value;
// end;
// if Mmessage = 'success' then
// begin
// if MIsShow then
// mprintFlag := 1
// else
// mprintFlag := 0;
//
// mprinter := ComboBox_Print.ItemIndex;
//
// printPdf(Application, 1, PChar('title'), PChar(dcode), PChar(dname), PChar(MpdfFileId), StrToIntDef(ComboBox1.Text, 1), mprintFlag, mprinter, PChar(DConString))
// end;
// finally
// Request.Free;
// HttpClient.Free;
// end;
end;
procedure TfrmLabelPrint2.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 TfrmLabelPrint2.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 TfrmLabelPrint2.btnPrintClick(Sender: TObject);
begin
if not CheckBox3.Checked then
begin
PrintLabel(False);
end
else
begin
PrintServerLabel(False);
end;
ModalResult := 1;
end;
procedure TfrmLabelPrint2.btnShowClick(Sender: TObject);
begin
if not CheckBox3.Checked then
begin
PrintLabel(true);
end
else
begin
PrintServerLabel(true);
end;
end;
procedure TfrmLabelPrint2.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 TfrmLabelPrint2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
Action := cahide;
end;
procedure TfrmLabelPrint2.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 TfrmLabelPrint2.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 TfrmLabelPrint2.TV1DblClick(Sender: TObject);
begin
ModalResult := 1;
end;
procedure TfrmLabelPrint2.FormDestroy(Sender: TObject);
begin
inherited;
frmLabelPrint2 := nil;
end;
end.