unit U_SCPersonColor3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, DB, ADODB, StdCtrls, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, cxContainer, cxEdit, dxSkinsCore, dxSkinsDefaultPainters, cxTextEdit, Vcl.Touch.Keyboard, Vcl.ExtCtrls, dxSkinWXI; type TfrmSCPersonColor3 = class(TForm) ScrollBox1: TScrollBox; btn58: TSpeedButton; btn9: TSpeedButton; btn10: TSpeedButton; btn11: TSpeedButton; btn12: TSpeedButton; btn59: TSpeedButton; btn16: TSpeedButton; btn17: TSpeedButton; btn18: TSpeedButton; btn19: TSpeedButton; btn60: TSpeedButton; btn23: TSpeedButton; btn24: TSpeedButton; btn25: TSpeedButton; btn26: TSpeedButton; btn61: TSpeedButton; btn31: TSpeedButton; btn32: TSpeedButton; btn33: TSpeedButton; ADOTmp: TADOQuery; Label27: TLabel; Label1: TLabel; Button3: TButton; Button1: TButton; c_name: TcxTextEdit; TouchKeyboard1: TTouchKeyboard; Button2: TButton; Button4: TButton; Panel1: TPanel; bb1: TButton; MF: TcxTextEdit; Label2: TLabel; KZ: TcxTextEdit; Label3: TLabel; Button5: TButton; NAME2: TcxTextEdit; Label4: TLabel; CODE: TcxTextEdit; Label5: TLabel; ADOQuery1: TADOQuery; ADOCmd: TADOQuery; Button6: TButton; Timer1: TTimer; procedure FormDestroy(Sender: TObject); procedure FormShow(Sender: TObject); procedure btn1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure c_namePropertiesChange(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure bb1Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure btn58MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure btn58MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure btn58MouseLeave(Sender: TObject); procedure Timer1Timer(Sender: TObject); private CPage: Integer; FMouseDown: Boolean; // 是否鼠标按下 FDownTick: Cardinal; // 按下时刻 GetTickCount FPressedBtn: TSpeedButton; procedure InitPerson(page: Integer); function SaveData(): Boolean; { Private declarations } public FlagStr: string; FName, FSJZL, FType: string; { Public declarations } end; var frmSCPersonColor3: TfrmSCPersonColor3; implementation uses U_DataLink, U_RTFun; {$R *.dfm} procedure TfrmSCPersonColor3.FormDestroy(Sender: TObject); begin frmSCPersonColor3 := nil; end; procedure TfrmSCPersonColor3.InitPerson(page: Integer); type FdDy = record inc: integer; FDdys: string[32]; FdDysName: string[32]; end; var BB: array[0..500] of FdDy; i, j: Integer; begin if ftype = '机台号' then begin end; with ADOTmp do begin Close; sql.Clear; sql.Add('select AA.*,row_number () over (order by code) as keyNo from(select DISTINCT C_CODE as code from Bs_CLOTH_INFO '); //sql.Add('select AA.*,row_number () over (order by name) as keyNo from(select DISTINCT C_NAME as name from Bs_CLOTH_INFO '); if C_NAME.Text <> '' then begin //SQL.Add(' WHERE C_NAME LIKE ' + QUOTEDSTR('%' + C_NAME.Text + '%')); SQL.Add(' WHERE C_CODE LIKE ' + QUOTEDSTR('%' + C_NAME.Text + '%')); end; SQL.Add(')AA'); // showmessage(sql.text); Open; end; if ADOTmp.IsEmpty then begin Application.MessageBox('没有定义数据!', '提示', 0); Exit; end; j := (StrToInt(Label1.Caption) - 1) * 20 + 1; for i := 0 to 19 do begin with ScrollBox1 do begin if ADOTmp.locate('keyNo', j + i, []) then begin // application.MessageBox(pchar(CDS_Kuang.FieldByName('ZDYName').AsString), '提示信息', 0); TSpeedButton(Controls[i]).Visible := True; //TSpeedButton(Controls[i]).Caption := Trim(ADOTmp.FieldByName('name').AsString); TSpeedButton(Controls[i]).Caption := Trim(ADOTmp.FieldByName('CODE').AsString); end else begin TSpeedButton(Controls[i]).Visible := False; // application.MessageBox(pchar('没找到' + inttostr(i)), '提示信息', 0); end; end; end; // with ADOTmp do // begin // First; // i := 0; // while not Eof do // begin // BB[i].inc := i; // BB[i].FdDysName := Trim(fieldbyname('name').AsString); // i := i + 1; // Next; // end; // end; // i := i - 1; // if i > 19 then // begin // i := 19; // end; // for j := 0 to 19 do // begin // with ScrollBox1 do // begin // TSpeedButton(Controls[j]).Visible := false; // TSpeedButton(Controls[j]).Caption := ''; // TSpeedButton(Controls[j]).Hint := ''; // end; // end; // for j := 0 to i do // begin // with ScrollBox1 do // begin // TSpeedButton(Controls[j]).Visible := True; // TSpeedButton(Controls[j]).Caption := BB[j].FdDysName; // end; // end; end; function TfrmSCPersonColor3.SaveData(): Boolean; var MaxBCIID, MaxBCPID: string; begin try ADOCmd.Connection.BeginTrans; //////////////// 保存主表 ////////////////////// if GetLSNo(ADOCmd, MaxBCIID, 'Y', 'BS_Cloth_Info', 4, 1) = False then begin Result := False; ADOCmd.Connection.RollbackTrans; Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; // BCIID.Text := trim(MaxBCIID); with ADOCmd do begin Close; SQL.Clear; sql.Add('select * from BS_Cloth_Info where 1<>1'); Open; end; with ADOCmd do begin Append; FieldByName('CTID').Value := Trim('CT2606060001'); FieldByName('FILLID').Value := Trim(DCode); FieldByName('FILLER').Value := Trim(DName); FieldByName('FILLTIME').Value := SGetServerDateTime(ADOTMP); FieldByName('BCIID').Value := Trim(MaxBCIID); FieldByName('C_CODE').Value := Trim(CODE.Text); FieldByName('C_NAME').Value := Trim(NAME2.Text); FieldByName('C_Width').Value := Trim(MF.Text); FieldByName('C_GramWeight').Value := Trim(KZ.Text); if trim(Code.Text) = '' then Code.Text := Trim(MaxBCIID); // RTSetsavedata(ADOQueryCmd, 'BS_Cloth_Info', ScrollBox1, 2); Post; end; with ADOTmp do begin Close; sql.Clear; sql.Add('select count(*) as AA from BS_Cloth_Info where C_NAME=''' + Trim(NAME2.Text) + ''''); Open; if FieldByName('AA').AsInteger > 1 then begin ADOCmd.Connection.RollbackTrans; Result := False; Application.MessageBox('名称重复!', '提示', 0); Exit; end; end; //////////////// 保存主表 ////////////////////// /// /// /// ADOCmd.Connection.CommitTrans; Result := True; except Result := False; ADOCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!', '提示', 0); end; end; procedure TfrmSCPersonColor3.Timer1Timer(Sender: TObject); const LONG_PRESS_MS = 1000; var elapse: Cardinal; sCap: string; begin if not FMouseDown then Exit; elapse := GetTickCount - FDownTick; if elapse >= LONG_PRESS_MS then begin Timer1.Enabled := False; //只触发一次长按 sCap := Trim(FPressedBtn.Caption); // 弹窗前先把状态复位,防止模态消息框重入乱状态 FMouseDown := False; FPressedBtn := nil; if Application.MessageBox(PChar('确定要删除' + sCap), '提示', MB_ICONINFORMATION + MB_YESNO) = IDYES then begin // ========== 你的删除业务写这里 ========== with ADOCmd do begin Close; Sql.Clear; //sql.Add('delete bs_cloth_info where C_Name=' + quotedstr(sCap)); sql.Add('delete bs_cloth_info where C_Code=' + quotedstr(sCap)); sql.Add('insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( '); sql.Add(' ' + quotedstr(trim(DName))); sql.Add(',getdate() '); sql.Add(',' + quotedstr(trim(self.Caption))); sql.Add(',' + quotedstr(trim('样品删除'))); sql.Add(',' + quotedstr(trim('编号:' + trim(sCap)))); //sql.Add(',' + quotedstr(trim('名称:' + trim(sCap)))); sql.Add(',' + quotedstr(trim('成功'))); sql.Add(')'); execsql; end; InitPerson(1); CPage := 1; end; end; end; procedure TfrmSCPersonColor3.FormShow(Sender: TObject); begin InitPerson(1); CPage := 1; end; procedure TfrmSCPersonColor3.bb1Click(Sender: TObject); begin panel1.Visible := true; end; procedure TfrmSCPersonColor3.btn1Click(Sender: TObject); begin FName := Trim(TSpeedButton(Sender).Caption); ModalResult := 1; end; procedure TfrmSCPersonColor3.btn58MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then begin FMouseDown := True; FDownTick := GetTickCount; FPressedBtn := TSpeedButton(Sender); // ?这里拿到真正的按钮 Timer1.Enabled := True; end; end; procedure TfrmSCPersonColor3.btn58MouseLeave(Sender: TObject); begin FMouseDown := False; Timer1.Enabled := False; FPressedBtn := nil; end; procedure TfrmSCPersonColor3.btn58MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin FMouseDown := False; Timer1.Enabled := False; FPressedBtn := nil; end; procedure TfrmSCPersonColor3.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caHide; end; procedure TfrmSCPersonColor3.Button1Click(Sender: TObject); begin if CPage <= 1 then begin Label1.Caption := '1'; InitPerson(1); end else begin CPage := CPage - 1; Label1.Caption := IntToStr(CPage); InitPerson(CPage); end; end; procedure TfrmSCPersonColor3.Button2Click(Sender: TObject); begin TouchKeyboard1.Visible := true; C_NAME.SetFocus(); end; procedure TfrmSCPersonColor3.Button3Click(Sender: TObject); begin CPage := CPage + 1; Label1.Caption := IntToStr(CPage); InitPerson(CPage); end; procedure TfrmSCPersonColor3.Button4Click(Sender: TObject); begin TouchKeyboard1.Visible := false; C_NAME.SetFocus(); end; procedure TfrmSCPersonColor3.Button5Click(Sender: TObject); var MC_Code: string; begin if KZ.Text = '' then begin Application.MessageBox('克重不能为空!', '提示', 0); Exit; end; if mf.Text = '' then begin Application.MessageBox('门幅不能为空!', '提示', 0); Exit; end; if GetLSNo(ADOTmp, MC_Code, 'C', 'BS_Cloth_Info', 4, 0) = False then begin Application.MessageBox('取最成品编号失败!', '提示', 0); Exit; end; Code.Text := MC_Code; NAME2.Text := TRIM(KZ.Text) + '/' + TRIM(MF.Text); if SaveData() then begin Application.MessageBox('保存成功!', '提示', 0); panel1.Visible := false; kz.Text := ''; mf.Text := ''; //FName := Trim(name2.Text); FName := Trim(Code.Text); name2.Text := ''; code.Text := ''; ModalResult := 1; end; end; procedure TfrmSCPersonColor3.Button6Click(Sender: TObject); begin panel1.Visible := false; kz.Text := ''; mf.Text := ''; name2.Text := ''; code.Text := ''; end; procedure TfrmSCPersonColor3.c_namePropertiesChange(Sender: TObject); begin INITPERSON(1); end; end.