unit U_DataLink;

interface

uses
  SysUtils, Classes, DB, ADODB, ImgList, Controls, cxStyles, cxLookAndFeels,
  Windows, Messages, forms, OleCtnrs, DateUtils, ExtCtrls, SyncObjs, cxClasses,
  dxSkinsCore, dxSkinsDefaultPainters, System.ImageList, dxSkinBasic,
  dxSkinBlack, dxSkinBlue, dxSkinBlueprint, dxSkinCaramel, dxSkinCoffee,
  dxSkinDarkroom, dxSkinDarkSide, dxSkinDevExpressDarkStyle,
  dxSkinDevExpressStyle, dxSkinFoggy, dxSkinGlassOceans, dxSkinHighContrast,
  dxSkiniMaginary, dxSkinLilian, dxSkinLiquidSky, dxSkinLondonLiquidSky,
  dxSkinMcSkin, dxSkinMetropolis, dxSkinMetropolisDark, dxSkinMoneyTwins,
  dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green,
  dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinOffice2010Black,
  dxSkinOffice2010Blue, dxSkinOffice2010Silver, dxSkinOffice2013DarkGray,
  dxSkinOffice2013LightGray, dxSkinOffice2013White, dxSkinOffice2016Colorful,
  dxSkinOffice2016Dark, dxSkinOffice2019Black, dxSkinOffice2019Colorful,
  dxSkinOffice2019DarkGray, dxSkinOffice2019White, dxSkinPumpkin, dxSkinSeven,
  dxSkinSevenClassic, dxSkinSharp, dxSkinSharpPlus, dxSkinSilver,
  dxSkinSpringtime, dxSkinStardust, dxSkinSummer2008, dxSkinTheAsphaltWorld,
  dxSkinTheBezier, dxSkinValentine, dxSkinVisualStudio2013Blue,
  dxSkinVisualStudio2013Dark, dxSkinVisualStudio2013Light, dxSkinVS2010,
  dxSkinWhiteprint, dxSkinWXI, dxSkinXmas2008Blue;

type
  TMyThread = class(TThread)
  protected
    procedure Execute; override;
  end;

var
  DConString: string;   {ȫ�������ַ���}
  server, dtbase, user, pswd: string;  {���ݿ����Ӳ���}
  DCurHandle: hwnd;     //��ǰ������
  DName: string;   //#�û���#//
  DCode: string;     //#�û����#//
  Ddatabase: string;    //#���ݿ�����#//
  DTitCaption: string;  //#����������#//
  PicSvr: string;
  fDllFileName: string;
  DParameters1, DParameters2, DParameters3, DParameters4, DParameters5: string; // �ⲿ������
  DParameters6, DParameters7, DParameters8, DParameters9, DParameters10: string; //�ⲿ������
  OldDllApp: Tapplication; //����ԭ�о��
  NewDllApp: Tapplication; //��ǰ���
  MainApplication: Tapplication;
  DFormCode: integer;  //��ǰ���ں�
  IsDelphiLanguage: integer;
  DServerDate: TdateTime; //������ʱ��
  DCompany: string;       //��˾
  IpCall: Integer;
  IpWLDZStr: string;
  UserDataFlag: string;

type
  TDataLink_ClothInfo = class(TDataModule)
    AdoDataLink: TADOQuery;
    ADOLink: TADOConnection;
    ThreeImgList: TImageList;
    ThreeLookAndFeelCol: TcxLookAndFeelController;
    ThreeColorBase: TcxStyleRepository;
    SHuangSe: TcxStyle;
    SkyBlue: TcxStyle;
    Default: TcxStyle;
    QHuangSe: TcxStyle;
    Red: TcxStyle;
    FontBlue: TcxStyle;
    TextSHuangSe: TcxStyle;
    FonePurple: TcxStyle;
    FoneClMaroon: TcxStyle;
    FoneRed: TcxStyle;
    RowColor: TcxStyle;
    handBlack: TcxStyle;
    cxBlue: TcxStyle;
    SHuangSeCu: TcxStyle;
    Timer_link: TTimer;
    ImageList_new32: TImageList;
    procedure DataModuleDestroy(Sender: TObject);
    procedure Timer_linkTimer(Sender: TObject);
    procedure DataModuleCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TMakebar = procedure(ucData: pchar; nDataLen: integer; nErrLevel: integer; nMask: integer; nBarEdition: integer; szBmpFileName: pchar; nScale: integer); stdcall;

  TMixtext = procedure(szSrcBmpFileName: PChar; szDstBmpFileName: PChar; sztext: PChar; fontsize, txtheight, hmargin, vmargin, txtcntoneline: integer); stdcall;

var
  DataLink_ClothInfo: TDataLink_ClothInfo;
  CriticalSection: TCriticalSection; {�����ٽ�}

implementation
{$R *.dfm}

procedure TMyThread.Execute;
begin
  FreeOnTerminate := True;
  CriticalSection.Enter;
  try
    with DataLink_ClothInfo.AdoDataLink do
    begin
      close;
      sql.Clear;
      sql.Add('select getdate()');
      open;
    end;
  except
    try
      with DataLink_ClothInfo.ADOLink do
      begin
        Connected := false;
        ConnectionString := DConString;
        LoginPrompt := false;
        Connected := true;
      end;
    except

    end;
  end;
  CriticalSection.Leave;
end;

procedure TDataLink_ClothInfo.DataModuleDestroy(Sender: TObject);
begin
  CriticalSection.Free;
  DataLink_ClothInfo := nil;
end;

procedure TDataLink_ClothInfo.Timer_linkTimer(Sender: TObject);
begin
  TMyThread.Create(False);
end;

procedure TDataLink_ClothInfo.DataModuleCreate(Sender: TObject);
begin
  CriticalSection := TCriticalSection.Create;
end;

end.