RTFormwork/public10/design/U_TradeDetailBaseList.pas
“ddf” f2a94cb7b0 1
2024-11-15 17:18:34 +08:00

416 lines
12 KiB
ObjectPascal
Raw Permalink 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_TradeDetailBaseList;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.ToolWin, cxGraphics,
cxControls, cxLookAndFeels, cxLookAndFeelPainters, U_WindowFormdesign,
cxStyles, cxCustomData, cxFilter, cxData,
cxDataStorage, cxEdit, cxNavigator, dxDateRanges, dxScrollbarAnnotations,
Data.DB, cxDBData, cxGridLevel, cxGridCustomTableView, cxGridTableView,
cxGridDBTableView, cxClasses, cxGridCustomView, cxGrid, Data.Win.ADODB,math,
dxBarBuiltInMenu, cxGridCustomPopupMenu, cxGridPopupMenu, cxCheckBox,
cxContainer, dxCore, cxDateUtils, dxLayoutcxEditAdapters, dxLayoutContainer,
cxMaskEdit, cxDropDownEdit, cxCalendar, cxTextEdit, dxLayoutControl,
FrameDateSel, Datasnap.DBClient, cxMemo, Vcl.StdCtrls, Vcl.ExtCtrls,
cxGeometry, dxFramedControl, dxPanel, cxSplitter, cxButtonEdit;
type
TfrmTradeDetailBaseList = class(TForm)
ToolBar3: TToolBar;
Trefresh: TToolButton;
Tprint: TToolButton;
TprintGrid: TToolButton;
TsaveGrid: TToolButton;
Tclose: TToolButton;
cxGrid1: TcxGrid;
tv1: TcxGridDBTableView;
tv1custName: TcxGridDBColumn;
tv1OrderNo: TcxGridDBColumn;
tv1ConNo: TcxGridDBColumn;
cxGrid1Level1: TcxGridLevel;
DataSource1: TDataSource;
ADOQueryMain: TADOQuery;
cxGridPopupMenu1: TcxGridPopupMenu;
ADOQueryBaseCmd: TADOQuery;
ADOQueryBaseTemp: TADOQuery;
tv1SSel: TcxGridDBColumn;
dxLayoutControl_query: TdxLayoutControl;
custName: TcxTextEdit;
ConNo: TcxTextEdit;
BuyConNo: TcxTextEdit;
OrderNo: TcxTextEdit;
dxLayoutControl_queryGroup_Root: TdxLayoutGroup;
dxLayoutItem1: TdxLayoutItem;
dxLayoutItem2: TdxLayoutItem;
dxLayoutItem_hth: TdxLayoutItem;
dxLayoutItem_khdh: TdxLayoutItem;
CDS_Main: TClientDataSet;
Panel_page: TPanel;
BTNP: TButton;
LBCPAP: TLabel;
BTLP: TButton;
TCBNOR: TcxComboBox;
Label31: TLabel;
cxSplitter1: TcxSplitter;
cxGrid2: TcxGrid;
TV2: TcxGridDBTableView;
tv2SSel: TcxGridDBColumn;
tv2C_EColor: TcxGridDBColumn;
cxGridDBColumn4: TcxGridDBColumn;
tv2C_Pattern: TcxGridDBColumn;
tv2OrdPiece: TcxGridDBColumn;
tv2OrdQty: TcxGridDBColumn;
v1OrderUnit: TcxGridDBColumn;
tv2OrdSNote: TcxGridDBColumn;
TV2Column1: TcxGridDBColumn;
TV2C_Color: TcxGridDBColumn;
cxGridLevel1: TcxGridLevel;
tv1salerser: TcxGridDBColumn;
TV2C_EName: TcxGridDBColumn;
TV2C_spec: TcxGridDBColumn;
TV2C_Name: TcxGridDBColumn;
ADOQuerySub: TADOQuery;
DataSource2: TDataSource;
cxGridPopupMenu2: TcxGridPopupMenu;
CDS_Sub: TClientDataSet;
procedure TrefreshClick(Sender: TObject);
procedure TprintClick(Sender: TObject);
procedure TprintGridClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TcloseClick(Sender: TObject);
procedure TsaveGridClick(Sender: TObject);
procedure BTLPClick(Sender: TObject);
procedure BTNPClick(Sender: TObject);
procedure TCBNORPropertiesChange(Sender: TObject);
procedure tv1FocusedRecordChanged(Sender: TcxCustomGridTableView;
APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
private
fWindowDesign: TWindowFormdesign;
CurrentPage, RecordsNumber: Integer;
procedure doQuery();
procedure doQueryByCriteria();
procedure initGrid();
procedure InitSub();
protected
fParameters1: string;
fParameters2: string;
fParameters3: string;
fParameters4: string;
fParameters5: string;
fParameters10: string;
public
fFormId: integer;
fProcedureName:string; //<2F><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
fProcedureSubName:string; //<2F>Ӵ洢<D3B4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FLMType:string; //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ͱ<EFBFBD>־
ftimeType:string; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
fQueryType:String; //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
FFiltration1:string; //<2F><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
fCriteria:string; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
constructor Create(AOwner: TComponent; ACaption: string=''; Parameters1: string=''; Parameters2: string=''; Parameters3: string=''; Parameters4: string=''; Parameters5: string=''; Parameters10: string='';FormID:Integer=0);
end;
var
frmTradeDetailBaseList: TfrmTradeDetailBaseList;
implementation
uses
U_RTFun, U_globalVar, U_dataLink,U_FormLayOutDesign, U_LabelPrint;
{$R *.dfm}
procedure TfrmTradeDetailBaseList.BTLPClick(Sender: TObject);
begin
if CurrentPage > 1 then
CurrentPage := CurrentPage - 1;
doQuery();
end;
procedure TfrmTradeDetailBaseList.BTNPClick(Sender: TObject);
begin
if CurrentPage < cds_Main.FieldByName('TotalCount').AsInteger / RecordsNumber then
CurrentPage := CurrentPage + 1;
doQuery();
end;
constructor TfrmTradeDetailBaseList.Create(AOwner: TComponent; ACaption: string=''; Parameters1: string=''; Parameters2: string=''; Parameters3: string=''; Parameters4: string=''; Parameters5: string=''; Parameters10: string='';FormID:Integer=0);
begin
inherited Create(AOwner);
if ACaption <> '' then
Caption := ACaption;
fParameters1 := Parameters1;
fParameters2 := Parameters2;
fParameters3 := Parameters3;
fParameters4 := Parameters4;
fParameters5 := Parameters5;
fParameters10 := Parameters10;
fFormId:= FormID ;
end;
procedure TfrmTradeDetailBaseList.TCBNORPropertiesChange(Sender: TObject);
begin
RecordsNumber := StrToInt(TCBNOR.Text);
CurrentPage := 1;
initGrid();
end;
procedure TfrmTradeDetailBaseList.TcloseClick(Sender: TObject);
begin
close;
end;
procedure TfrmTradeDetailBaseList.TprintClick(Sender: TObject);
begin
if cds_Main.IsEmpty then
Exit;
TcxGridToExcel(self.Caption, cxgrid1);
end;
procedure TfrmTradeDetailBaseList.TprintGridClick(Sender: TObject);
begin
if cds_Main.IsEmpty then
Exit;
if trim(self.FLMType)='' then
begin
application.MessageBox(<><CEB4><EFBFBD>ô<EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!','<27><>ʾ<EFBFBD><CABE>Ϣ',0);
exit;
end;
try
frmLabelPrint := TfrmLabelPrint.Create(Application);
with frmLabelPrint do
begin
FLMType := self.FLMType;
FFiltration1 := self.FFiltration1;
if ShowModal = 1 then
begin
// Self.InitGrid();
end;
end;
finally
frmLabelPrint.Free;
end;
end;
procedure TfrmTradeDetailBaseList.TrefreshClick(Sender: TObject);
begin
if frmFrameDateSel1.BegDate.Visible then
begin
frmFrameDateSel1.BegDate.SetFocus;
end;
CurrentPage := 1;
initGrid();
end;
procedure TfrmTradeDetailBaseList.TsaveGridClick(Sender: TObject);
begin
WriteCxGrid(trim(self.Caption) + 'Tv1', Tv1, gDllFileCaption);
if gIsCanDesign then
begin
saveLayOut(application, dxLayoutControl_query, ADOQueryBaseCmd,PWideChar( fDllFileName + '|' + Self.Name + '|' + dxLayoutControl_query.Name + '.ini'));
end;
end;
procedure TfrmTradeDetailBaseList.tv1FocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
begin
InitSub();
end;
////////////////////////////////////
procedure TfrmTradeDetailBaseList.doQuery();
var
strwhere: string;
begin
if fProcedureName='' then
begin
application.MessageBox('<27><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>!','<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ',0);
exit;
end;
strwhere := GetProcedureParam(dxLayoutControl_query);
try
Tv1.BeginUpdate();
cds_Main.DisableControls;
with ADOQueryMain do
begin
close;
Filtered := false;
sql.Clear;
sql.Add('exec '+fProcedureName);
sql.Add('@timeType='+quotedstr(fTimeType));
sql.Add(',@begDate='+quotedstr(FormatDateTime('yyyy-MM-dd', frmFrameDateSel1.begdate.Date)));
sql.Add(',@endDate='+quotedstr(FormatDateTime('yyyy-MM-dd', frmFrameDateSel1.enddate.Date+1)));
if frmFrameDateSel1.jqModel.Checked then
sql.Add(',@jqModel=1')
else
sql.Add(',@jqModel=0');
if Panel_page.Visible then
begin
sql.Add(',@pageIndex=' + inttostr(CurrentPage));
sql.Add(',@pageSize=' + inttostr(RecordsNumber));
end;
sql.Add(',@criteria='+ quotedstr(fcriteria));
if strwhere<>'' then
sql.Add(','+strwhere);
// showMessage(sql.Text);
//cxMemo1.Text:= sql.Text ;
open;
end;
SCreateCDS(ADOQueryMain, cds_Main);
SInitCDSData(ADOQueryMain, cds_Main);
if Panel_page.Visible then
begin
LBCPAP.Caption := inttostr(CurrentPage) + '/' + inttostr(ceil(cds_Main.FieldByName('TotalCount').AsInteger / RecordsNumber));
end;
finally
cds_Main.EnableControls;
Tv1.EndUpdate;
end;
end;
////////////////////////////////////
procedure TfrmTradeDetailBaseList.doQueryByCriteria();
var
mSqlWhere: string;
begin
if fProcedureName='' then
begin
application.MessageBox('<27><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>!','<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ',0);
exit;
end;
mSqlWhere := SLGetFilters(dxLayoutControl_query, 1, 2);
if trim(mSqlWhere) <> '' then
begin
mSqlWhere := ' and ' + trim(mSqlWhere);
end;
mSqlWhere:=fCriteria + ' ' + mSqlWhere ;
try
Tv1.BeginUpdate();
CDS_Main.DisableControls;
with ADOQueryMain do
begin
close;
Filtered := false;
sql.Clear;
sql.Add('exec '+fProcedureName);
sql.Add('@timeType='+quotedstr(fTimeType));
sql.Add(',@begDate='+quotedstr(FormatDateTime('yyyy-MM-dd', frmFrameDateSel1.begdate.Date)));
sql.Add(',@endDate='+quotedstr(FormatDateTime('yyyy-MM-dd', frmFrameDateSel1.enddate.Date+1)));
if Panel_page.Visible then
begin
sql.Add(',@pageIndex=' + inttostr(CurrentPage));
sql.Add(',@pageSize=' + inttostr(RecordsNumber));
end;
sql.Add(',@criteria='+ quotedstr(mSqlWhere));
//cxMemo1.Text:= sql.Text ;
open;
end;
SCreateCDS(ADOQueryMain, CDS_Main);
SInitCDSData(ADOQueryMain, CDS_Main);
if Panel_page.Visible then
begin
LBCPAP.Caption := inttostr(CurrentPage) + '/' + inttostr(ceil(CDS_Main.FieldByName('TotalCount').AsInteger / RecordsNumber));
end;
finally
CDS_Main.EnableControls;
Tv1.EndUpdate;
end;
end;
///
procedure TfrmTradeDetailBaseList.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if WriteCloseWin(ADOQueryBaseCmd, self.Caption, fFormId, gDllFileName) then
begin
Sendmessage(application.MainForm.Handle, WM_CloseForm, 4, 0);
end;
Action:=cafree;
end;
procedure TfrmTradeDetailBaseList.FormCreate(Sender: TObject);
begin
cxgrid1.Align:=alClient;
CurrentPage := 1;
RecordsNumber := 500;
fWindowDesign := TWindowFormdesign.Create();
frmFrameDateSel1.begdate.Date:=SGetServerDate(ADOQueryBaseTemp);
frmFrameDateSel1.enddate.Date:=frmFrameDateSel1.begdate.Date;
end;
procedure TfrmTradeDetailBaseList.FormDestroy(Sender: TObject);
begin
fWindowDesign.free;
end;
procedure TfrmTradeDetailBaseList.FormShow(Sender: TObject);
var
mdesignCode:string;
begin
if DParameters8<>'1' then
begin
fWindowDesign.FormStyleInit(self, fFormId, ADOQueryBaseTemp, ADOQueryBaseCmd, '', fParameters10);
end;
mdesignCode := fDllFileName +'|'+self.name+ '|' + intTostr(fformId) + '|' + 'cxgrid1';
//<2F><><EFBFBD>Ӷ<EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
addQryContionByLay(ADOQueryBaseTemp,fformId,'cxgrid1',dxLayoutControl_query,7);
ReadCxGrid(trim(self.Caption) + 'Tv1', Tv1, gDllFileCaption);
initGrid();
end;
///////////////////////////////
///
procedure TfrmTradeDetailBaseList.initGrid();
begin
if fQueryType='criteria' then
begin
doQueryByCriteria() ;
end
else
begin
frmFrameDateSel1.jqModel.Checked:=true;
doQuery() ;
end;
end;
/////////////////////////
procedure TfrmTradeDetailBaseList.InitSub();
begin ADOQuerySub.close;
if fProcedureSubName='' then
begin
application.MessageBox('<27><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD>Ӵ洢<D3B4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!','<27><>ʾ<EFBFBD><CABE>Ϣ',0);
exit;
end;
if CDS_Main.IsEmpty then
Exit;
try
TV2.BeginUpdate();
CDS_SUB.DisableControls;
with ADOQuerySub do begin close;
sql.Clear;
sql.Add('exec '+fProcedureSubName);
sql.Add('@mainId =' + quotedstr((CDS_Main.fieldbyname('mainID')
.AsString)));
Open;
end;
SCreateCDS(ADOQuerySub, CDS_SUB);
SInitCDSData(ADOQuerySub, CDS_SUB);
finally
CDS_SUB.EnableControls;
TV2.EndUpdate;
end;
//
end;
end.