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_Fun,U_YFCR,U_FKCR,U_YFFKList,U_YSCR,U_SKCR,U_YSSKList,U_ProductOrderCost,U_YFFP,U_YSFP,
  U_YSCRJZC,U_YSCR_Gd,U_SKCR_Gd,U_YFZDList_MX,U_YSZDList_MX,U_YFMXlist,U_YSMXlist,U_FKCR_GD,U_YFCR_GD,
  U_YF_Money_LL,U_YF_Money_LL_list,U_FYDJ,U_FYDJ_TJ;
       /////////////////////////////////////////////////////////////////
      //         ¹¦ÄÜ˵Ã÷:È¡DllÖеô°Ìå                              //
     //        ²ÎÊý˵Ã÷£ºApp>>µ÷ÓÃÓ¦ÓóÌÐò£»                        //
    //                 FormH>>µ÷Óô°¿Ú¾ä±ú £»                      //
   //                 FormID>>´°¿ÚºÅ;                             //
  //                 Language>>ˈ;                         //
 //                 WinStyle>>´°¿ÚÀàÐÍ£»                        //
/////////////////////////////////////////////////////////////////

var
  frmSKCR,frmSKCRYP: TfrmSKCR;
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
  i: Integer;
  bFound: Boolean;
  mnewHandle: hwnd;
  mstyle: TFormStyle;     // 0:×Ó´°¿Ú; 1£ºÆÕͨ´°¿Ú
  mstate: TWindowState;
  mborderstyle: TFormBorderStyle;
begin
   mNewHandle:=0;
   DName:=GName;
   DCode:=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:='192.168.1.99';     //192.168.1.113
   server:='47.100.182.1,7781';
   dtbase:='guihuadata';
   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;

 // DParameters1:='ÎÞ¶©µ¥ºÅ';
    //DParameters1:='¹ÜÀí';//103
   DParameters2:='ÈËÃñ±Ò';                             
 // DataBase:='¸ßȨÏÞ';
 //  DParameters4:='0';
   Parameters5:='¹ð»ª·ÄÖ¯';
  // DParameters3:='ÏîÄ¿·Ö¿ª';
  // DParameters4:='¶Ô·½µ¥Î»·Ö¿ª';
   //DParameters5:='¿ªÆ±';
  //DParameters6:='ÆäËü'; //Ó¦¸¶¿î
  //DParameters7:='Æ¥Êý'; //Ó¦ÊÕ¿î
   //DCode:='test';
   //DName:='ÓÝÏþ';
   //DParameters9:='Ö§¸¶Ì¨Í·';
   //DParameters8:='FactoryNo1Name';
   //DParameters10:='P_YSSK_ListTT';
   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 frmYFCR=nil then             
       begin
         frmYFCR:= TfrmYFCR.Create(application.MainForm);
         with frmYFCR do
         begin
           caption:=Trim(Title);

           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmYFCR.BringToFront;
       //¾ä±ú
       mNewHandle:=frmYFCR.Handle;

     end ;
     14:  //Ó¦¸¶¿îµÇ¼Ç
     begin
       if frmYFCR_GD=nil then
       begin
         frmYFCR_GD:= TfrmYFCR_GD.Create(application.MainForm);
         with frmYFCR_GD do
         begin
         //  fflag:=1;
           fflag:=strtointdef(trim(DataBase),0);
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmYFCR_GD.BringToFront;
       //¾ä±ú
       mNewHandle:=frmYFCR_GD.Handle;

     end ;
     141:  //Ó¦¸¶¿îµÇ¼Ç
     begin
       if frmYFCR_GD=nil then
       begin
         frmYFCR_GD:= TfrmYFCR_GD.Create(application.MainForm);
         with frmYFCR_GD do
         begin
           TBADD.Visible:=false;
           TBDel.Visible:=false;
           Label7.Visible:=false;
           Edit1.Visible:=false;
           Button1.Visible:=false;
           CheckBox1.Visible:=false;
           tv2.OptionsData.Editing:=false;
           fflag:=strtointdef(trim(DataBase),0);
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmYFCR_GD.BringToFront;
       //¾ä±ú
       mNewHandle:=frmYFCR_GD.Handle;

     end ;
     2:  //¸¶¿îµÇ¼Ç
     begin
       if frmFKCR=nil then
       begin
         frmFKCR:= TfrmFKCR.Create(application.MainForm);
         with frmFKCR do
         begin
           fSYRName:=trim(Parameters5);
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmFKCR.BringToFront;
       //¾ä±ú
       mNewHandle:=frmFKCR.Handle;

     end ;

     24:  //¸¶¿îµÇ¼Ç
     begin
       if frmFKCR_GD=nil then
       begin
         frmFKCR_GD:= TfrmFKCR_GD.Create(application.MainForm);
         with frmFKCR_GD do
         begin
            fflag:=strtointdef(trim(DataBase),0);
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmFKCR_GD.BringToFront;
       //¾ä±ú
       mNewHandle:=frmFKCR_GD.Handle;

     end ;
     241:  //¸¶¿îµÇ¼Ç
     begin
       if frmFKCR_GD=nil then
       begin
         frmFKCR_GD:= TfrmFKCR_GD.Create(application.MainForm);
         with frmFKCR_GD do
         begin
           TBADD.Visible:=false;
           TBDel.Visible:=false;
          // Label7.Visible:=false;
         //  Edit1.Visible:=false;
         //  Button1.Visible:=false;
         //  CheckBox1.Visible:=false;
           tv2.OptionsData.Editing:=false;
            fflag:=strtointdef(trim(DataBase),0);
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmFKCR_GD.BringToFront;
       //¾ä±ú
       mNewHandle:=frmFKCR_GD.Handle;

     end ;
     3:  //Ó¦¸¶¿î¸¶¿îͳ¼Æ
     begin
       if frmYFFKList=nil then
       begin
         frmYFFKList:= TfrmYFFKList.Create(application.MainForm);
         with frmYFFKList do
         begin
           caption:=Trim(Title);
           fDParameters1:=trim(DParameters1);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmYFFKList.BringToFront;
       //¾ä±ú
       mNewHandle:=frmYFFKList.Handle;

     end ;
     31:  //Ó¦¸¶¿îÃ÷ϸÕ˵¥
     begin
       if frmYFZDList_MX=nil then
       begin
         frmYFZDList_MX:= TfrmYFZDList_MX.Create(application.MainForm);
         with frmYFZDList_MX do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmYFZDList_MX.BringToFront;
       //¾ä±ú
       mNewHandle:=frmYFZDList_MX.Handle;

     end ;
     4:  //Ó¦ÊÕ¿îµÇ¼Ç
     begin
       IF  frmYSCR<>nil then frmYSCR.Free;
       if frmYSCR=nil then
       begin
         frmYSCR:= TfrmYSCR.Create(application.MainForm);
         with frmYSCR do
         begin

           caption:=Trim(Title);
           fDParameters1:=trim(DParameters4);
           fDParameters3:=trim(DParameters3);
           fSYRName:=trim(Parameters5);
           fstr2:=trim(Parameters6);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmYSCR.BringToFront;
       //¾ä±ú
       mNewHandle:=frmYSCR.Handle;

     end ;
 
     44:  //Ó¦ÊÕ¿îµÇ¼Ç(¹ã¶«)
     begin
       if frmYSCR_Gd=nil then
       begin
         frmYSCR_Gd:= TfrmYSCR_Gd.Create(application.MainForm);
         with frmYSCR_Gd do
         begin
           caption:=Trim(Title);
           fmanage:=Trim(DataBase);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmYSCR_Gd.BringToFront;
       //¾ä±ú
       mNewHandle:=frmYSCR_Gd.Handle;

     end ;
 {    5:  //ÊÕ¿îµÇ¼Ç
     begin
     //  IF frmSKCR<>nil then frmSKCR.Free;
       if frmSKCR=nil then
       begin
         frmSKCR:= TfrmSKCR.Create(application.MainForm);
         with frmSKCR do
         begin
           caption:=Trim(Title);
           fSYRName:=trim(Parameters5);
           fDParameters1:=trim(DParameters4);
           fDParameters3:=trim(DParameters3);
           fstr2:=trim(Parameters6);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmSKCR.BringToFront;
       //¾ä±ú
       mNewHandle:=frmSKCR.Handle;

     end ;  }
     5:
      begin
        bFound := FALSE;
        for i := (App.MainForm.MDIChildCount - 1) downto 0 do
        begin
          if App.MainForm.MDIChildren[i].Caption = '´ó»õÊÕ¿îµÇ¼Ç' then
          begin
            BringWindowToTop(frmSKCR.Handle);
            bFound := TRUE;
            Break;
          end;
        end;
        if not bFound then
        begin
          frmSKCR := TfrmSKCR.Create(application.MainForm);
          with frmSKCR do
          begin
            Title := '´ó»õÊÕ¿îµÇ¼Ç';
            fSYRName:=trim(Parameters5);
            fDParameters1:=trim(DParameters4);
            fDParameters3:=trim(DParameters3);
            fstr2:=trim(Parameters6);
            caption := Trim(Title);
            FormStyle := mstyle;
            windowState := mstate;
            BorderStyle := mborderstyle;
           //show;
          end;
        end
        else
          frmSKCR.BringToFront;
       //¾ä±ú
        mnewHandle := frmSKCR.Handle;
      end;
      51:
      begin
        bFound := FALSE;
        for i := (App.MainForm.MDIChildCount - 1) downto 0 do
        begin
          if App.MainForm.MDIChildren[i].Caption = 'ÑùÆ·ÊÕ¿îµÇ¼Ç' then
          begin
            BringWindowToTop(frmSKCRYP.Handle);
            bFound := TRUE;
            Break;
          end;
        end;
        if not bFound then
        begin
          frmSKCRYP:=TfrmSKCR.Create(application.MainForm);
          with frmSKCRYP do
          begin
            Title := 'ÑùÆ·ÊÕ¿îµÇ¼Ç';
            fSYRName:=trim(Parameters5);
            fDParameters1:=trim(DParameters4);
            fDParameters3:=trim(DParameters3);
            fstr2:=trim(Parameters6);
            caption := Trim(Title);
            FormStyle := mstyle;
            windowState := mstate;
            BorderStyle := mborderstyle;
           //show;
          end;
        end
        else
          frmSKCRYP.BringToFront;
       //¾ä±ú
        mnewHandle := frmSKCRYP.Handle;
      end;


     54:  //ÊÕ¿îµÇ¼Ç(¹ã¶«)
     begin
       if frmSKCR_Gd=nil then
       begin
         frmSKCR_Gd:= TfrmSKCR_Gd.Create(application.MainForm);
         with frmSKCR_Gd do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmSKCR_Gd.BringToFront;
       //¾ä±ú
       mNewHandle:=frmSKCR_Gd.Handle;

     end ;
     6:  //Ó¦ÊÕ¿îÊÕ¿îͳ¼Æ
     begin
       if frmYSSKList=nil then
       begin
         frmYSSKList:= TfrmYSSKList.Create(application.MainForm);
         with frmYSSKList do
         begin
           caption:=Trim(Title);
           fDParameters1:=trim(DParameters1);
           fsyrName:=trim(Parameters5);
           fstr2:=trim(Parameters6);
           fDParameters3:=trim(DParameters3);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmYSSKList.BringToFront;
       //¾ä±ú
       mNewHandle:=frmYSSKList.Handle;

     end ;
     61:  //Ó¦ÊÕ¿îÊÕ¿îͳ¼Æ
     begin
       if frmYSZDList_MX=nil then
       begin
         frmYSZDList_MX:= TfrmYSZDList_MX.Create(application.MainForm);
         with frmYSZDList_MX do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmYSZDList_MX.BringToFront;
       //¾ä±ú
       mNewHandle:=frmYSZDList_MX.Handle;

     end ;

     7:  //Ó¦ÊÕ¿îÊÕ¿îͳ¼Æ
     begin
       IF  frmFYDJ<>nil then frmFYDJ.Free;
       if frmFYDJ=nil then
       begin
         frmFYDJ:= TfrmFYDJ.Create(application.MainForm);
         with frmFYDJ do
         begin
           caption:=Trim(Title);
           fflag:=strtointdef(trim(Parameters4),0);
           fSYRName:=trim(Parameters5);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmFYDJ.BringToFront;
       //¾ä±ú
       mNewHandle:=frmFYDJ.Handle;

     end ;

     71:  //Ó¦ÊÕ¿îÊÕ¿îͳ¼Æ
     begin
       IF  frmFYDJ_TJ<>nil then frmFYDJ_TJ.Free;
       if frmFYDJ_TJ=nil then
       begin
         frmFYDJ_TJ:= TfrmFYDJ_TJ.Create(application.MainForm);
         with frmFYDJ_TJ do
         begin
           caption:=Trim(Title);
           fSYRName:=trim(Parameters5);
           fflag:=strtointdef(trim(Parameters4),0);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmFYDJ_TJ.BringToFront;
       //¾ä±ú
       mNewHandle:=frmFYDJ_TJ.Handle;

     end ;


     8:  //½øÏƱµÇ¼Ç
     begin
       if frmYFFP=nil then
       begin
         frmYFFP:= TfrmYFFP.Create(application.MainForm);
         with frmYFFP do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmYFFP.BringToFront;
       //¾ä±ú
       mNewHandle:=frmYFFP.Handle;

     end;
     9:  //ÏúÏƱµÇ¼Ç
     begin
       if frmYSFP=nil then
       begin
         frmYSFP:= TfrmYSFP.Create(application.MainForm);
         with frmYSFP do
         begin
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmYSFP.BringToFront;
       //¾ä±ú
       mNewHandle:=frmYSFP.Handle;

     end;
      10:  //ÒøÐÐÁ÷Ë®
     begin
       if frmMoney_LL=nil then
       begin
         frmMoney_LL:= TfrmMoney_LL.Create(application.MainForm);
         with frmMoney_LL do
         begin
           fSYRName:=trim(Parameters5);
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmMoney_LL.BringToFront;
       //¾ä±ú
       mNewHandle:=frmMoney_LL.Handle;

     end;
     101:  //ÒøÐлã×Ü
     begin
       if frmYF_Money_LL_list=nil then
       begin
         frmYF_Money_LL_list:= TfrmYF_Money_LL_list.Create(application.MainForm);
         with frmYF_Money_LL_list do
         begin
           fSYRName:=trim(Parameters5);
           caption:=Trim(Title);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmYF_Money_LL_list.BringToFront;
       //¾ä±ú
       mNewHandle:=frmYF_Money_LL_list.Handle;

     end;
     20:  //Ó¦ÊÕÕË¿îÃ÷ϸOLJ
      begin
       if frmYFMXlist=nil then
       begin
         frmYFMXlist:= TfrmYFMXlist.Create(application.MainForm);
         with frmYFMXlist do
         begin
           caption:=Trim(Title);
           fType:=trim(DataBase);

           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmYFMXlist.BringToFront;
       //¾ä±ú
       mNewHandle:=frmYFMXlist.Handle;

     end;
      201:  //Ó¦ÊÕÕË¿îÃ÷ϸOLJ
      begin
       if frmYSMXlist=nil then
       begin
         frmYSMXlist:= TfrmYSMXlist.Create(application.MainForm);
         with frmYSMXlist do
         begin
           caption:=Trim(Title);
      //     fType:=trim(DataBase);
           fDParameters1:=trim(DParameters1);
           fsyrName:=trim(Parameters5);
           fDParameters3:=trim(DParameters3);
           fstr2:=trim(Parameters6);
           FormStyle := mstyle ;
           windowState := mstate ;
           BorderStyle := mborderstyle;
           //show;
         end;
       end
       else
         frmYSMXlist.BringToFront;
       //¾ä±ú
       mNewHandle:=frmYSMXlist.Handle;

     end;
   end ;  // end case

   Result:= mnewHandle;
//   NewDllApp:=Application ;
end;
//===========================================================
  //½¨Á¢Êý¾Ý¿âÁ¬½Ó³Ø
//===========================================================
function ConnData():Boolean;
begin
   if not Assigned(DataLink_YSYF) then
     DataLink_YSYF:=TDataLink_YSYF.Create(Application);
  Try
    with DataLink_YSYF.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_YSYF.Free;
   application:=NewDllApp;
   dxUnitsLoader.Finalize;
end.