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_CPType,U_CPManage,U_KHGetCPManage,U_iniParam,U_CPManageCX;

       /////////////////////////////////////////////////////////////////
      //         功能说明:取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:=GName;
   DCode:=GName;
   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:='101.132.143.144,7781';     //192.168.1.113
   server:='101.132.143.144,7781';
   dtbase:='weijiajydata';
   //dtbase:='YPdata';
   user:='rtsa';
   pswd:='rightsoft@5740';
   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;

   //DParameters1:='英寸';
   //DParameters2:='门幅无单位';
  // DParameters5:='工艺';
   if not ConnData() then
   begin
     result:=0;
     exit;
   end;
   if IsINIFile() then
      ReadINIFile()
   else
      WriteINIFile ;
   // 定义窗口类型 、状态
   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 frmCPType=nil then
       begin
         frmCPType:= TfrmCPType.Create(application.MainForm);
         with frmCPType do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmCPType.BringToFront;
       //句柄
       mNewHandle:=frmCPType.Handle;

     end ;
     2:  // 样品档案
     begin
       if frmCPManage=nil then
       begin
         frmCPManage:= TfrmCPManage.Create(application.MainForm);
         with frmCPManage do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmCPManage.BringToFront;
       //句柄
       mNewHandle:=frmCPManage.Handle;

     end ;
     3:  // 客户取样
     begin
       if frmKHGetCPManage=nil then
       begin
         frmKHGetCPManage:= TfrmKHGetCPManage.Create(application.MainForm);
         with frmKHGetCPManage do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmKHGetCPManage.BringToFront;
       //句柄
       mNewHandle:=frmKHGetCPManage.Handle;

     end ;
     4:  // 样品查询
     begin
       if frmCPManageCX=nil then
       begin
         frmCPManageCX:= TfrmCPManageCX.Create(application.MainForm);
         with frmCPManageCX do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmCPManageCX.BringToFront;
       //句柄
       mNewHandle:=frmCPManageCX.Handle;
     end ;
   end ;  // end case

   Result:= mnewHandle;
 //  NewDllApp:=Application ;
end;
//===========================================================
  //建立数据库连接池
//===========================================================
function ConnData():Boolean;
var
  IniFile: TIniFile;
begin
  try
    IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'SYSTEMSET.INI');
    PicSvr := IniFile.ReadString('SERVER', '服务器地址','127.0.0.1');
    UserDataFlag:=IniFile.ReadString('SERVER', '服务器地址类型','-1');
  finally
    IniFile.Free;
  end;
   if not Assigned(DataLink_YPGL) then
     DataLink_YPGL:=TDataLink_YPGL.Create(Application);
  Try
    with DataLink_YPGL.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_YPGL.Free;
   application:=NewDllApp;
   dxUnitsLoader.Finalize;
end.

