unit U_GetDllForm;
interface
uses
  Windows, Messages, forms, OleCtnrs, DateUtils, SysUtils, ADODB,IniFiles, dxcore,activeX;
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_GYSList,U_SXCKList,U_SXCKOutList,U_SXKCList,U_PBCKChkList,U_SXCKNewList,U_PBCKKCList
  ,U_WJGMDList,U_WJGCKOutList,U_WJGCKKCList,U_DJBRKList,U_DJBCKOutList,U_DJBCKKCList,U_ShaRKList,
  U_ShaOutList,U_ShaKCList,U_TZBCKList,U_TZBRKList,U_TZBKCList,U_DJBCRKList,U_YZRKList,U_SXRKCKList,
  U_DJQTKCList,U_DJQTRKList,U_DJQTCKList;

       /////////////////////////////////////////////////////////////////
      //         功能说明:取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:='124.91.217.13,7781';     //202.96.107.70,7781 haoyuedata
   server:='101.132.179.122,7781';     // 122.224.36.142,7781
   dtbase:='beiqidata'; //jinzhicaidata
  // dtbase:='LZ130506';
   user:='sa';
   pswd:='rightsoft@123';
   DConString := 'Provider=SQLOLEDB.1;Password='+pswd+';Persist Security Info=True;User ID='
     +user+';Initial Catalog='+dtbase+';Data Source='+server;

   IF trim(DataBaseStr)<>''then
   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
     -1:  //纱线入库
     begin
       if frmShaRKList=nil then
       begin
         frmShaRKList:= TfrmShaRKList.Create(application.MainForm);
         with frmShaRKList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmShaRKList.BringToFront;
       //句柄
       mNewHandle:=frmShaRKList.Handle;
     end ;
     -2:  //纱线出库
     begin
       if frmShaOutList=nil then
       begin
         frmShaOutList:= TfrmShaOutList.Create(application.MainForm);
         with frmShaOutList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmShaOutList.BringToFront;
       //句柄
       mNewHandle:=frmShaOutList.Handle;
     end ;
     -3:  //纱线库存
     begin
       if frmShaKCList=nil then
       begin
         frmShaKCList:= TfrmShaKCList.Create(application.MainForm);
         with frmShaKCList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmShaKCList.BringToFront;
       //句柄
       mNewHandle:=frmShaKCList.Handle;
     end ;
     1:  //坯布入库
     begin
       if frmSXCKNewList=nil then
       begin
         frmSXCKNewList:= TfrmSXCKNewList.Create(application.MainForm);
         with frmSXCKNewList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmSXCKNewList.BringToFront;
       //句柄
       mNewHandle:=frmSXCKNewList.Handle;
     end ;
     2:  //坯布出库
     begin
       if frmSXCKOutList=nil then
       begin
         frmSXCKOutList:= TfrmSXCKOutList.Create(application.MainForm);
         with frmSXCKOutList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmSXCKOutList.BringToFront;
       //句柄
       mNewHandle:=frmSXCKOutList.Handle;
     end ;
     3:  //坯布库存
     begin
       if frmPBCKKCList=nil then
       begin
         frmPBCKKCList:= TfrmPBCKKCList.Create(application.MainForm);
         with frmPBCKKCList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmPBCKKCList.BringToFront;
       //句柄
       mNewHandle:=frmPBCKKCList.Handle;
     end ;
     4:
     begin
       if frmSXRKCKList=nil then
       begin
         frmSXRKCKList:= TfrmSXRKCKList.Create(application.MainForm);
         with frmSXRKCKList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmSXRKCKList.BringToFront;
       //句柄
       mNewHandle:=frmSXRKCKList.Handle;
     end ;
     5:  //外加工入库
     begin
       if frmWJGMDList=nil then
       begin
         frmWJGMDList:= TfrmWJGMDList.Create(application.MainForm);
         with frmWJGMDList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmWJGMDList.BringToFront;
       //句柄
       mNewHandle:=frmWJGMDList.Handle;
     end ;
     6:  //外加工出库
     begin
       if frmWJGCKOutList=nil then
       begin
         frmWJGCKOutList:= TfrmWJGCKOutList.Create(application.MainForm);
         with frmWJGCKOutList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmWJGCKOutList.BringToFront;
       //句柄
       mNewHandle:=frmWJGCKOutList.Handle;
     end ;
     7:  //外加工库存
     begin
       if frmWJGCKKCList=nil then
       begin
         frmWJGCKKCList:= TfrmWJGCKKCList.Create(application.MainForm);
         with frmWJGCKKCList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmWJGCKKCList.BringToFront;
       //句柄
       mNewHandle:=frmWJGCKKCList.Handle;
     end ;
     8:  //待检布入库列表
     begin
       if frmDJBRKList=nil then
       begin
         frmDJBRKList:= TfrmDJBRKList.Create(application.MainForm);
         with frmDJBRKList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmDJBRKList.BringToFront;
       //句柄
       mNewHandle:=frmDJBRKList.Handle;
     end ;
     9:  //待检布出库列表
     begin
       if frmDJBCKOutList=nil then
       begin
         frmDJBCKOutList:= TfrmDJBCKOutList.Create(application.MainForm);
         with frmDJBCKOutList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmDJBCKOutList.BringToFront;
       //句柄
       mNewHandle:=frmDJBCKOutList.Handle;
     end ;
     10:  //待检布库存列表
     begin
       if frmDJBCKKCList=nil then
       begin
         frmDJBCKKCList:= TfrmDJBCKKCList.Create(application.MainForm);
         with frmDJBCKKCList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmDJBCKKCList.BringToFront;
       //句柄
       mNewHandle:=frmDJBCKKCList.Handle;
     end ;

     11:  //头子布入库列表
     begin
       if frmTZBRKList=nil then
       begin
         frmTZBRKList:= TfrmTZBRKList.Create(application.MainForm);
         with frmTZBRKList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmTZBRKList.BringToFront;
       //句柄
       mNewHandle:=frmTZBRKList.Handle;
     end ;
     12:  //头子布出库列表
     begin
       if frmTZBCKList=nil then
       begin
         frmTZBCKList:= TfrmTZBCKList.Create(application.MainForm);
         with frmTZBCKList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmTZBCKList.BringToFront;
       //句柄
       mNewHandle:=frmTZBCKList.Handle;
     end;
     13:  //头子布库存列表
     begin
       if frmTZBKCList=nil then
       begin
         frmTZBKCList:= TfrmTZBKCList.Create(application.MainForm);
         with frmTZBKCList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmTZBKCList.BringToFront;
       //句柄
       mNewHandle:=frmTZBKCList.Handle;
     end;
     14:
     begin
       if frmDJBCRKList=nil then
       begin
         frmDJBCRKList:= TfrmDJBCRKList.Create(application.MainForm);
         with frmDJBCRKList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmDJBCRKList.BringToFront;
       //句柄
       mNewHandle:=frmDJBCRKList.Handle;
     end;
     15:
     begin
       if frmYZRKList=nil then
       begin
         frmYZRKList:= TfrmYZRKList.Create(application.MainForm);
         with frmYZRKList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmYZRKList.BringToFront;
       //句柄
       mNewHandle:=frmYZRKList.Handle;
     end;

     16:
     begin
       if frmDJQTRKList=nil then
       begin
         frmDJQTRKList:= TfrmDJQTRKList.Create(application.MainForm);
         with frmDJQTRKList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmDJQTRKList.BringToFront;
       //句柄
       mNewHandle:=frmDJQTRKList.Handle;
     end;

     17:
     begin
       if frmDJQTCKList=nil then
       begin
         frmDJQTCKList:= TfrmDJQTCKList.Create(application.MainForm);
         with frmDJQTCKList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmDJQTCKList.BringToFront;
       //句柄
       mNewHandle:=frmDJQTCKList.Handle;
     end;
       18:
     begin
       if frmDJQTKCList=nil then
       begin
         frmDJQTKCList:= TfrmDJQTKCList.Create(application.MainForm);
         with frmDJQTKCList do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmDJQTKCList.BringToFront;
       //句柄
       mNewHandle:=frmDJQTKCList.Handle;
     end;

   end ;  // end case

   Result:= mnewHandle;
 //  NewDllApp:=Application ;
end;
//===========================================================
  //建立数据库连接池
//===========================================================
function ConnData():Boolean;
begin
   if not Assigned(DataLink_PBMDDJ) then
     DataLink_PBMDDJ:=TDataLink_PBMDDJ.Create(Application);
  Try
    with DataLink_PBMDDJ.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
  CoInitialize(nil);
  dxUnitsLoader.Initialize;

finalization

   DataLink_PBMDDJ.Free;
   application:=NewDllApp;
   dxUnitsLoader.Finalize;

end.

