📄 dm.pas
字号:
unit dm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,ComCtrls,
ExtCtrls,Db, DBTables, DBClient, MConnect,inifiles, SConnect,Mask,Grids,
Excel97,COMobj,StdCtrls, DBGrids,Variants,Shellapi,winsock, DBCtrls,
Menus, types,
Zlib, ADODB;
type
TDMf = class(TDataModule)
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
Q_load: TADOQuery;
private
procedure PageControlDrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
procedure ToKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
{ Private declarations }
public
{ Public declarations }
procedure SelectDate(sCDS:TClientDataSet; sFieldName:string);
procedure MDupdata(var MCDS,DCDS:Tclientdataset;MTbName,DTbName:string;out ErrorMessage:string);
function getipaddress:string;
function ShowHostName:string;
function PosEx(const SubStr, S: string): integer;
procedure FillComboBox(Sender: TObject; TableName: string; FieldName: string);
end;
Const
MainRegistryPath='\Software\Jari Erp Soft\JXC SubSystem\'; //保存设置的注册表主路径
var
DMf: TDMf;
canmodified:Boolean;//是否有修改权限
userno,username,userrole,workmen_bm,ipaddress,userbmbh,userbmmc:string;//用户编号、用户名称、用户角色、用户部门、用户IP、用户部门编号
xzztbh,ztxx:string;//选择帐套编号、帐套信息
dwmc:string;//单位名称
DatabaseName:string;//数据库名称
ErrorMessage:string;//错误信息
form_name:Tform;//通用查询中的form名
dbgrid_name:Tdbgrid;//通用查询中的datagrid名
datasource_name:Tdatasource;//通用查询中的datasource名
table_name:string;//通用查询中的表名
chda_array:array[0..20] of string;//存货档案数组
fz_array:array[0..20] of string;//复制
ckcondition:string; //入库单中选货位时设定仓库条件,只显示本仓库中的货位
color_panel:integer= $00DCDCDC;
color_dbgrid:integer=$00DCDCDC;
color_StatusBar:integer=$00DCDCDC;
color_Form:integer=$00DCDCDC;
color_Top:integer=$00DCDCDC;
qcnian,qcyue:integer;//期初年份和月份 (即系统启用年份和月份)
usernian,useryue:integer;//操作年度和月份
userrq:string; //系统的操作日期
sfjzbz:string; //是否结帐标志
rkd1:array[0..20] of string;
ckd1:array[0..20] of string;
ISinsert:boolean; //判断按纽是增加还是修改
SelAffirm:integer;//查询\选择确认标志
affirmb:integer;//查询确认标志
sql_condition:string;//sql条件
cxtj:string;//查询条件
tjtj:string;//统计条件
crkd_condition:string;//查看入库单详细信息时的select语句条件
cckd_condition:string;//查看出库单详细信息时的select语句条件
ime_name:string;//设置输入法;
procedure MyAssert(Assert:boolean;Msg:string;FocusCtrl:TWinControl=nil);
implementation
uses main_page;
{$R *.DFM}
procedure MyAssert(Assert:boolean;Msg:String;FocusCtrl:TWinControl=nil); //断言,当断言Assert为假时Abort
begin
if not Assert then
begin
MessageBox(0,PChar(Msg),'提示信息', MB_ICONSTOP or MB_OK or MB_SYSTEMMODAL);
if FocusCtrl<>nil then FocusCtrl.SetFocus;
Abort;
end;
end;
procedure TDMf.FillComboBox(Sender: TObject; TableName: string; FieldName: string);
begin
try
Q_load.Close;
Q_load.sql.text := 'select distinct ' + FieldName + ' from ' + TableName + ' order by ' + FieldName;
Q_load.Open;
except
exit;
end;
//清空ComboBox或DBComboBox
TCombobox(Sender).clear;
Q_load.first;
//将CDS_load中指定Fieldname的值赋于ComboBox或DBComboBox,循环赋值。
while not (Q_load.Eof) do
begin
TCombobox(Sender).Items.add(Q_load.FieldByName(FieldName).AsString);
Q_load.next;
end;
Q_load.first;
//将CDS_load中指定Fieldname的第一个值赋于ComboBox或DBComboBox。
TCombobox(Sender).Text := Q_load.FieldByName(FieldName).AsString;
Q_load.Close;
end;
procedure Tdmf.SelectDate(sCDS:TClientDataSet; sFieldName:string);
begin
//选择日期
{ UCalendarf:=TUCalendarf.Create(nil);
with UCalendarf do
try
ShowModal;
Finally
//如果选日期标志为1,则赋值,否则不赋值。
if uaffirmb=1 then
begin
sCDS.edit;
sCDS.FieldByName(sFieldName).asstring:=datetostr(UCalendarf.Calendar1.CalendarDate);
end;
//将UCalendar1释放
Free;
end; }
end;
procedure TDMf.MDupdata(var MCDS,DCDS:Tclientdataset;MTbName,DTbName:string;out ErrorMessage:string);
begin
end;
//得到用户机器的IP地址
function TDMf.getipaddress:string;
var
ip:string;
ch:array[1..32] of char;
i:integer;
wsdata:Twsadata;
myhost:phostent;
begin
if wsastartup(2,wsdata)<>0 then
begin
MessageDlg('没有成功返回!',mtInformation,[mbOK],0);
Halt(2);
end;
try
if gethostname(@ch[1],32)<>0 then
begin
MessageDlg('没有成功返回!',mtInformation,[mbOK],0);
Halt(3);
end;
except
MessageDlg('没有成功返回!',mtInformation,[mbOK],0);
Halt(3);
end;
myhost:=gethostbyname(@ch[1]);
if myhost=nil then
begin
MessageDlg('IP地址为空!',mtInformation,[mbOK],0);
Halt(4);
end
else
begin
for i:=1 to 4 do
begin
ip:=IntToStr(ord(myhost.h_addr^[i-1]));
Result:=Result+ip;
if i<4 then
Result:=Result+'.';
end;
end;
end;
//得到机器名
function TDMf.ShowHostName:string;
var
wVersionRequested : WORD;
wsaData : TWSAData;
p : PHostEnt;
s : array[0..128] of char;
begin
{启动 WinSock}
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
{计算机名}
GetHostName(@s, 128);
p := GetHostByName(@s);
result:=(Format('%s', [p^.h_Name]));
WSACleanup;
end;
procedure Tdmf.ToKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then //按的是回车键
if Sender is TDBEdit then
if (Sender as TDBEdit).Owner is TForm then
PostMessage(((Sender as TDBEdit).Owner as TForm).Handle,WM_KEYDOWN,VK_TAB,0);
end;
procedure Tdmf.PageControlDrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
Control.Canvas.Brush.Color:=color_Panel;
Control.Canvas.FillRect(Rect);
Control.Canvas.TextOut(Control.TabRect(TabIndex).Left+5,Control.TabRect(TabIndex).Top+3,(Control as TPageControl).Pages[TabIndex].Caption);
end;
function Tdmf.PosEx(const SubStr, S: string): integer; //取出第一个已知字符的位置
var
i, X: integer;
begin
i := 1;
while i <= Length(S) do
begin
if S[i] <> SubStr then Inc(i);
if S[i] = SubStr then
begin
Result := i;
exit;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -