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, U_BaseDataLink, dxCore,
  cxLocalization, cxImageList, cxGraphics, dxSkinsForm;

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_KnitPlan = class(TBaseDataLink)
    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_KnitPlan: TDataLink_KnitPlan;
  CriticalSection: TCriticalSection; {�����ٽ�}

implementation
{$R *.dfm}

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

    end;
  end;
  CriticalSection.Leave;
end;

procedure TDataLink_KnitPlan.DataModuleDestroy(Sender: TObject);
begin
  inherited;
  CriticalSection.Free;
  DataLink_KnitPlan := nil;
end;

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

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

end.