upublic.pas
来自「商场活动抽奖系统,无需控件,可以正常使用.」· PAS 代码 · 共 334 行
PAS
334 行
unit uPublic;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, DB, DBTables, Mask, DBCtrls, Buttons,
ExtCtrls, Grids, DBGrids, Spin,ADODB,winsock,ComObj
,WinInet;
procedure setEdit(Sender:TDBEdit;B:Boolean);
procedure setTEdit(Sender:TEdit;B:Boolean);
//procedure SetSEdit(Sender:TSpinEdit;B:Boolean);
procedure setCombo(Sender:TDBComboBox;B:Boolean);
procedure setTCombo(Sender:TComboBox;B:Boolean);
procedure SetMemo(Sender:TDBMemo;B:Boolean);
procedure SetTMemo(Sender:TMemo;B:Boolean);
procedure SetChk(Sender:TDBCheckbox;B:Boolean);
procedure SetTChk(Sender:TCheckbox;B:Boolean);
procedure setMaskEdit(Sender:TMaskEdit;B:Boolean);
function intToSlen(i:integer;l:integer):String;
function dateToUS(jf:String):String;
function StrToDs(S:String):String;
procedure MxFormatEditKeyPress(Edit:TCustomEdit;var Key:Char;EditType:integer;
Digits:integer);
function Changdx2(mmje: Double): String;
function ConstToStr(S:String):string;
function DateToS(S:String):string;
function hzAddS(const sScrStr: string;i:integer): string;
procedure SetMove(Table:TADOQuery;btn_next,btn_last,btn_Prior,btn_First:TSpeedButton);
function getEmplnm(emplno:String;DB:String;ADOconn:TADOconnection):String;
function getDetpnm(emplno:String;DB:String;ADOconn:TADOconnection):String;
function getTime(ADOconn:TADOconnection):String;
procedure CopyDbDataToExcel(Args: array of const);
function Disablehide:Boolean;
function Enablehide:Boolean;
function GetLocalIP(var LocalIp: string): Boolean;
procedure GetWin32Type(var WindowsFlag:integer;var WinINfo: string);
function SetPrivilege(PrivilegeName: String; Enable: Boolean): Boolean;//down pc
var
DBName,DBName_wfdb:String ;
DBServer:String; //DBServer数据 库名称
CID:String='';
CName:String=''; //保存用户名
US:array[0..20] of String; //保存用户权限设置
hHk :HHOOK;
type
PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT;
KBDLLHOOKSTRUCT = record
vkCode: DWORD;
ScanCode: DWORD;
Flags: DWORD;
Time: DWORD;
dwExtraInfo: DWORD;
end;
implementation
{=================================================================
功 能: 返回本机的局域网Ip地址
参 数: 无
返回值: 成功: True, 并填充LocalIp 失败: False
备 注:
版 本:
1.0 2002/10/02 21:05:00
=================================================================}
function GetLocalIP(var LocalIp: string): Boolean;
var
HostEnt: PHostEnt;
Ip: string;
addr: pchar;
Buffer: array [0..63] of char;
GInitData: TWSADATA;
begin
Result := False;
try
WSAStartup(2, GInitData);
GetHostName(Buffer, SizeOf(Buffer));
HostEnt := GetHostByName(buffer);
if HostEnt = nil then Exit;
addr := HostEnt^.h_addr_list^;
ip := Format('%d.%d.%d.%d', [byte(addr [0]),
byte (addr [1]), byte (addr [2]), byte (addr [3])]);
LocalIp := Ip;
Result := True;
finally
WSACleanup;
end;
end;
function ycxsks( yc:Boolean): Boolean;stdcall; //隐藏显示任务栏
var
h:THandle;
begin
if yc = True then
begin
h:=FindWindow('Shell_TrayWnd',nil);
ShowWindow(h,SW_hide); //隐藏任务栏
end
else
begin
h:=FindWindow('Shell_TrayWnd',nil);
ShowWindow(h,SW_SHOW); //显示任务栏
end;
Result:=true;
end;
function keyHookProc(nCode: Integer;WParam: WPARAM;LParam: LPARAM): LRESULT;stdcall;
//调用键盘勾子,左右win功能去除
var
p: PKBDLLHOOKSTRUCT;
y: integer;
begin
if nCode<0 then
Result:= CallNextHookEx(hHk,nCode,WParam,LParam)
else
begin
y := 0;
case WParam of
WM_KEYDOWN,WM_SYSKEYDOWN: //按皱后判断
begin
p:=PKBDLLHOOKSTRUCT(Lparam);
if p^.vkCode = VK_LWIN then
y := 1;
if p^.vkCode = VK_RWIN then
y := 1;
end;
WM_KEYUP,WM_SYSKEYUP: //松开后判断
begin
p:=PKBDLLHOOKSTRUCT(Lparam);
if p^.vkCode = VK_LWIN then
y := 1;
if p^.vkCode = VK_RWIN then
y := 1;
end;
end;
if y=1 then
Result:=1 //?if WIN 屏掉
else
Result:= CallNextHookEx(hHk,nCode,WParam,LParam); //?其它键直接返回
end
end;
function Enablehide:Boolean;//stdcall;export; //外部调用
begin
if hHk = 0 then
begin
hHk := SetWindowsHookEx(13,@keyHookProc,HInstance,0);
Result := True;
end
else
Result := False;
ycxsks(true);
end;
function Disablehide:Boolean;// stdcall; export; //外部调用
begin
if hHk <> 0 then
begin
UnHookWindowsHookEx(hHk);
hHk := 0;
Result := True;
end
else
Result := False;
ycxsks(False);
end;
//DBGrid导出EXcel 调入格式:CopyDbDataToExcel([DBGrid1,DBGrid2]);
procedure CopyDbDataToExcel(Args: array of const);
var
iCount, jCount: Integer;
XLApp: Variant;
Sheet: Variant;
I: Integer;
begin
Screen.Cursor := crHourGlass;
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
XLApp.Quit;
VarClear(XLApp);
end;
try
XLApp := CreateOleObject('Excel.Application');
except
Screen.Cursor := crDefault;
Exit;
end;
XLApp.WorkBooks.Add;
XLApp.SheetsInNewWorkbook := High(Args) + 1;
for I := Low(Args) to High(Args) do
begin
XLApp.WorkBooks[1].WorkSheets[I+1].Name := TDBGrid(Args[I].VObject).Name;
Sheet := XLApp.Workbooks[1].WorkSheets[TDBGrid(Args[I].VObject).Name];
if not TDBGrid(Args[I].VObject).DataSource.DataSet.Active then
begin
Screen.Cursor := crDefault;
Exit;
end;
TDBGrid(Args[I].VObject).DataSource.DataSet.first;
for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 do
Sheet.Cells[1, iCount + 1] :=
TDBGrid(Args[I].VObject).Columns.Items[iCount].Title.Caption;
sleep(2);
jCount := 1;
while not TDBGrid(Args[I].VObject).DataSource.DataSet.Eof do
begin
for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 do
begin
Sheet.Cells[jCount + 1, iCount + 1] :=
TDBGrid(Args[I].VObject).Columns.Items[iCount].Field.AsString;
end ;
Inc(jCount);
TDBGrid(Args[I].VObject).DataSource.DataSet.Next;
end;
XlApp.Visible := True;
end;
Screen.Cursor := crDefault;
end;
//取人员的名字
function getEmplnm(emplno:String;DB:String;ADOconn:TADOconnection):String;
var
Query:TADOQuery;
begin
Query:=TADOQuery.Create(nil);
//Query.ConnectionString:=DBName;
Query.Connection:=ADOconn;
Query.SQL.Text:='select emplnm from hrs.hrs101t0'+DB+' where emplno like ''%'+emplno+'%''';
Query.Open;
if Query.RecordCount>0 then
begin
Result:=Query.Fields.Fields[0].AsString;
end
else
Result:='';
Query.Close;
Query.Free;
end;
//取人员的部门
function getDetpnm(emplno:String;DB:String;ADOconn:TADOconnection):String;
var
Query:TADOQuery;
begin
Query:=TADOQuery.Create(nil);
//Query.ConnectionString:=DBName;
Query.Connection:=ADOconn;
Query.SQL.Text:='select'+
' decode(course_id,null,decode(group_id,null,decode(part_id,null,crowd_id,part_id),group_id),course_id)'+
' as deptnm '+
' from hrs.hrs101t0'+DB+' a,hrs.hrs102t0'+DB+' b '+
' where a.deptno=b.deptno and emplno like ''%'+emplno+'%''' ;
Query.Open;
if Query.RecordCount>0 then
begin
Result:=Query.Fields.Fields[0].AsString;
end
else
Result:='';
Query.Close;
Query.Free;
end;
//取数据库的时间
function getTime(ADOconn:TADOconnection):String;
var
Query:TADOQuery;
begin
Query:=TADOQuery.Create(nil);
//Query.ConnectionString:=DBName;
Query.Connection:=ADOconn;
Query.SQL.Text:='select to_char(sysdate,''yyyy/mm/dd HH24:MI:SS'') from dual ';
Query.Open;
Result:=Query.Fields.Fields[0].AsString;
Query.Close;
Query.Free;
end;
//控制记录移动按钮
procedure SetMove(Table:TADOQuery;btn_next,btn_last,btn_Prior,btn_First:TSpeedButton);
begin
//if not (Table.State in[dsEdit,dsInsert]) then
if (Table.State <> dsBrowse) or (Table.RecordCount=0) then
begin
btn_next.Enabled:=False;
btn_last.Enabled:=False;
btn_Prior.Enabled:=False;
btn_First.Enabled:=False;
exit;
end;
if Table.Eof=True then
begin
btn_next.Enabled:=False;
btn_last.Enabled:=False;
end
else
begin
btn_next.Enabled:=True;
btn_last.Enabled:=True;
end;
if Table.Bof=True then
begin
btn_Prior.Enabled:=False;
btn_First.Enabled:=False;
end
else
begin
btn_Prior.Enabled:=True;
btn_First.Enabled:=True;
end;
end;
//uses
// UrmzpRpt,URmJz,URmDh,UgsZpRpt,UGsJz,UGsWt;
{此函数在所限制组件的OnKeyPress事件中调用。Key即为OnKeyPress携带的
Key:Char参数;EditType为限制的类型:1-任意输入;2-整数输入;3-浮点输入;
Digits为浮点数输入时小数的位数,如果是零,则可输入任意位数。另外,此
函数只适用于有Text、SelStart、SelLength等属性的TWinControl类的派生类。
}
procedure MxFormatEditKeyPress(Edit:TCustomEdit;var Key:Char;EditType:integer;
Digits:integer);
begin
if key=#13 then exit;
if (Key=#27) or (Key=#8) or (EditType=1) then exit;
if EditType=2 then
if not (Key in ['0'..'9','+','-'] ) then Key:=#0;
if EditType=3 then
if not (Key in ['0'..'9','+','-','.'] ) then Key:=#0;
//北
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?