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 + -
显示快捷键?