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, SyncObjs, System.ImageList; type TMyThread = class(TThread) protected procedure Execute; override; end; 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; Timer_link: TTimer; 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); procedure Timer_linkTimer(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } function intiData(): Boolean; procedure GetServerDate(); public ConDateBaseString: string; V_User, V_UserID, User_Id, User_Name: string; { Public declarations } // server, dtbase, user, pswd: String; end; var FormMain: TFormMain; gServerDate: TdateTime; server, dtbase, user, pswd: string; {���ݿ����Ӳ���} gConString: string; {ȫ�������ַ���} gCurHandle: hwnd; //��ǰ������ newh: hwnd; CriticalSection: TCriticalSection; {�����ٽ�} implementation uses logon, U_Link, U_iniParam; {$R *.dfm} procedure TMyThread.Execute; begin FreeOnTerminate := True; CriticalSection.Enter; try with FormMain.ADOQueryTmp do begin close; sql.Clear; sql.Add('select getdate()'); open; end; except try with FormMain.ADOConnection1 do begin Connected := false; ConnectionString := FormMain.ConDateBaseString; LoginPrompt := false; Connected := true; end; except end; end; CriticalSection.Leave; end; function TFormMain.intiData(): Boolean; var mProdId: string; //��ǰ��Ʒ�� begin SetLength(server, 255); SetLength(dtbase, 255); SetLength(user, 255); SetLength(pswd, 255); server := ''; dtbase := ''; user := 'sa'; pswd := 'rightsoft@123'; ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Password=' + pswd + ';Persist Security Info=True;User ID=' + user + ';Initial Catalog=' + dtbase + ';Data Source=' + server; ConDateBaseString := ADOConnection1.ConnectionString; try frmLink := TfrmLink.create(self); if frmLink.ShowModal = 1 then begin ADOConnection1.ConnectionString := frmLink.fADOConnString; frmLink.hide; end else begin application.MessageBox('ͨѶ���������Ӵ���', '��ʾ��Ϣ', MB_ICONERROR); PostMessage(Handle, WM_CLOSE, 0, 0); frmLink.Release; end; except application.MessageBox('ͨѶ���������Ӵ���', '��ʾ��Ϣ', MB_ICONERROR); PostMessage(Handle, WM_CLOSE, 0, 0); end; ConDateBaseString := ADOConnection1.ConnectionString; Left := 0; Top := 0; Width := Screen.Width; Height := Screen.Height; try ADOConnection1.Close; ADOConnection1.Open; Result := true; except result := false; application.MessageBox('���ݿ�����ʧ�ܣ�', '����', mb_Ok + MB_ICONERROR); PostMessage(self.handle, WM_CLOSE, 0, 0); end; end; procedure TFormMain.FormCreate(Sender: TObject); var tmpstr: string; begin CriticalSection := TCriticalSection.Create; if IsINIFile() then ReadINIFile() else WriteINIFile; 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('��ȷ����Ҫ�˳���ǰϵͳ��?', '��ʾ', 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 := '��ǰʱ�䣺' + datetimetostr(now); except end; end; procedure TFormMain.N2Click(Sender: TObject); begin end; /////////////////////////////////////////////// //��������ȡϵͳ���� //////////////////////////////////////////////// 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 := '��ǰʱ�䣺' + datetimetostr(now); end; procedure TFormMain.FormShow(Sender: TObject); var XSStr: string; begin try IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'TradeInspFile.INI'); Panel1.Caption := IniFile.ReadString('������������', 'ģ������1', '�ֹ�����'); Panel3.Caption := IniFile.ReadString('������������', 'ģ������2', 'ɨ�����'); XSStr := IniFile.ReadString('������������', 'ģ����ʾ1', '1'); if XSStr = '1' then begin Panel1.Visible := True; end else begin Panel1.Visible := False; end; XSStr := IniFile.ReadString('������������', 'ģ����ʾ2', '1'); if XSStr = '1' then begin Panel3.Visible := True; end else begin Panel3.Visible := False; end; finally IniFile.Free; end; Timer2.Enabled := True; end; procedure TFormMain.ToolButton12Click(Sender: TObject); var CanQuit: Boolean; begin sendmessage(newh, 1034, 4, 0); if application.MessageBox('��ȷ����Ҫ�˳���ǰϵͳ��?', '��ʾ', 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; DllName, DllInt: string; IniFile: TIniFile; xx: string; begin //��̬���� //newh:=getForm(Application,1,ADOConnection1,PChar('sa'),PChar('dsa')); //��̬���� // 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('��ǰ��¼�˰���Ϊ�գ�','��ʾ',0); Exit; end; } try IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'TradeInspFile.INI'); DllName := IniFile.ReadString('������������', 'DLL�ļ�1', 'TradeManagePB.dll'); DllInt := IniFile.ReadString('������������', 'DLL���ú�1', '3'); finally IniFile.Free; end; Th := LoadLibrary(PChar(DllName)); if Th > 0 then begin try // Tp := GetProcAddress(Th, 'GetDllForm'); Tp := GetProcAddress(Th, PAnsichar(AnsiString('GetDllForm'))); if Tp <> nil then begin Tf := TMyFunc(Tp); Tf(Application, 0, strtoint(DllInt), 0, 0, PChar(User_Id), PChar(User_Name), PChar(xx), PChar('55'), PChar(xx), PChar(xx), PChar(xx), PChar(xx), PChar(xx), PChar(xx), PChar(xx), PChar(xx), pchar(xx), PChar(xx), PChar(ConDateBaseString)); end else begin ShowMessage('��ӡִ�д���'); end; finally // FreeLibrary(); end; end else begin ShowMessage('�Ҳ���' + Trim('dllname')); end; end; procedure TFormMain.Panel2Click(Sender: TObject); var CanQuit: Boolean; begin sendmessage(newh, 1034, 4, 0); if application.MessageBox('��ȷ����Ҫ�˳���ǰϵͳ��?', '��ʾ', 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; DllName, DllInt: string; IniFile: TIniFile; begin //��̬���� //newh:=getForm(Application,1,ADOConnection1,PChar('sa'),PChar('dsa')); //��̬���� // 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('��ǰ��¼�˰���Ϊ�գ�','��ʾ',0); Exit; end; } try IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'TradeInspFile.INI'); DllName := IniFile.ReadString('������������', 'DLL�ļ�2', 'TradeManagePB.dll'); DllInt := IniFile.ReadString('������������', 'DLL���ú�2', '301'); finally IniFile.Free; end; Th := LoadLibrary(PChar(DllName)); if Th > 0 then begin try Tp := GetProcAddress(Th, 'GetDllForm'); if Tp <> nil then begin Tf := TMyFunc(Tp); newh := Tf(Application, 0, strToint(DllInt), 0, 0, PChar(User_Id), PChar(User_Name), PChar(''), PChar(TToolButton(Sender).Caption), PChar(''), PChar(''), '', '', '', '', '', '', '', '', PChar(ConDateBaseString)); end else begin ShowMessage('��ӡִ�д���'); end; finally // FreeLibrary(); end; end else begin ShowMessage('�Ҳ���' + Trim('dllname')); end; end; procedure TFormMain.Timer_linkTimer(Sender: TObject); begin TMyThread.Create(False); end; procedure TFormMain.FormDestroy(Sender: TObject); begin CriticalSection.Free; end; end.