2025-11-12 17:32:20 +08:00
unit U_frameFSList;
interface
uses
Winapi . Windows, Winapi . Messages, System. SysUtils, System. Variants,
System. Classes, Vcl. Graphics, Vcl. Controls, Vcl. Forms, Vcl. Dialogs, cxGraphics,
cxControls, cxLookAndFeels, cxLookAndFeelPainters, cxContainer, cxEdit,
cxStyles, cxCustomData, cxFilter, cxData, cxDataStorage, cxNavigator,
dxDateRanges, dxScrollbarAnnotations, Data. DB, cxDBData, cxCheckBox,
cxTextEdit, dxBarBuiltInMenu, Vcl. Menus, cxGridCustomPopupMenu,
cxGridPopupMenu, Datasnap. DBClient, Data. Win. ADODB, cxGridLevel,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses,
cxGridCustomView, cxGrid, Vcl. StdCtrls, Vcl. ComCtrls, Vcl. ToolWin,
Vcl. ExtCtrls, dxSkinsCore, dxSkinsDefaultPainters, cxMemo, cxLabel, cxMaskEdit,
cxDropDownEdit, cxButtonEdit, cxButtons;
type
TframeFSList = class( TFrame)
ADOQueryMain: TADOQuery;
ADOQueryCmd: TADOQuery;
ADOQueryTemp: TADOQuery;
CDS_HZ: TClientDataSet;
DS_HZ: TDataSource;
cxGridPopupMenu2: TcxGridPopupMenu;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
Panel_FS: TPanel;
LabelFS: TLabel;
cxLabel198: TcxLabel;
fs_speed: TcxTextEdit;
FS_Style: TcxComboBox;
fs_isVacuun: TcxComboBox;
TbFSReplace2: TcxButton;
TBFScLEAR2: TcxButton;
cxLabel192: TcxLabel;
cxLabel194: TcxLabel;
cxLabel195: TcxLabel;
cxLabel196: TcxLabel;
cxLabel205: TcxLabel;
cxLabel207: TcxLabel;
cxLabel208: TcxLabel;
cxLabel209: TcxLabel;
cxLabel210: TcxLabel;
cxLabel211: TcxLabel;
cxLabel231: TcxLabel;
fs_temperature1: TcxTextEdit;
fs_temperature10: TcxTextEdit;
fs_temperature11: TcxTextEdit;
fs_temperature2: TcxTextEdit;
fs_temperature3: TcxTextEdit;
fs_temperature4: TcxTextEdit;
fs_temperature5: TcxTextEdit;
fs_temperature6: TcxTextEdit;
fs_temperature7: TcxTextEdit;
fs_temperature8: TcxTextEdit;
fs_temperature9: TcxTextEdit;
cxGrid7: TcxGrid;
TvFS: TcxGridDBTableView;
cxGridDBColumn19: TcxGridDBColumn;
cxGridDBColumn22: TcxGridDBColumn;
2026-02-06 17:33:19 +08:00
TvFSserialno: TcxGridDBColumn;
2025-11-12 17:32:20 +08:00
cxGridLevel6: TcxGridLevel;
cxLabel7: TcxLabel;
TbFSAdd: TcxButton;
TbFSDel: TcxButton;
fs_Precautions: TcxMemo;
CDS_fS: TClientDataSet;
DS_FS: TDataSource;
TvFSfs_spel: TcxGridDBColumn;
TvFSfs_unit: TcxGridDBColumn;
TvFSBPIID: TcxGridDBColumn;
procedure TBRafreshClick( Sender: TObject) ;
procedure ToolButton5Click( Sender: TObject) ;
procedure ToolButton3Click( Sender: TObject) ;
procedure TbFSReplace2Click( Sender: TObject) ;
procedure TBFScLEAR2Click( Sender: TObject) ;
procedure TbFSAddClick( Sender: TObject) ;
procedure TbFSDelClick( Sender: TObject) ;
procedure cxGridDBColumn19PropertiesButtonClick( Sender: TObject;
AButtonIndex: Integer ) ;
procedure cxGridDBColumn22PropertiesEditValueChanged( Sender: TObject) ;
private
procedure FillAllTextEditsWithValue( AParent: TWinControl; const AHint, AValue: string ; AExclude: TcxTextEdit = nil ) ;
procedure ClearAllTextEditsByHint( AParent: TWinControl; const AHint: string ; AExclude: TcxTextEdit = nil ) ;
function FindLastEditedTextEdit( AParent: TWinControl; const AHint: string ) : string ;
{ Private declarations }
public
procedure InitGrid( ) ;
function SaveData( mPSID: string ) : Boolean ;
{ Public declarations }
end ;
implementation
uses
U_DataLink, U_RTFun, U_LabelPrint, U_ProductInfoSel;
{$R *.dfm}
procedure TframeFSList. InitGrid( ) ;
begin
// POSNO.SetFocus;
// try
// ADOQueryMain.DisableControls;
// with ADOQueryMain do
// begin
// Close;
// SQL.Clear;
// sql.Add(' select A.* from BS_Position A order by POSNO ');
// Open;
// end;
// SCreateCDS(ADOQueryMain, CDS_HZ);
// SInitCDSData(ADOQueryMain, CDS_HZ);
// finally
// ADOQueryMain.EnableControls;
// ToolButton2.Click;
// end;
end ;
procedure TframeFSList. TbFSAddClick( Sender: TObject) ;
begin
with CDS_FS do
begin
Append;
CDS_FS. FieldByName( 'serialno' ) . Value : = CDS_FS. RecordCount + 1 ;
Post;
end ;
end ;
procedure TframeFSList. TBFScLEAR2Click( Sender: TObject) ;
begin
ClearAllTextEditsByHint( panel_FS, '<27> <> ˮ<EFBFBD> ¿<EFBFBD> ' ) ;
end ;
procedure TframeFSList. TbFSDelClick( Sender: TObject) ;
var
i: Integer ;
begin
if not CDS_FS. IsEmpty then
begin
if Application. MessageBox( 'ȷ<> <C8B7> Ҫɾ<D2AA> <C9BE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ' , '<27> <> ʾ ' , 3 2 + 4 ) = IDYES then
begin
if Trim( CDS_FS. fieldbyname( 'BCPID' ) . AsString) < > '' then
begin
with ADOQueryCmd do
begin
Close;
sql. Clear;
sql. Add( 'delete BS_Cloth_GY_Sub where BCPID=' + quotedStr( Trim( CDS_FS. fieldbyname( 'BCPID' ) . AsString) ) ) ;
ExecSQL;
end ;
end ;
CDS_FS. Delete;
end
else
exit;
i : = 0 ;
CDS_FS. First;
while not CDS_FS. Eof do
begin
i : = i + 1 ;
CDS_FS. Edit;
CDS_FS. fieldByName( 'serialno' ) . value : = i;
CDS_FS. Post;
CDS_FS. Next;
end ;
end
else
begin
Application. MessageBox( '<27> <EFBFBD> ɾ<EFBFBD> <C9BE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> !' , '<27> <> ʾ ' , 0 ) ;
Exit;
end ;
end ;
procedure TframeFSList. TbFSReplace2Click( Sender: TObject) ;
begin
FillAllTextEditsWithValue( panel_fs, '<27> <> ˮ<EFBFBD> ¿<EFBFBD> ' , FindLastEditedTextEdit( panel_fs, '<27> <> ˮ<EFBFBD> ¿<EFBFBD> ' ) ) ;
end ;
procedure TframeFSList. TBRafreshClick( Sender: TObject) ;
begin
InitGrid( ) ;
end ;
procedure TframeFSList. ToolButton3Click( Sender: TObject) ;
var
RTValues: TArray< string > ;
begin
if CDS_HZ. IsEmpty then
Exit;
if CDS_HZ. Locate( 'SSel' , True , [ ] ) = False then
begin
Application. MessageBox( '<27> <> <EFBFBD> <EFBFBD> ѡ <EFBFBD> <D1A1> <EFBFBD> <EFBFBD> <EFBFBD> ݣ<EFBFBD> ' , '<27> <> ʾ ' , 0 ) ;
Exit;
end ;
RTValues : = SelCDSKey( CDS_HZ, [ 'POSID' ] ) ;
try
frmLabelPrint : = TfrmLabelPrint. Create( Application) ;
with frmLabelPrint do
begin
FLMType : = 'Position' ;
FFiltration1 : = RTValues[ 0 ] ;
if ShowModal = 1 then
begin
// Self.InitGrid();
end ;
end ;
finally
frmLabelPrint. Free;
end ;
end ;
procedure TframeFSList. ToolButton5Click( Sender: TObject) ;
begin
if CDS_HZ. IsEmpty then
Exit;
if CDS_HZ. Locate( 'SSel' , True , [ ] ) = False then
begin
Application. MessageBox( '<27> <> <EFBFBD> <EFBFBD> ѡ <EFBFBD> <D1A1> <EFBFBD> <EFBFBD> <EFBFBD> ݣ<EFBFBD> ' , '<27> <> ʾ ' , 0 ) ;
Exit;
end ;
if Application. MessageBox( 'ȷ<> <C8B7> Ҫɾ<D2AA> <C9BE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ' , '<27> <> ʾ ' , 3 2 + 4 ) < > IDYES then
Exit;
with CDS_HZ do
begin
while not Eof do
begin
if CDS_HZ. Locate( 'SSel' , True , [ ] ) = True then
begin
with ADOQueryCmd do
begin
Close;
sql. Clear;
sql. Add( 'delete BS_Position where POSID=' + QuotedStr( CDS_HZ. FieldByName( 'POSID' ) . AsString) ) ;
ExecSQL;
end ;
end ;
CDS_HZ. Edit;
CDS_HZ. FieldByName( 'SSel' ) . Value : = False ;
CDS_HZ. Post;
Next;
end ;
end ;
InitGrid( ) ;
end ;
function TframeFSList. SaveData( mPSID: string ) : Boolean ;
var
MaxProcessID, MaxBCPID, MaxPSID, MaxDTMID, mDTMID, DTMPSlist: string ;
maxsubid1, maxsubid2, maxsubid3, maxsubid4, maxsubid5, maxsubid6, mmaxgx: string ;
begin
try
//////////////// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> //////////////////////
with ADOQueryCmd do
begin
Close;
SQL. Clear;
sql. Add( 'select * from Bs_Cloth_GY_Main where PSID=' '' + Trim( mPSID) + '' '' ) ;
Open;
end ;
with ADOQueryCmd do
begin
if Trim( mPSID) = '' then
begin
Append;
end
else
begin
Edit;
end ;
FieldByName( 'PSID' ) . Value : = Trim( mPSID) ;
RTSetsavedata( ADOQueryCmd, 'Bs_Cloth_GY_Main' , panel_fs, 2 ) ;
ADOQueryCmd. Post;
with CDS_fS do
begin
First;
while not Eof do
begin
if Trim( CDS_fS. fieldbyname( 'BCPID' ) . AsString) = '' then
begin
if GetLSNo( ADOQueryTemp, maxsubid4, 'FS' , 'Bs_Cloth_GY_Sub' , 5 , 1 ) = False then
begin
Application. MessageBox( 'ȡ<> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ˮ<EFBFBD> <CBAE> ʧ<EFBFBD> ܣ<EFBFBD> ' , '<27> <> ʾ ' , 0 ) ;
Exit;
end ;
end
else
begin
maxsubid4 : = Trim( CDS_fS. fieldbyname( 'BCPID' ) . AsString) ;
end ;
with ADOQueryCmd do
begin
Close;
SQL. Clear;
sql. Add( 'select * from Bs_Cloth_GY_Sub where ' ) ;
sql. Add( ' BCPID=' '' + Trim( maxsubid4) + '' '' ) ;
Open;
end ;
with ADOQueryCmd do
begin
if Trim( CDS_fS. fieldbyname( 'BCPID' ) . AsString) = '' then
begin
Append;
end
else
begin
Edit;
end ;
FieldByName( 'GYType' ) . Value : = '<27> <> ˮ<EFBFBD> <CBAE> <EFBFBD> <EFBFBD> ' ;
FieldByName( 'PSID' ) . Value : = Trim( mPSID) ;
FieldByName( 'BCPID' ) . Value : = Trim( maxsubid4) ;
RTSetSaveDataCDS( ADOQueryCmd, TvFS, CDS_fS, 'Bs_Cloth_GY_Sub' , 0 ) ;
Post;
end ;
Next;
end ;
end ;
end ;
//////////////// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> //////////////////////
// FPSID := maxId;
Result : = True ;
except
Result : = False ;
Application. MessageBox( '<27> <> <EFBFBD> <EFBFBD> ʧ<EFBFBD> <CAA7> !' , '<27> <> ʾ ' , 0 ) ;
end ;
end ;
procedure TframeFSList. cxGridDBColumn19PropertiesButtonClick( Sender: TObject;
AButtonIndex: Integer ) ;
begin
try
frmProductInfoSel : = TfrmProductInfoSel. Create( Application) ;
with frmProductInfoSel do
begin
FSTKName : = '<27> <> <EFBFBD> <EFBFBD> ' ;
if ShowModal = 1 then
begin
with Self. CDS_FS do
begin
Edit;
FieldByName( 'fs_Name' ) . Value : = frmProductInfoSel. CDS_1. fieldbyname( 'P_Name' ) . value;
FieldByName( 'fs_spel' ) . Value : = frmProductInfoSel. CDS_1. fieldbyname( 'P_Type' ) . value;
FieldByName( 'fs_unit' ) . Value : = frmProductInfoSel. CDS_1. fieldbyname( 'QtyUnit' ) . value;
FieldByName( 'BPIID' ) . Value : = frmProductInfoSel. CDS_1. fieldbyname( 'BPIID' ) . value;
end ;
end ;
end ;
finally
frmProductInfoSel. Free;
end ;
end ;
procedure TframeFSList. cxGridDBColumn22PropertiesEditValueChanged(
Sender: TObject) ;
var
s: string ;
fValue: Double ;
begin
s : = TcxTextEdit( Sender) . EditingText;
if ( s < > '' ) and ( s[ Length( s) ] < > '%' ) then
begin
try
// <20> <> <EFBFBD> Խ<EFBFBD> <D4BD> ַ<EFBFBD> <D6B7> <EFBFBD> ת<EFBFBD> <D7AA> Ϊ<EFBFBD> <CEAA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
fValue : = StrToFloat( s) ;
// <20> <> ʽ <EFBFBD> <CABD> Ϊ<EFBFBD> <CEAA> λС <CEBB> <D0A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӱٷֺ<D9B7>
TvFS. Controller. FocusedColumn. EditValue : = FormatFloat( '0.00' , fValue) + '%' ;
except
on E: EConvertError do
begin
// <20> <> <EFBFBD> <EFBFBD> ת<EFBFBD> <D7AA> ʧ<EFBFBD> ܣ<EFBFBD> <DCA3> <EFBFBD> <EFBFBD> <EFBFBD> ԭ<EFBFBD> <D4AD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӱٷֺ<D9B7>
TvFS. Controller. FocusedColumn. EditValue : = s + '%' ;
end ;
end ;
end ;
end ;
procedure TframeFSList. FillAllTextEditsWithValue( AParent: TWinControl; const AHint, AValue: string ; AExclude: TcxTextEdit = nil ) ; // <20> <> ѡ <EFBFBD> <D1A1> <EFBFBD> ų<EFBFBD> <C5B3> ض<EFBFBD> <D8B6> ؼ<EFBFBD>
var
i: Integer ;
AControl: TControl;
ATextEdit: TcxTextEdit;
begin
for i : = 0 to AParent. ControlCount - 1 do
begin
AControl : = AParent. Controls[ i] ;
if ( AControl is TcxTextEdit) and ( ( AControl as TcxTextEdit) . Text = '' ) then
begin
ATextEdit : = AControl as TcxTextEdit;
if ( ATextEdit. Hint = AHint) and ( ATextEdit < > AExclude) then
ATextEdit. Text : = AValue;
end ;
end ;
end ;
procedure TframeFSList. ClearAllTextEditsByHint( AParent: TWinControl; const AHint: string ; AExclude: TcxTextEdit = nil ) ;
var
i: Integer ;
AControl: TControl;
begin
for i : = 0 to AParent. ControlCount - 1 do
begin
AControl : = AParent. Controls[ i] ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ<EFBFBD> <C7B7> <EFBFBD> TcxTextEdit<69> <74> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Hint ƥ<> 䣬<EFBFBD> Ҳ<EFBFBD> <D2B2> <EFBFBD> <EFBFBD> ų<EFBFBD> <C5B3> Ŀؼ<C4BF>
if ( AControl is TcxTextEdit) and ( TcxTextEdit( AControl) . Hint = AHint) and ( TcxTextEdit( AControl) < > AExclude) then
begin
TcxTextEdit( AControl) . Text : = '' ; // ֱ<> <D6B1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
end ;
end ;
end ;
function TframeFSList. FindLastEditedTextEdit( AParent: TWinControl; const AHint: string ) : string ;
var
i, j: Integer ;
AControl: TControl;
SortedControls: TList;
TempControl: TControl;
begin
Result : = '' ;
// <20> <> <EFBFBD> <EFBFBD> û<EFBFBD> <C3BB> <EFBFBD> ӿؼ<D3BF> <D8BC> <EFBFBD> ֱ<EFBFBD> ӷ<EFBFBD> <D3B7> ؿ<EFBFBD>
if AParent. ControlCount = 0 then
Exit;
// ʹ <> <CAB9> TList <20> 洢<EFBFBD> ؼ<EFBFBD> <D8BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݾɰ<DDBE> Delphi<68> <69>
SortedControls : = TList. Create;
try
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӿؼ<D3BF> <D8BC> <EFBFBD> <EFBFBD> ӵ<EFBFBD> <D3B5> б <EFBFBD>
for i : = 0 to AParent. ControlCount - 1 do
SortedControls. Add( AParent. Controls[ i] ) ;
// <20> ֶ<EFBFBD> <D6B6> <EFBFBD> <EFBFBD> <EFBFBD> Top<6F> <70> Y<EFBFBD> <59> <EFBFBD> ꣩<EFBFBD> <EAA3A9> Left<66> <74> X<EFBFBD> <58> <EFBFBD> ꣩<EFBFBD> <EAA3A9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for i : = 0 to SortedControls. Count - 1 do
begin
for j : = i + 1 to SortedControls. Count - 1 do
begin
// <20> Ƚ<EFBFBD> <C8BD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ؼ<EFBFBD> <D8BC> <EFBFBD> Top <20> <> Left
if ( TControl( SortedControls[ i] ) . Top > TControl( SortedControls[ j] ) . Top) or ( ( TControl( SortedControls[ i] ) . Top = TControl( SortedControls[ j] ) . Top) and ( TControl( SortedControls[ i] ) . Left > TControl( SortedControls[ j] ) . Left) ) then
begin
// <20> <> <EFBFBD> <EFBFBD> λ<EFBFBD> <CEBB>
TempControl : = TControl( SortedControls[ i] ) ;
SortedControls[ i] : = SortedControls[ j] ;
SortedControls[ j] : = TempControl;
end ;
end ;
end ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ŀؼ<C4BF>
for i : = 0 to SortedControls. Count - 1 do
begin
AControl : = TControl( SortedControls[ i] ) ;
if ( AControl is TcxTextEdit) and ( TcxTextEdit( AControl) . Hint = AHint) and ( TcxTextEdit( AControl) . Text < > '' ) then
begin
Result : = TcxTextEdit( AControl) . Text ; // <20> <> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ļᱻ<C4BB> <E1B1BB> <EFBFBD> <EFBFBD>
end ;
end ;
finally
SortedControls. Free;
end ;
end ;
end .