⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sj_pplbwh.pas

📁 省级集邮品管理ERP
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{*******************************************************}
{                                                       }
{                    集邮品类别维护                     }
{                                                       }
{            中软金马公司版权所有。2002.12前            }
{                                                       }
{            编制:中软金马邮资票品项目开发组           }
{                                                       }
{                                                       }
{*******************************************************}
(*
本模块在省级系统管理模块里面调用。

*)
unit Sj_pplbwh;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids, DBGrids, Db, DBTables, StdCtrls, Mask, DBCtrls, Buttons, RXDBCtrl, ClipBrd,
  RXCtrls, ExtCtrls;

type
  TFrm_pplbwh = class(TForm)
    qry_LB1: TQuery;
    ds_LB1: TDataSource;
    bbtn_Add: TBitBtn;
    bbtn_Modify: TBitBtn;
    bbtn_Delete: TBitBtn;
    bbtn_Save: TBitBtn;
    bbtn_Cancel: TBitBtn;
    gb_LB2: TGroupBox;
    dbe_LB2: TDBEdit;
    dbe_MC2: TDBEdit;
    dbe_BH2: TDBEdit;
    lbl_BH2: TLabel;
    lbl_MC2: TLabel;
    lbl_LB2: TLabel;
    lbl_JYPLDM2: TLabel;
    bbtn_Exit: TBitBtn;
    qry_LB2: TQuery;
    ds_LB2: TDataSource;
    RXDBG_LB1: TRxDBGrid;
    RXDBG_LB2: TRxDBGrid;
    gb_LB1: TGroupBox;
    lbl_BH1: TLabel;
    lbl_MC1: TLabel;
    lbl_LB1: TLabel;
    lbl_JYPLDM1: TLabel;
    dbe_JYPLDM1: TDBEdit;
    dbe_LB1: TDBEdit;
    dbe_MC1: TDBEdit;
    dbe_BH1: TDBEdit;
    qry_Tmp: TQuery;
    dbe_JYPLDM2: TEdit;
    upSQL_1: TUpdateSQL;
    upSQL_2: TUpdateSQL;
    Panel11: TPanel;
    RxLabel1: TRxLabel;
    DWMC: TLabel;
    Panel1: TPanel;
    Panel2: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure bbtn_ExitClick(Sender: TObject);
    procedure RXDBG_LB1Enter(Sender: TObject);
    procedure RXDBG_LB2Enter(Sender: TObject);
    procedure qry_LB1AfterScroll(DataSet: TDataSet);
    procedure bbtn_AddClick(Sender: TObject);
    procedure bbtn_CancelClick(Sender: TObject);
    procedure bbtn_DeleteClick(Sender: TObject);
    procedure bbtn_ModifyClick(Sender: TObject);
    procedure bbtn_SaveClick(Sender: TObject);
    procedure qry_LB2AfterScroll(DataSet: TDataSet);
    procedure dbe_JYPLDM2Exit(Sender: TObject);
    procedure qry_LB1BeforeInsert(DataSet: TDataSet);
    procedure qry_LB2BeforeInsert(DataSet: TDataSet);
    procedure RXDBG_LB1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure RXDBG_LB2DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }

    procedure Edit_State(State: Integer); {设置界面状态}
    function if_Can_Modify: Boolean; {数据是否允许被修改}

    function Test_Fit_Ok: Boolean; {测试是否已经填写OK}

    function Test_Can_Modify: Boolean; {测试是否允许对选择的类进行修改} {判断是否在其他表中存在关联关系}
    function Test_Exist_Sub: Boolean; {测试大类是否存在小类,如果存在,则不能修改}
    function Sub_Test_Can_Modify(l_lb, l_BH: string): Boolean; {测试是否允许对选择地类进行修改}

    function Test_Can_Save: Boolean; {测试是否能够保存}
  public
    { Public declarations }
  end;

var
  Frm_pplbwh: TFrm_pplbwh;

implementation
uses  datas,Pub;
{$R *.DFM}

var
  Sys_State: Integer; {标志当前系统处于的状态}


procedure TFrm_pplbwh.FormCreate(Sender: TObject);
begin
  Caption := CYZPPTIT;
  DWMC.Caption := '使用单位:' + VG_UnitName;

  with qry_LB1 do
  begin
    Close;
    SQL.Text := 'Select JYPLDM,LB,MC,BH,ZT from TG_JYPLDMB where Length(JYPLDM)=1 order by JYPLDM';
    Open;
  end;
  Edit_State(0);
  GetAllColWidth(Self);
end;

procedure TFrm_pplbwh.qry_LB1AfterScroll(DataSet: TDataSet);
begin
  with qry_LB2 do
  begin
    Close;
    SQL.Text := 'Select JYPLDM,LB,MC,BH,ZT from TG_JYPLDMB where Length(JYPLDM)=3 and SubStr(JYPLDM,1,1)=''' + qry_LB1.FieldByName('JYPLDM').AsString + ''' order by JYPLDM';
    Open;
  end;
end;

procedure TFrm_pplbwh.RXDBG_LB1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  if qry_LB1.FieldByName('ZT').AsString = '0' then
    RXDBG_LB1.Canvas.Font.Color := clred;

  RXDBG_LB1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

procedure TFrm_pplbwh.RXDBG_LB2DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  if qry_LB2.FieldByName('ZT').AsString = '0' then
    RXDBG_LB2.Canvas.Font.Color := clred;

  RXDBG_LB2.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

procedure TFrm_pplbwh.qry_LB2AfterScroll(DataSet: TDataSet);
begin
  dbe_JYPLDM2.Text := Copy(qry_LB2.FieldByName('JYPLDM').AsString, 2, 2);
end;

procedure TFrm_pplbwh.bbtn_ExitClick(Sender: TObject);
begin
  Close;
end;

procedure TFrm_pplbwh.dbe_JYPLDM2Exit(Sender: TObject);
begin
  if (Sys_State = 3) or (Sys_State = 2) then
  begin
    qry_LB2.Edit;
    if Length(dbe_JYPLDM2.Text) = 1 then
      dbe_JYPLDM2.Text := '0' + dbe_JYPLDM2.Text;
    qry_LB2.FieldByName('JYPLDM').AsString := qry_LB1.FieldByName('JYPLDM').AsString + dbe_JYPLDM2.Text;
  end;
end;

procedure TFrm_pplbwh.RXDBG_LB1Enter(Sender: TObject);
begin
  gb_LB1.Visible := True;
  gb_LB2.Visible := False;
end;

procedure TFrm_pplbwh.RXDBG_LB2Enter(Sender: TObject);
begin
  gb_LB1.Visible := False;
  gb_LB2.Visible := True;
end;

procedure TFrm_pplbwh.qry_LB1BeforeInsert(DataSet: TDataSet);
begin
  Abort;
end;

procedure TFrm_pplbwh.qry_LB2BeforeInsert(DataSet: TDataSet);
begin
  Abort;
end;


{===============================================================================}
{新增}
procedure TFrm_pplbwh.bbtn_AddClick(Sender: TObject);
var
  Before_Insert: TDataSetNotifyEvent;
begin
  if gb_LB1.Visible = True then
  begin {增加大类} {}
    Edit_State(1);
    dbe_JYPLDM1.SetFocus;
    with qry_LB1 do
    begin
      Before_Insert := qry_LB1.BeforeInsert;
      qry_LB1.BeforeInsert := nil;
      Append;
      qry_LB1.BeforeInsert := Before_Insert;
      FieldByName('LB').AsString := '大类';
    end;
  end
  else
  begin {增加小类} {}
    Edit_State(2);
    dbe_JYPLDM2.SetFocus;
    with qry_LB2 do
    begin
      Before_Insert := qry_LB2.BeforeInsert;
      qry_LB2.BeforeInsert := nil;
      Append;
      qry_LB2.BeforeInsert := Before_Insert;
      FieldByName('LB').AsString := '小类';
    end;
  end;
end;

{-------------------------------------------------------------------------------}
{修改}
procedure TFrm_pplbwh.bbtn_ModifyClick(Sender: TObject);
begin
  if if_Can_Modify = False then
  begin
    CHQMsgBox('当前记录属于系统必须数据,不能修改!');
    Exit;
  end;
  if Test_Can_Modify = False then
  begin
    CHQMsgBox('当前记录已经在系统中使用,不能再进行修改!');
    Exit;
  end;

  if Test_Exist_Sub = True then
  begin
    CHQMsgBox('当前大类下已经存在小类,不能再进行修改!');
    Exit;
  end;

  if gb_LB1.Visible = True then
  begin {增加大类} {}
    if qry_LB1.IsEmpty = True then Exit;
    Edit_State(1);
    qry_LB1.Edit;
  end
  else
  begin {增加小类} {}
    if qry_LB2.IsEmpty = True then Exit;
    Edit_State(3);
    qry_LB2.Edit;
  end;
end;

{-------------------------------------------------------------------------------}
{删除数据}
procedure TFrm_pplbwh.bbtn_DeleteClick(Sender: TObject);
var
  l_JYPLDM: string;
  l_JYPLDM_XL: string;
  SQLString: string;
begin
  if gb_LB1.Visible = True then
  begin
    if qry_LB1.IsEmpty = True then
      Exit;
  end
  else if qry_LB2.IsEmpty = True then
    Exit;

  if if_Can_Modify = False then
  begin
    CHQMsgBox('当前记录属于系统必须数据,不能删除!');
    Exit;
  end;
  if Test_Can_Modify = False then
  begin
    CHQMsgBox('当前记录已经在系统中使用,不能删除!');
    Exit;
  end;

  if Test_Exist_Sub = True then
  begin
    CHQMsgBox('当前大类下已经存在小类,不能删除!');
    Exit;
  end;

  if CHQMsgBox('确实要删除记录吗', 2) = mrNo then
    Exit;

  if gb_LB1.Visible = True then
  begin
    SQLString := 'Delete from TG_JYPLDMB where JYPLDM=''' + qry_LB1.FieldByName('JYPLDM').AsString + '''';

    qry_LB1.Prior;
    if qry_LB1.Bof = True then qry_LB1.Next;
    l_JYPLDM := qry_LB1.FieldByName('JYPLDM').AsString;

    with qry_Tmp do
    begin
      Close;
      SQL.Text := SQLString;
      ExecSQL;
    end;
    FormCreate(Sender); {重新读取数据} {}
    qry_LB1.Locate('JYPLDM', l_JYPLDM, []);
  end
  else
  begin
    SQLString := 'Delete from TG_JYPLDMB where JYPLDM=''' + qry_LB2.FieldByName('JYPLDM').AsString + '''';
    qry_LB2.Prior;
    if qry_LB2.Bof = True then qry_LB2.Next;
    l_JYPLDM_XL := qry_LB2.FieldByName('JYPLDM').AsString;

    l_JYPLDM := qry_LB1.FieldByName('JYPLDM').AsString;

    with qry_Tmp do
    begin
      Close;
      SQL.Text := SQLString;
      ExecSQL;
    end;
    FormCreate(Sender); {重新读取数据} {}

    qry_LB1.Locate('JYPLDM', l_JYPLDM, []);
    qry_LB2.Locate('JYPLDM', l_JYPLDM_XL, []);
    RXDBG_LB2.SetFocus;
  end;
end;

{-------------------------------------------------------------------------------}
{保存}
procedure TFrm_pplbwh.bbtn_SaveClick(Sender: TObject);
begin
  if Test_Fit_Ok = False then
    Exit;

  if Test_Can_Save = False then
  begin
    CHQMsgBox('已经存在此类代码,不能保存!');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -