

unit U_GetDllForm;
interface
uses
   Windows,Messages,forms,OleCtnrs,DateUtils,SysUtils,ADODB;
function GetDllForm(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;export;stdcall;
function ConnData():Boolean;

implementation
uses
  U_DataLink
  ,U_WeChatBindingCompany,U_WeChatBinding;

       /////////////////////////////////////////////////////////////////
      //         功能说明:取Dll中得窗体                              //
     //        参数说明：App>>调用应用程序；                        //
    //                 FormH>>调用窗口句柄 ；                      //
   //                 FormID>>窗口号;                             //
  //                 Language>>语言种类;                         //
 //                 WinStyle>>窗口类型；                        //
/////////////////////////////////////////////////////////////////
function GetDllForm(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;

var
  mnewHandle: hwnd;
  mstyle: TFormStyle;     // 0:子窗口; 1：普通窗口
  mstate: TWindowState;
  mborderstyle: TFormBorderStyle;
begin
   mNewHandle:=0;
   DName:=PChar(GName);
   DCode:=PChar(GCode);
   DdataBase:=DataBase;
   DTitCaption:=Title;
   DParameters1:=Parameters1;
   DParameters2:=Parameters2;
   DParameters3:=Parameters3;
   DParameters4:=Parameters4;
   DParameters5:=Parameters5;
   DParameters6:=Parameters6;
   DParameters7:=Parameters7;
   DParameters8:=Parameters8;
   DParameters9:=Parameters9;
   DParameters10:=Parameters10;


   MainApplication:=App;
   DCurHandle:=FormH;
   IsDelphiLanguage:= Language;

   Application:=TApplication(App);
   DCurHandle:=0;


   //赋值链接字符串
   SetLength(server, 255);
   SetLength(dtbase, 255);
   SetLength(user, 255);
   SetLength(pswd, 255);

   server:='121.40.233.100,7781';
//   server:='.';
   dtbase:='yongjindata';
   user:='sa';
   pswd:='rightsoft@123';
//   pswd:='rightsoft';
   DConString := 'Provider=SQLOLEDB.1;Password='+pswd+';Persist Security Info=True;User ID='
     +user+';Initial Catalog='+dtbase+';Data Source='+server;
   DConString:=DataBaseStr;
  // DName:='周高祥';

   //DParameters1:='高权限';   //高权限
   //DParameters3:='1';
   if not ConnData() then
   begin
     result:=0;
     exit;
   end;

   // 定义窗口类型 、状态
   if WinStyle=0 then
   begin
     mstyle := fsMDIChild  ;
     mstate := wsMaximized ;
     mborderstyle := bsSizeable;
   end
   else
   begin
     mstyle := fsNormal	;
     mstate := wsNormal ;
     mborderstyle := bsSizeable;
   end;
  /////////////////////
  //调用子模块窗口
   case FormId of
     111:  //用户绑定
     begin
       if frmWeChatBinding=nil then
       begin
         frmWeChatBinding:= TfrmWeChatBinding.Create(application.MainForm);
         with frmWeChatBinding do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmWeChatBinding.BringToFront;
       //句柄
       mNewHandle:=frmWeChatBinding.Handle;
     end ;
     112:  //供应商绑定
     begin
       if frmWeChatBindingCompany=nil then
       begin
         frmWeChatBindingCompany:= TfrmWeChatBindingCompany.Create(application.MainForm);
         with frmWeChatBindingCompany do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmWeChatBindingCompany.BringToFront;
       //句柄
       mNewHandle:=frmWeChatBindingCompany.Handle;
     end ;
   end ;

   Result:= mnewHandle;
   NewDllApp:=Application ;
end;
//===========================================================
  //建立数据库连接池
//===========================================================
function ConnData():Boolean;
begin
   if not Assigned(DataLink_WechatManage) then
     DataLink_WechatManage:=TDataLink_WechatManage.Create(Application);
  Try
    with DataLink_WechatManage.ADOLink do
    begin
      //if not Connected then
      begin
        Connected:=false;
        ConnectionString:=DConString;
        LoginPrompt:=false;
        Connected:=true;
      end;
    end;
    Result:=true;
  Except
    Result:=false;
    application.MessageBox('数据库连接失败！','错误',mb_Ok+ MB_ICONERROR);
  end;

end;
INITIALIZATION
  OldDllApp:= Application;

FINALIZATION
   DataLink_WechatManage.Free;
   Application := OldDllApp;

end.

