D7wmleixiaofu/检验主程序/spmain.pas

388 lines
10 KiB
ObjectPascal
Raw Permalink Normal View History

2025-04-30 16:04:42 +08:00
unit spmain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ComCtrls, ToolWin, ActnMan, ActnCtrls, ActnMenus,
ActnList, DB, ADODB, Grids,IniFiles, jpeg,
ExtCtrls, Buttons, ImgList, StdCtrls, cxControls,
cxSplitter, MovePanel;
const
keys='ljb^0122!@#*&^%$';
type
TFormMain = class(TForm)
StatusBar1: TStatusBar;
ADOConnection1: TADOConnection;
ImageList25: TImageList;
ImageList3: TImageList;
ImageList24: TImageList;
ADQ_Temp: TADOQuery;
Image_Tree: TImageList;
ADOQueryTmp: TADOQuery;
Timer2: TTimer;
MovePanel1: TMovePanel;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
procedure FormCreate(Sender: TObject);
procedure MNCloseClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Timer1Timer(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ToolButton12Click(Sender: TObject);
procedure Panel1Click(Sender: TObject);
procedure Panel2Click(Sender: TObject);
procedure Panel3Click(Sender: TObject);
private
{ Private declarations }
function intiData():Boolean;
procedure GetServerDate();
public
{ Public declarations }
// server, dtbase, user, pswd: String;
end;
var
FormMain: TFormMain;
gServerDate:TdateTime;
server, dtbase, user, pswd: String; {<7B><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>}
gConString:String; <><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>}
gCurHandle:hwnd; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V_User,V_UserID,User_Id,User_Name:String;
newh:hwnd;
ConDateBaseString:String;
implementation
uses
logon, U_Link,U_iniParam;
{$R *.dfm}
function TFormMain.intiData():Boolean;
var
mProdId:string; //<2F><>ǰ<EFBFBD><C7B0>Ʒ<EFBFBD><C6B7>
begin
result:=false;
//ConDateBaseString:=ADOConnection1.ConnectionString;
try
frmLink:=TfrmLink.create(self);
if frmLink.ShowModal=1 then
begin
ConDateBaseString:=frmLink.fADOConnString;
frmLink.hide;
end
else
begin
application.MessageBox('ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD>','<27><>ʾ<EFBFBD><CABE>Ϣ',MB_ICONERROR);
PostMessage(Handle, WM_CLOSE, 0, 0);
frmLink.Release;
end;
except
application.MessageBox('ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD>','<27><>ʾ<EFBFBD><CABE>Ϣ',MB_ICONERROR);
PostMessage(Handle, WM_CLOSE, 0, 0);
end;
// ConDateBaseString:=ADOConnection1.ConnectionString;
{ Left := 0;
Top := 0;
Width := Screen.Width;
Height := Screen.Height; }
try
with ADOConnection1 do
begin
ADOConnection1.KeepConnection:=false;
ADOConnection1.KeepConnection:=true;
Connected:=false;
ConnectionString:= ConDateBaseString;
Connected:=true;
end;
Result:=true;
except
result:=false;
application.MessageBox('<27><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD>','<27><>ʾ<EFBFBD><CABE>Ϣ',MB_ICONERROR);
PostMessage(Handle, WM_CLOSE, 0, 0);
end;
end;
procedure TFormMain.FormCreate(Sender: TObject);
var
tmpstr: String;
begin
if intiData() then
begin
GetServerDate();
// P_Tmp.Visible := True;
//P_Tmp.Align := AlClient;
FormLogon:=TFormLogon.Create(self);
FormLogon.ShowModal;
end;
end;
procedure TFormMain.FormResize(Sender: TObject);
begin
//P_Tmp.Align := AlClient;
sendmessage(newh,1034,1,0);
end;
procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
Var
CanQuit:Boolean;
begin
sendmessage(newh,1034,4,0);
If FormMain.MDICHildCount > 0 Then
CanQuit:=application.MessageBox('<27><>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>Ҫ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ǰϵͳ<CFB5><CDB3>?','<27><>ʾ',mb_yesno+ mb_IconQuestion)=idyes ;
If CanQuit Then
begin
Timer2.Enabled := false;
ADOConnection1.Close;
Action := CaFree;
End
Else
action := caNone;
end;
procedure TFormMain.MNCloseClick(Sender: TObject);
begin
close;
end;
procedure TFormMain.Timer1Timer(Sender: TObject);
begin
try
statusbar1.Panels[0].Text:='<27><>ǰʱ<C7B0>䣺'+datetimetostr(now);
except
end;
end;
procedure TFormMain.N2Click(Sender: TObject);
begin
end;
///////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>
////////////////////////////////////////////////
procedure TFormMain.GetServerDate();
begin
with ADOQueryTmp do
begin
close;
sql.clear;
sql.Add('select getDate()as dt');
Open;
gServerDate:=fieldByName('dt').AsDateTime;
close;
end;
end;
procedure TFormMain.Timer2Timer(Sender: TObject);
begin
FormMain.StatusBar1.Panels[0].Text:='<27><>ǰʱ<C7B0>䣺'+datetimetostr(now);
end;
procedure TFormMain.FormShow(Sender: TObject);
begin
Timer2.Enabled:=True;
end;
procedure TFormMain.ToolButton12Click(Sender: TObject);
var
CanQuit:Boolean;
begin
sendmessage(newh,1034,4,0);
if application.MessageBox('<27><>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>Ҫ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ǰϵͳ<CFB5><CDB3>?','<27><>ʾ',mb_yesno+ mb_IconQuestion)<>IDYES then Exit;
ADOConnection1.Close;
Close;
end;
procedure TFormMain.Panel1Click(Sender: TObject);
type
TMyFunc = function(App:Tapplication; FormH:hwnd; FormID:integer;
Language: integer; WinStyle:integer;
GCode: Pchar; GName: Pchar; DataBase:Pchar;Title:PChar;
Parameters1:PChar;Parameters2:PChar;Parameters3:PChar;Parameters4:PChar;
Parameters5:PChar;Parameters6:PChar;Parameters7:PChar;Parameters8:PChar;
Parameters9:PChar;Parameters10:PChar;DataBaseStr:PChar):hwnd;stdcall;
var
Tf: TMyFunc;
Tp: TFarProc;
Th:Thandle;
begin
//<2F><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
//newh:=getForm(Application,1,ADOConnection1,PChar('sa'),PChar('dsa'));
//<2F><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
// showMessage(intTostr(application.Handle));
ADOConnection1.Connected:=False;
ADOConnection1.Connected:=True;
{ with ADOQueryTmp do
begin
Close;
sql.Clear;
sql.Add('select * from SY_User where UserId='''+Trim(User_Id)+'''');
Open;
end;
if Trim(ADOQueryTmp.FieldByName('BanZu').AsString)='' then
begin
Application.MessageBox('<27><>ǰ<EFBFBD><C7B0>¼<EFBFBD>˰<EFBFBD><CBB0><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD>','<27><>ʾ',0);
Exit;
end; }
with ADOQueryTmp do
begin
Close;
sql.Clear;
sql.Add('select * from SY_ModuleSub where ModuleSubID=''99'' ');
Open;
end;
if ADOQueryTmp.IsEmpty then
begin
Application.MessageBox(<><C3BB><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>Ϣģ<CFA2>飡','<27><>ʾ<EFBFBD><CABE>Ϣ',MB_ICONERROR);
Exit;
end;
Th := LoadLibrary(Pchar(trim(ADOQueryTmp.fieldbyname('formFile').AsString)));
if Th > 0 then
begin
try
Tp := GetProcAddress(Th, 'GetDllForm');
if Tp <> nil then
begin
Tf := TMyFunc(Tp);
newh:=Tf(Application,0,ADOQueryTmp.fieldbyname('formID').AsInteger,0,0,
PChar(User_Id),
PChar(User_Name),
PChar(trim(ADOQueryTmp.fieldbyname('formpara').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formname').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara1').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara2').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara3').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara4').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara5').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara6').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara7').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara8').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara9').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara10').AsString)),
PChar(ConDateBaseString)
);
end
else
begin
ShowMessage('<27><>ӡִ<D3A1>д<EFBFBD><D0B4><EFBFBD>');
end;
finally
// FreeLibrary();
end;
end
else
begin
ShowMessage('<27>Ҳ<EFBFBD><D2B2><EFBFBD>'+Trim('dllname'));
end;
end;
procedure TFormMain.Panel2Click(Sender: TObject);
var
CanQuit:Boolean;
begin
sendmessage(newh,1034,4,0);
if application.MessageBox('<27><>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>Ҫ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ǰϵͳ<CFB5><CDB3>?','<27><>ʾ',mb_yesno+ mb_IconQuestion)<>IDYES then Exit;
ADOConnection1.Close;
Close;
end;
procedure TFormMain.Panel3Click(Sender: TObject);
type
TMyFunc = function(App:Tapplication; FormH:hwnd; FormID:integer;
Language: integer; WinStyle:integer;
GCode: Pchar; GName: Pchar; DataBase:Pchar;Title:PChar;
Parameters1:PChar;Parameters2:PChar;Parameters3:PChar;Parameters4:PChar;
Parameters5:PChar;Parameters6:PChar;Parameters7:PChar;Parameters8:PChar;
Parameters9:PChar;Parameters10:PChar;DataBaseStr:PChar):hwnd;stdcall;
var
Tf: TMyFunc;
Tp: TFarProc;
Th:Thandle;
begin
//<2F><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
// showMessage(intTostr(application.Handle));
ADOConnection1.Connected:=False;
ADOConnection1.Connected:=True;
{ with ADOQueryTmp do
begin
Close;
sql.Clear;
sql.Add('select * from SY_User where UserId='''+Trim(User_Id)+'''');
Open;
end;
if Trim(ADOQueryTmp.FieldByName('BanZu').AsString)='' then
begin
Application.MessageBox('<27><>ǰ<EFBFBD><C7B0>¼<EFBFBD>˰<EFBFBD><CBB0><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD>','<27><>ʾ',0);
Exit;
end; }
with ADOQueryTmp do
begin
Close;
sql.Clear;
sql.Add('select * from SY_ModuleSub where ModuleSubID=''97'' ');
Open;
end;
if ADOQueryTmp.IsEmpty then
begin
Application.MessageBox(<><C3BB><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2>ֺϲ<D6BA>ģ<EFBFBD>飡','<27><>ʾ<EFBFBD><CABE>Ϣ',MB_ICONERROR);
Exit;
end;
Th := LoadLibrary(Pchar(trim(ADOQueryTmp.fieldbyname('formFile').AsString)));
if Th > 0 then
begin
try
Tp := GetProcAddress(Th, 'GetDllForm');
if Tp <> nil then
begin
Tf := TMyFunc(Tp);
newh:=Tf(Application,0,ADOQueryTmp.fieldbyname('formID').AsInteger,0,0,
PChar(User_Id),
PChar(User_Name),
PChar(trim(ADOQueryTmp.fieldbyname('formpara').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formname').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara1').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara2').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara3').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara4').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara5').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara6').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara7').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara8').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara9').AsString)),
PChar(trim(ADOQueryTmp.fieldbyname('formpara10').AsString)),
PChar(ConDateBaseString)
);
end
else
begin
ShowMessage('<27><>ӡִ<D3A1>д<EFBFBD><D0B4><EFBFBD>');
end;
finally
// FreeLibrary();
end;
end
else
begin
ShowMessage('<27>Ҳ<EFBFBD><D2B2><EFBFBD>'+Trim('dllname'));
end;
end;
end.