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

📄 sys_jypydlx.pas

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

*)

unit sys_jypydlx;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, DBTables, ComCtrls, ImgList, ExtCtrls, StdCtrls, CheckLst, Grids,
  DBGrids, ActnList, Buttons, Spin;
type
  TDataState = (dsBrowse, dsInsert, dsEdit);

type
  TFrm_jypydlx = class(TForm)
    Qry_ydlx: TQuery;
    ILi_Edit: TImageList;
    Panel1: TPanel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    BitBtn6: TBitBtn;
    ActionList1: TActionList;
    Act_add: TAction;
    Act_del: TAction;
    Act_mod: TAction;
    Act_sav: TAction;
    Act_can: TAction;
    Act_rtn: TAction;
    DS_ydlx: TDataSource;
    Qry_super: TQuery;
    Act_pagechange: TAction;
    tabCtl_lx: TTabControl;
    ImageList1: TImageList;
    DBGid_ydlx: TDBGrid;
    Panel2: TPanel;
    chkBox_tz: TCheckListBox;
    Panel3: TPanel;
    Label1: TLabel;
    Splitter1: TSplitter;
    SpinEdit1: TSpinEdit;
    Label2: TLabel;
    Eit_dm: TEdit;
    Label3: TLabel;
    Eit_mc: TEdit;
    Act_tzExit: TAction;
    BitBtn7: TBitBtn;
    Act_send: TAction;
    procedure Act_addExecute(Sender: TObject);
    procedure Act_modExecute(Sender: TObject);
    procedure Act_canExecute(Sender: TObject);
    procedure Act_rtnExecute(Sender: TObject);
    procedure Act_pagechangeExecute(Sender: TObject);
    procedure Qry_ydlxAfterScroll(DataSet: TDataSet);
    procedure Act_savExecute(Sender: TObject);
    procedure Act_tzExitExecute(Sender: TObject);
    procedure SpinEdit1Change(Sender: TObject);
    procedure chkBox_tzClickCheck(Sender: TObject);
    procedure Act_delExecute(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure Act_sendExecute(Sender: TObject);
  private
    { Private declarations }
    vlp_ba_tz: array of boolean;
    vlp_sl_tz: TStringList;
    FDataEditState: TDataState;
    procedure SetDataEdit(const state: TDataState);
    Function ExistRecord(Tablenamestr, Conditionstr: string): boolean;
    Function CheckExit(): boolean;
  public
    { Public declarations }
    function Execute(const DB: TDatabase): boolean;
  end;

var
  Frm_jypydlx: TFrm_jypydlx;

implementation
uses
  datas, Pub,GF_pub;

{$R *.DFM}

Function TFrm_jypydlx.CheckExit(): boolean;
begin
  result := true;
  if (FDataEditState <> dsBrowse) then
    case CHQMsgBox('确定要放弃所做修改吗?', 3) of
    IDNo:
      begin
        Act_savExecute(nil);
        if FDataEditState = dsBrowse then
        begin
          Qry_ydlx.Close;
          Qry_super.Close;
          if Assigned(vlp_sl_tz) then
            vlp_sl_tz.Free;
        end else
          result := false;
      end;
    IDYes:
      begin
        Act_canExecute(nil);
        Qry_ydlx.Close;
        Qry_super.Close;
        if Assigned(vlp_sl_tz) then
          vlp_sl_tz.Free;
      end;
    IDCancel:
      result := false;
    end
  else
  begin
    Qry_ydlx.Close;
    Qry_super.Close;
    if Assigned(vlp_sl_tz) then
      vlp_sl_tz.Free;
  end;
end;

Function TFrm_jypydlx.ExistRecord(Tablenamestr, Conditionstr: string): boolean;
begin
  with Qry_super do
  begin
    CLose;
    SQL.Clear;
    SQL.Add('Select count(*) from ' + Tablenamestr + ' Where ' + Conditionstr);
    Open;
    ExistRecord := (Fields[0].Asinteger > 0);
  end;
end;

procedure TFrm_jypydlx.SetDataEdit(const state: TDataState);
var
  i: integer;
begin
  FDataEditState := state;
  Act_Sav.Enabled := not (state = dsBrowse);
  Act_Can.Enabled := not (state = dsBrowse);

  Act_add.Enabled := (state = dsBrowse);
  Act_del.Enabled := (state = dsBrowse);
  Act_mod.Enabled := (state = dsBrowse);

  Eit_dm.ReadOnly := (state = dsBrowse) or (state = dsEdit);
  Eit_mc.ReadOnly := (state = dsBrowse);

  if (state = dsInsert) then
  begin
    Eit_dm.Text := '';
    Eit_mc.Text := '';
    for i:= 0 to chkBox_tz.Items.Count -1 do
      chkBox_tz.Checked[i]:= false;
    ActiveControl := Eit_dm;
  end;
  if (state = dsEdit) then
  begin
    SetLength(vlp_ba_tz, chkBox_tz.Items.Count);
    for i:= 0 to chkBox_tz.Items.Count -1 do
      if chkBox_tz.Checked[i] then
        vlp_ba_tz[i] := true
      else
        vlp_ba_tz[i] := false;

    ActiveControl := chkBox_tz;
  end;
end;

function TFrm_jypydlx.Execute(const DB: TDatabase): boolean;
begin
  Result := false;
  if not Assigned(DB) then
    exit;
  Caption := CYZPPTIT;
  SpinEdit1.Text := formatdatetime('YYYY',now);
  if not assigned(vlp_sl_tz) then
    vlp_sl_tz:= TStringList.Create;
  try
    Qry_ydlx.Close;
    Qry_ydlx.AfterScroll := nil;
    Qry_ydlx.DatabaseName := DB.DatabaseName;
    Qry_super.Close;
    Qry_super.DatabaseName := DB.DatabaseName;
    SetDataEdit(dsBrowse);
    Act_pagechangeExecute(nil);
    Qry_ydlx.AfterScroll := Qry_ydlxAfterScroll;
    Eit_dm.MaxLength := Qry_ydlx.FieldByName('YDLXDM').Size;
    Eit_mc.MaxLength := Qry_ydlx.FieldByName('YDLXMC').Size;
    Result := true;
  except
    CHQMsgBox('不能打开 <集邮票品发行量类型> 表 !');
    exit;
  end;
end;

procedure TFrm_jypydlx.Act_addExecute(Sender: TObject);
begin
  SetDataEdit(dsInsert);
end;

procedure TFrm_jypydlx.Act_modExecute(Sender: TObject);
begin
  if Qry_ydlx.IsEmpty then
    exit;
  SetDataEdit(dsEdit);
end;

procedure TFrm_jypydlx.Act_canExecute(Sender: TObject);
begin
  SetDataEdit(dsBrowse);
  Qry_ydlxAfterScroll(nil);
end;

procedure TFrm_jypydlx.Act_rtnExecute(Sender: TObject);
begin
  close;
end;

procedure TFrm_jypydlx.Act_pagechangeExecute(Sender: TObject);
begin
  if (FDataEditState <> dsBrowse) then
  begin
    case tabCtl_lx.TabIndex of
    0:
      tabCtl_lx.TabIndex := 1;
    1:
      tabCtl_lx.TabIndex := 0;
    end;
    exit;
  end;
  
  with Qry_ydlx do
  begin
    Close;
    SQL.Clear;
    case tabCtl_lx.TabIndex of
    0:
      SQL.Add('select distinct YDLXDM,YDLXMC from TG_YZPPYDLXB ' +
              'where ND=:ND order by YDLXDM');
    1:
      SQL.Add('select distinct YDLXDM,YDLXMC from TG_JYPYDLXB ' +
              'where ND=:ND order by YDLXDM');
    end;
    Params[0].Value := SpinEdit1.Text;
    Open;
  end;
  with Qry_super do
  begin
    Close;
    SQL.Clear;
    case tabCtl_lx.TabIndex of
    0:
      begin
        SQL.Add('select a.JHH as DM, concat(a.TMC, concat(''-'',b.MC)) as MC ' +
          'from TF_PFXJHTAO a, TG_YZPPTZDM b ' +
          'where a.TZDM = b.TZDM(+) and a.ND = :ND and ' +
          'length(a.PPLB) = 3 and ((a.PPLB like ''1%'') or (a.PPLB like ''8%'') or (a.PPLB like ''9%''))  and a.PPLB <> ''101'' ' +
          'order by a.fxl,a.xh');
        Params[0].Value := SpinEdit1.Text;
      end;
    1:
      SQL.Add('select JYPLDM as DM,MC from TG_JYPLDMB order by JYPLDM');
    end;
    Open;
    chkBox_tz.Items.Clear;
    if not Assigned(vlp_sl_tz) then
      vlp_sl_tz := TStringList.Create
    else
      vlp_sl_tz.Clear;
    while not Eof do
    begin
      chkBox_tz.Items.Add(FieldByName('MC').AsString);
      vlp_sl_tz.Add(FieldByName('DM').AsString);
      Next;
    end;
  end;
  Qry_ydlxAfterScroll(nil);
  Act_add.Enabled := tabCtl_lx.TabIndex = 1;
  Act_del.Enabled := (tabCtl_lx.TabIndex = 1) and (not Qry_ydlx.IsEmpty);
  Act_mod.Enabled := (tabCtl_lx.TabIndex = 1) and (not Qry_ydlx.IsEmpty);
end;

procedure TFrm_jypydlx.Qry_ydlxAfterScroll(DataSet: TDataSet);
var

⌨️ 快捷键说明

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