📄 unit_public.pas
字号:
{//------------------------------------------------------------------------
//设计时间 : 2002.1.21
//初始设计者 : 曾忠诚
//模块名称 : 大客户系统公共模块和全部变量的存放地
//模块功能 : 把系统需要使用到的全局变量和部分的函数写入该模块
//输入 : 密文原文和密码的CRC码
//输出 : 加密或者解密的内容
//本单元的构成方式为:
// 1.interface --> uses --> type --> const --> Procudure / Function --> var
// 2.const --> procedure/function
//------------------------------------------------------------------------
//以下内容是本模块的修改历史
}
unit Unit_Public;
interface
uses Classes , Windows , SysUtils , Registry , IniFiles , WinSock , Dbtables ,
Forms , Controls , Series , Teengine , Db , Stdctrls , Comctrls , Messages , Dialogs ,
ComObj , Grids , Dbgrids , Dbctrls , QuickRpt, ExtCtrls , QRCTRLS , QRPrntr , printers ,
Graphics , TFlatEditUnit , TFlatSpinEditUnit , TFlatComboBoxUnit , TFlatCheckBoxUnit,
TFlatMemoUnit ,Dmmain, unit_ArchivesCustInfo, Unit_ArchivesGroupInfo ;
Type
TCpuType = (cpu8086, cpu286, cpu386, cpu486, cpuPentium); //类出CPU的各种类,目前出现的类
TDateStyle = (pDate, pTime, pDateTime);
TStatusStyle =(Clear,Stat);
TStringArray = Array[0..100] Of String;
Const //全局常量的定义
IniName = 'DooneVip.ini'; //INI文件名
RegName = 'Software\Doonesoft\VipSystem\'; //注册表的键名
//声明执行Sql语句的函数.
function Fun_GExecSqlText(SSqlText, SModu : string; STag : integer=-1) : integer;
//声明修改历史的函数
function Fun_LExeUpdateHis(SRecordValue : TStringList) : integer;
function GF_pressshift:boolean;
function GF_ReadIni(INI_app:string;INI_key:string;INI_default:string;INI_file:string=IniName):string;
procedure GP_WriteIni(INI_app:string;INI_key:string;INI_val:string;INI_file:string=IniName);
function GF_readreg(const v_key:string;const v_name:string;v_default:string=''):string;
procedure GP_writereg(const v_key:string;const v_name:string;v_value:string);
procedure GP_delreg(const v_key:string;const v_name:string='');
procedure GP_CreateSeries(Aparent:Twincontrol;Achart:TcustomAxisPanel;Atable:Tdataset;x,y,Atitle:string;Aname:integer;Aflag:integer=0);//创建所有的TCustomSeries对象
procedure GP_FreeSeries(Achart:TcustomAxisPanel;Aflag:integer=0); //释放所有的TCustomSeries对象
Function CpuType : TCpuType; //使用汇编获取CPU的型号
function GetWindowVersion : String; //获取WINDOWS的版本号
function GetPhysicalMemory : String; //获取系统的内存的大小
function getIPs: TStrings; //获取本机固定IP地址
function GetLastIP:string; //获取本机动态IP地址
function Get_IP:string; //获取本地机器的ip地址
function PingByName(ComputerName : String) : String; //使用ping的命令,来ping指定的机器
function SearchByPYIndexStr(SourceStrs:TStrings;PYIndexStr:string):string; //获取指定汉字的拼音的第一个字母
function GetPYIndexChar( hzchar:string):char; //获取指定汉字的拼音
function GetNormal_Month( Current_Date : TDateTime):String; //获取正常出帐月(福建移动)
function GetCurrentMax_Month( Current_Date_YYYYMMDD : String):String; //获取指定月份的最大出帐年月日
function GetCurrentMin_Month( Current_Date_YYYYMMDD : String):String; //获取指定月份的最小出帐年月日
function GetNextSeq(FilePath : String ; Section : String ; KeyWord : String ; Step : Integer) : String;//获取指定文件中的指定Section中的关键字的累加Step的数值
function HasInternetConnect:boolean;
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
function GF_UserEnter_Log(EntryModule : String ; //操作人员登陆时候的模块名称
EntryEvt : String ; //操作人员登陆时候操作的模块的某一个按钮或者事件的名称
Login_Seq : Integer ; //登陆唯一序列号,如果传入参数为-1,则登入;否则为退出登陆
Wk_no : String; //操作人员登陆工号
MEMO:String //具体的操作事件的说明
):Integer; //系统返回登陆序列号
function GF_SaveAndGetSeq(Form_Name : String ; NewSeq : Integer ) : integer ;
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Procedure Obtain_A_Chart(Aparent:Twincontrol;Achart:TcustomAxisPanel;ATable:Tdataset;X,Y,ATitle:string;Aflag:integer=0);
Function GF_ExportData(FileName : String ; //数据导出的文件名,
ReportTitle : String ; //到处报表的标题
ObjectSource : TObject //导出的数据源的存放地
):Boolean; //导出成功 - true 导出错误 - false
Function GF_ConnectDB( PS_ConnectUserName : String ) : TDatabase ;
Procedure Pro_GFillInitValue(pFormName:TForm;pValue:String=''); //初始化下拉框控件值
Function Fun_GetDomiBound(pComponents:TObject;pGetType:Integer;pValue:String=''):Boolean; //读取登陆用户所管辖的地市、局向、工号
Function Fun_CorrCode(pValue:String='';pGetType:Integer=1):Integer; //读取地市代码或局向代码。
Function ShowRecord(pQuery:TQuery;pObject:TObject):Integer; //显示记录
Function Fun_GetCodeName(pObject:TObject;pValue:String=''):String; //读取下拉框值的代码
Function Fun_GetCity(pObject:TObject;pValues:String='';pStyle:Integer=0;pPlace:String=''):String; //初始化地市下拉框及读取下拉框地市的代码
Function Fun_GetCounty(pObject:TObject;pValues:String='';pCity:String='';pStyle:Integer=0;pPlace:String=''):String; //初始化局向下拉框及读取下拉框局向的代码
Function Fun_GetRoom(pObject:TObject;pAddValues:String='';pCityName :String='';pHome_Name:String='';pStyle:Integer=0;pPlace:String=''):String;
Function Fun_GetArea(pObject:TObject;pValues:String='';pCity:String='';pCounty:String='';pStyle:Integer=0;pPlace:String=''):String; //初始化区域下拉框或读取下拉框区域的代码
Function Fun_GetManager(pObject:TObject;pValues:String='';pCity:String='';pCounty:String='';pPlace:String=''):String; //初始化工号下拉框框
Function Fun_GetDate(Between:Integer=0;Style:Integer=0):String; //读取系统时间
Function Fun_GetIndiTop(pObject:TObject;pValues:String='';pStyle:Integer=0):String; //初始化大类喜好或读取大类喜好值的代码
Function Fun_GetIndiTitle(pObject:TObject;pValues:String='';pIndiTop:String='';pStyle:Integer=0):String; //初始化小类喜好或读取小类喜好值的代码
Function Fun_GetCityCountyName(pQuery:TQuery;pStyle:Integer=0):String;
Function Fun_GetIndi(pQuery:TQuery;pStyle:Integer=0):String;
Function Fun_GetSERV_TOPIC(pObject:TObject;psCityNo:String;piOff_No_Home,piStyle:Integer;psAddString:String=''):String;
Function AnalyzeSQL(pSQL:String):Integer;
procedure GP_ToCallCustInfo( MP_Sid : String ) ;
procedure GP_ToCallGroupInfo( MP_GroupId : String ) ;
Function Fun_Purview(pForm:TForm;pGrade:Integer):Boolean; //权限控制
procedure Gp_sortDbgrid(column:Tcolumn;Dbgrid_sort:TDbgrid); //DBGRID排序
var //全局变量的定义
GS_Wk_No : String ; //当前登陆的人员的工号,由系统在登陆的时候对该变量的值进行写入,
//在整个系统结束之前不允许任何的修改。add by zengzc 2002.01.21
GS_WK_name:String;
GS_IpAddress : String ; //当前登陆的人员的工号,由系统在登陆的时候对该变量的值进行写入,
//可以使用函数getIPs[0]获取当前的第一个IP地址
//在整个系统结束之前不允许任何的修改。add by zengzc 2002.01.21
GS_Wk_No_Lvl : Integer ; //登陆人员的级别
GS_DB_UserName : String='db_vip' ; //默认的‘vip'主要使用测试的时候使用,在测试完毕后删除。
// 登陆到后台数据库服务器的用户名 ,主要用于在动态生成数据库控件的时候判断是哪个database连接到了数据库种?vip
// 在登陆导系统的时候,写入该全局变量
GI_Sign : Integer ; //用于公共的整型的符号,如在模块中需要使用的1-代表增加 2-代表删除等等。。
GS_Sign : String ; //用于公共的字符型的符号,如在模块中需要使用的1-代表增加 2-代表删除等等。。
//以上两个主要用户在窗体和窗体之间的数据信号的传递,在本窗体的传递建议是用自己定义的模块全部变量
GI_role : integer; //用于定义LOGIN权限管理中的角色 其对应关系统查ROLE_DEFINE表
GS_Role_name:string;
GS_canton: string='福建'; //用于定义省
GI_CITY :integer; //用于定义市
GS_City_Name:string;
GS_exch :string ; //用于定义局向
GS_exch_name:string;
GI_DEPT: integer; //用于定义部门
GS_dept_name:string;
Gs_DEPT_no:string; //用于定义部门主任
GI_Class: integer; //用于定义班组
GS_class_name:string;
GS_Class_no:string; //用于定义班组长
GS_ACCESS:STRING;//有权使用编辑功能功能 W_F_ACCESS->W_F_A_CODE;
GS_D_BOUNT_CODE:STRING ;//有权使用管辖范围
GS_TEL:STRING; //电话号码
AUpdateValue:TStringArray;
implementation
uses main;
const //本单元局部变量
MP_OperateTable = 'TL_OPERATE_LOG' ; //写入操作日志的表名称
MP_OperateSeq = 'SEQ_LOG_ID' ; //写入操作日志的序列号名称
(*********************************************************************
功能:读INI文件(默认为本目录的vipset.ini)
参数:INI_app--INI文件中的section INI_key--ini文件中的key
ini_default--value的默认值
返回--ini文件中的value
**********************************************************************)
function GF_ReadIni(INI_app:string;INI_key:string;INI_default:string;INI_file:string=IniName):string;
var
v_ini:tinifile;
begin
v_ini:=tinifile.Create(extractfilepath(application.exename)+ini_file);
result:=v_ini.ReadString(INI_app,INI_key,INI_default);
v_ini.Free;
end;
(*********************************************************************
功能:写INI文件(默认为本目录的vipini.ini)
参数:INI_app--INI文件中的section INI_key--ini文件中的key
ini_val--ini文件中的value
**********************************************************************)
procedure GP_WriteIni(INI_app:string;INI_key:string;INI_val:string;INI_file:string=IniName);
var
v_ini:tinifile;
begin
v_ini:=tinifile.Create(extractfilepath(Application.ExeName)+ini_file);
v_ini.WriteString(INI_app,INI_key,INI_val);
v_ini.UpdateFile;
v_ini.Free;
end;
(**********************************************************
功能:读注册表
**********************************************************)
function GF_readreg(const v_key:string;const v_name:string;v_default:string=''):string;
var
v_Reg:TRegistry;
begin
v_reg:=TRegistry.Create;
with v_reg do
begin
RootKey:=HKEY_LOCAL_MACHINE;
try
begin
if keyexists(REGNAME+v_key) then
begin
OpenKey(REGNAME+v_key,false);
result:=readstring(v_name);
if result='' then
result:=v_default;
end
else
result:=v_default;
end;
except
end;
v_Reg.CloseKey;
v_reg.Free;
end;
end;
(**********************************************************
功能:写注册表
**********************************************************)
procedure GP_writereg(const v_key:string;const v_name:string;
v_value:string);
var
v_Reg:TRegistry;
begin
v_reg:=TRegistry.Create;
with v_reg do
begin
RootKey:=HKEY_LOCAL_MACHINE;
try
begin
if not KeyExists(REGNAME+v_key) then
createkey(REGNAME+v_key);
openkey(REGNAME+v_key,true);
writestring(v_name,v_value);
end;
except
End;
v_Reg.CloseKey;
v_reg.Free;
end;
end;
(**********************************************************
功能:删除注册表
**********************************************************)
procedure GP_delreg(const v_key:string;const v_name:string='');
var
v_Reg:TRegistry;
begin
v_reg:=TRegistry.Create;
with v_reg do
begin
RootKey:=HKEY_LOCAL_MACHINE;
try
if v_name='' then
deletekey(REGNAME+v_key)
else
if KeyExists(REGNAME+v_key) then
begin
openkey(REGNAME+v_key,true);
v_reg.DeleteValue(v_name);
end;
except
End;
v_Reg.CloseKey;
v_reg.Free;
end;
end;
function GF_pressshift:boolean;
var
// v_time:single;
v_shiftkey:byte;
begin
result:=false;
// v_time:=gettickcount/1000;
//延迟2秒
// while(gettickcount/1000-v_time<=2) do
// begin
// application.ProcessMessages;
v_shiftkey:=getkeystate(vk_shift);
v_shiftkey:=v_shiftkey shr 7;
if v_shiftkey=1 then //如果按SHIFT键
begin
result:=true;
// break;
end;
// end;
end;
procedure GP_CreateSeries(
Aparent:Twincontrol;
Achart:TcustomAxisPanel;
Atable:Tdataset;
x,y,Atitle:string;
Aname:integer;
Aflag:integer=0);
//创建所有的TCustomSeries对象
begin
case Aflag of
0:
begin
with Tlineseries.Create(Aparent) do //折线图
begin
ParentChart:=Achart;
name:='series'+inttostr(aflag)+inttostr(Aname);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -