u_form_base.pas

来自「超信人力资源管理系统,一个用Delphi编写的人事管理系统」· PAS 代码 · 共 481 行 · 第 1/2 页

PAS
481
字号

///
///===============基FORM=========//
//
unit U_Form_base;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, DBGRIDEH, Grids, StdCtrls, DB, ADODB, Buttons, ToolWin, ComCtrls, DBCtrls;

type
  TF_Form_base = class(TForm)
    Q_main: TADOQuery;
    Q_detail: TADOQuery;
    DS_main: TDataSource;
    DS_detail: TDataSource;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormActivate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Q_detailAfterInsert(DataSet: TDataSet);
    procedure Q_mainAfterInsert(DataSet: TDataSet);
    procedure DS_mainStateChange(Sender: TObject);
    procedure Q_mainBeforeInsert(DataSet: TDataSet);
    procedure Q_mainBeforeDelete(DataSet: TDataSet);
    procedure Q_mainAfterDelete(DataSet: TDataSet);
    procedure Q_detailAfterDelete(DataSet: TDataSet);
    procedure Q_mainAfterEdit(DataSet: TDataSet);
    procedure Q_detailAfterEdit(DataSet: TDataSet);
    procedure Q_mainAfterPost(DataSet: TDataSet);
    procedure Q_detailAfterPost(DataSet: TDataSet);
    procedure Q_detailBeforeInsert(DataSet: TDataSet);
    procedure Q_detailBeforeDelete(DataSet: TDataSet);
    procedure Q_detailBeforeEdit(DataSet: TDataSet);
    procedure Q_mainBeforeEdit(DataSet: TDataSet);

  private
    { Private declarations }
  public

    CLASS_MAIN_TABLE: string; //类中主表
    CLASS_DETAIL_TABLE: string; //类中从表
    CLASS_KEY_FIELD: string; //类中关键字
    CLASS_ONE_FLAG: BOOLEAN; //类中的是否单表操作
   // CLASS_OLD_CON: string;   //类的老连接

    STATE_FLAG: BOOLEAN; //主表是否在编辑状态
    //类中记录权限
    IS_INSERT, IS_EDIT, IS_DELETE, IS_FIND, IS_PRINT, IS_View, IS_EDITPRINT, IS_Other, IS_ADUIT: BOOLEAN;
    DESIGN_FLAG: BOOLEAN; //是否处于设计状态
    { Public declarations }

    procedure MY_LabelClick(Sender: TObject);
    procedure Set_billcode;
    procedure set_edit_enabled;
  end;

var
  F_Form_base: TF_Form_base;

implementation

uses U_data, U_main;

{$R *.dfm}



procedure TF_Form_base.set_edit_enabled; //设置DBEDIT状态
var
  I: integer;
begin
//================================================如果数据集在编辑状态
  if (DS_MAIN.DataSet.State in [DSEDIT, DSINSERT]) then
  begin
    for i := 0 to COMPONENTCOUNT - 1 do
    begin
      if COMPONENTS[i].Tag = 1 then CONTINUE;
      if (COMPONENTS[i] is TDBEDIT) then
        tDBEDIT(COMPONENTS[i]).READONLY := False
      else
        if (uppercase(COMPONENTS[i].classNAME) = 'TDBCOMBOBOX') then
          tDBCOMBOBOX(COMPONENTS[i]).READONLY := FALSE
        else
          if (uppercase(COMPONENTS[i].classNAME) = 'TDBMEMO') then
            TDBMEMO(COMPONENTS[i]).READONLY := FALSE;
    end;
  end
  //==========================================
  else //===============================================如果数据集不在编辑状态
    for i := 0 to componentcount - 1 do
    begin
      if COMPONENTS[i].Tag = 1 then CONTINUE;
      if (uppercase(COMPONENTS[i].classNAME) = 'TDBEDIT') then
        tDBEDIT(COMPONENTS[i]).READONLY := TRUE
      else
        if (uppercase(COMPONENTS[i].classNAME) = 'TDBCOMBOBOX') then
          tDBCOMBOBOX(COMPONENTS[i]).READONLY := TRUE
        else
          if (uppercase(COMPONENTS[i].classNAME) = 'TDBMEMO') then
            TDBMEMO(COMPONENTS[i]).READONLY := TRUE;
    end;
   //=============================================
end;



procedure TF_Form_base.SET_BILLCODE;
begin
//=================================
end;


procedure TF_Form_base.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  //=-========

end;

procedure TF_Form_base.MY_LabelClick(Sender: TObject);
begin
  if not DESIGN_FLAG then EXIT;
  if LOGIN_CODE <> 'SYSTEM' then EXIT;
 // F_LABEL_SET.EDIT1.TEXT := TLABEL(SENDER).CAPTION;
  //F_LABEL_SET.SHOWMODAL;
  //TLABEL(SENDER).CAPTION := F_LABEL_SET.EDIT1.TEXT;
 // SQL_S := 'DELETE T_LANGUAGE_LABEL WHERE FORM_NAME=''' + NAME + ''' AND LABEL_NAME=''' + TLABEL(SENDER).NAME + '''';
  //SQL_EXEC(SQL_S);
 // SQL_S := 'INSERT T_LANGUAGE_LABEL (FORM_NAME,LABEL_NAME,_CHINESE)VALUES(''' + NAME + ''',''' + TLABEL(SENDER).NAME + ''',''' + TLABEL(SENDER).CAPTION + ''')';
 // SQL_EXEC(SQL_S);
end;

procedure TF_Form_base.FormCreate(Sender: TObject);
var I: INTEGER;
begin

  //COLOR := COLOR3; //窗体颜色
  //FILE_NAME := NAME;
 // STATE_FLAG := False; //主表的DATASET状态。。。
  self.Font.Size := 10;
  Self.ParentFont := true;
  for I := 0 to ComponentCount - 1 do //  设置DBGRID 颜色
  begin
    try
      if Components[I].ClassType = TDBGridEH then
      begin

        TDBGridEH(Components[I]).Flat := true;
       // TDBGridEH(Components[I]).FixedColor := COLOR4;
        //TDBGridEH(Components[I]).RowColorFlag := TRUE;
        //TDBGridEH(Components[I]).RowOneColor := COLOR1;
       // TDBGridEH(Components[I]).RowTWOColor := COLOR2;
      end;
      if components[i].ClassType = TDateTimePicker then
      begin
      //   TDateTimePicker(components[i].Name).Date:=date;
      end;
    except
      CONTINUE;
    end;
  end;
end;

procedure TF_Form_base.FormShow(Sender: TObject);
//var i: integer;
begin
//-----
//设置各组件的字体。。。
//-------------

  SQL_S := 'SELECT * FROM TB_Form WHERE FormName=''' + copy(classname, 2, 100) + '''';
  sql_open(sql_s);
//============================设置窗体的属性==================================
  width := DM.Q_TempA.fieldbyname('Width').AsInteger;
  Height := DM.Q_TempA.fieldbyname('Height').AsInteger;
  Top := DM.Q_TempA.fieldbyname('FormTop').AsInteger;
  Left := DM.Q_TempA.fieldbyname('FormLeft').AsInteger;
//============================================================================


  //确定是否一个表
  CLASS_MAIN_TABLE := TRIM(DM.Q_tempA.FIELDBYNAME('MAIN_TABLE').ASSTRING); //加载主表
  CLASS_DETAIL_TABLE := TRIM(DM.Q_tempA.FIELDBYNAME('DETAIL_TABLE').ASSTRING); //加载从表
  CLASS_KEY_FIELD := TRIM(DM.Q_tempA.FIELDBYNAME('Key_Field').ASSTRING); //加载关键字
  CLASS_ONE_FLAG := TRIM(CLASS_DETAIL_TABLE) = ''; //断是否有从表

  SQL_S := 'INSERT INTO TB_SYS_LOG (UCODE,computer,Logintime,Dotime,Title,Havedo)VALUES(''' + LOGIN_CODE + ''',''' + computer_name + ''',Convert(varchar(20),Getdate(),20),Convert(varchar(20),Getdate(),20),''' + CAPTION + ''',''进入'')';
  Insert_log(SQL_S);

  SQL_S := 'SELECT * FROM TB_Acount_Detail WHERE CNID in (Select Sid from TB_Acount_Menu where Cnid in( Select Sid from TB_Acount where Ucode=''' + LOGIN_CODE
    + ''')) AND FORMNAME=''' + NAME + '''';
  SQL_OPEN(SQL_S);

  //----------------加载权限----------------------------------
  IS_INSERT := DM.Q_TEMPA.FIELDBYNAME('_INSERT').ASBOOLEAN;
  IS_EDIT := DM.Q_TEMPA.FIELDBYNAME('_EDIT').ASBOOLEAN;
  IS_DELETE := DM.Q_TEMPA.FIELDBYNAME('_DELETE').ASBOOLEAN;
  IS_FIND := DM.Q_TEMPA.FIELDBYNAME('_FIND').ASBOOLEAN;
  IS_PRINT := DM.Q_TEMPA.FIELDBYNAME('_PRINT').ASBOOLEAN;
  IS_VIEW := DM.Q_TEMPA.FIELDBYNAME('_VIEW').ASBOOLEAN;
  IS_EDITPRINT := DM.Q_TEMPA.FIELDBYNAME('_EDITPRINT').ASBOOLEAN;
  IS_ADUIT := DM.Q_TEMPA.FIELDBYNAME('_ADUIT').ASBOOLEAN;
  IS_OTHER := DM.Q_TEMPA.FIELDBYNAME('_OTHER').ASBOOLEAN; //加载可以编辑界面LABEL权限
 //-----------------------------------------------------------

  //设置窗体各个组件的属性------------------------
 { SQL_S := 'SELECT * FROM TB_Form_Comment WHERE FORMNAME=''' + NAME + '''';
  DM.Q_TEMPB.CLOSE;
  DM.Q_TEMPB.SQL.CLEAR;
  DM.Q_TEMPB.SQL.ADD(SQL_S);
  DM.Q_TEMPB.OPEN;
   }


 //========================置DBEDIT等控件的。。是否能输入=======================
 // set_edit_enabled;
//=============================================================================
end;


procedure TF_Form_base.FormActivate(Sender: TObject);
begin

  MAIN_TABLE := CLASS_MAIN_TABLE; //将主表交付给全局主表
  DETAIL_TABLE := CLASS_DETAIL_TABLE; //将类从表交付给全局从表
  KEY_FIELD := CLASS_KEY_FIELD; //将类关键字交付给全局关键字
  //OLD_CON := CLASS_OLD_CON;                  //将类的连接交付给全局连接
  ONETable_FLAG := CLASS_ONE_FLAG; //  将是否单表操作交付给全局变最


   M_TABLE := Q_MAIN; //将主表交给全局变量度   M—table
  D_TABLE := Q_DETAIL; //将从表交付给全局变量   D_table
  LAST_ACTIVE_FORM := NAME;
  LAST_ACTIVE_FORM_CAPTION := CAPTION;
///=============================================================================

⌨️ 快捷键说明

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