D10gmBitao/A00通用窗体/U_LabelPrint2.pas
DESKTOP-E401PHE\Administrator 60bf657754 1234
2025-05-24 13:44:22 +08:00

453 lines
13 KiB
ObjectPascal
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.