unit U_CPManage;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, DB, ADODB,
  cxInplaceContainer, cxDBTL, cxControls, cxTLData, ComCtrls, ToolWin,
  StdCtrls, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, DBClient,
  cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ExtCtrls,
  cxSplitter, cxGridLevel, cxClasses, cxGridCustomView, cxGrid,
  cxGridCustomPopupMenu, cxGridPopupMenu, RM_Dataset, RM_System, RM_Common,
  RM_Class, RM_GridReport, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdFTP,ShellAPI,IniFiles, cxCheckBox,jpeg,U_SLT,
  cxLookAndFeels, cxLookAndFeelPainters, cxTLdxBarBuiltInMenu, cxNavigator,
  dxSkinsCore, 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, dxSkinPumpkin,
  dxSkinSeven, dxSkinSevenClassic, dxSkinSharp, dxSkinSharpPlus,
  dxSkinSilver, dxSkinSpringTime, dxSkinStardust, dxSkinSummer2008,
  dxSkinTheAsphaltWorld, dxSkinsDefaultPainters, dxSkinValentine,
  dxSkinVS2010, dxSkinWhiteprint, dxSkinXmas2008Blue, dxSkinscxPCPainter;

type
  TfrmCPManage = class(TForm)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBAdd: TToolButton;
    TBDel: TToolButton;
    TBClose: TToolButton;
    DataSource1: TDataSource;
    ADOQueryTree20: TADOQuery;
    ADOQueryTemp: TADOQuery;
    ADOQueryCmd: TADOQuery;
    cxGridPopupMenu1: TcxGridPopupMenu;
    Tv1: TcxGridDBTableView;
    cxGrid1Level1: TcxGridLevel;
    cxGrid1: TcxGrid;
    cxSplitter1: TcxSplitter;
    Panel1: TPanel;
    Label2: TLabel;
    CYID: TEdit;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    Label1: TLabel;
    CYName: TEdit;
    Label4: TLabel;
    DefStr6: TEdit;
    Label5: TLabel;
    defnote5: TEdit;
    v1Column1: TcxGridDBColumn;
    v1Column2: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    v1Column4: TcxGridDBColumn;
    v1Column5: TcxGridDBColumn;
    v1Column6: TcxGridDBColumn;
    v1Column7: TcxGridDBColumn;
    v1Column8: TcxGridDBColumn;
    v1Column9: TcxGridDBColumn;
    v1Column11: TcxGridDBColumn;
    DataSource2: TDataSource;
    ADOQueryMain: TADOQuery;
    CDS_Main: TClientDataSet;
    v1Column12: TcxGridDBColumn;
    ToolButton1: TToolButton;
    ToolButton4: TToolButton;
    RM1: TRMGridReport;
    RMDB_Main: TRMDBDataSet;
    ODPat: TOpenDialog;
    IdFTP1: TIdFTP;
    SaveDialog1: TSaveDialog;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    v1Column14: TcxGridDBColumn;
    v1Column15: TcxGridDBColumn;
    Label3: TLabel;
    CYNO: TEdit;
    v1Column16: TcxGridDBColumn;
    ToolButton7: TToolButton;
    Panel2: TPanel;
    v1Column19: TcxGridDBColumn;
    DSCYNO: TDataSource;
    CDS_CYNO: TClientDataSet;
    Edit1: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    CYKZ: TEdit;
    Label8: TLabel;
    Label9: TLabel;
    CYCF: TEdit;
    CYECF: TEdit;
    Label10: TLabel;
    CYMF: TEdit;
    v1Column42: TcxGridDBColumn;
    v1Column10: TcxGridDBColumn;
    v1Column13: TcxGridDBColumn;
    ADOQueryTree: TClientDataSet;
    Panel5: TPanel;
    cxDBTreeList1: TcxDBTreeList;
    cxDBTreeList1cxDBTreeListColumn2: TcxDBTreeListColumn;
    Label11: TLabel;
    Label12: TLabel;
    v1Column17: TcxGridDBColumn;
    v1Column18: TcxGridDBColumn;
    v1Column20: TcxGridDBColumn;
    v1Column21: TcxGridDBColumn;
    v1Column24: TcxGridDBColumn;
    v1Column25: TcxGridDBColumn;
    defstr1: TEdit;
    Label13: TLabel;
    v1Column26: TcxGridDBColumn;
    v1Column27: TcxGridDBColumn;
    v1Column28: TcxGridDBColumn;
    v1Column29: TcxGridDBColumn;
    v1Column30: TcxGridDBColumn;
    v1Column31: TcxGridDBColumn;
    DefStr2: TEdit;
    Label14: TLabel;
    defstr7: TEdit;
    Label15: TLabel;
    defnote3: TEdit;
    Label16: TLabel;
    v1Column32: TcxGridDBColumn;
    v1Column33: TcxGridDBColumn;
    ComboBox1: TComboBox;
    Panel3: TPanel;
    GroupBox1: TGroupBox;
    ScrollBox1: TScrollBox;
    adoqueryPicture: TADOQuery;
    ToolButton8: TToolButton;
    v1Column22: TcxGridDBColumn;
    v1Column23: TcxGridDBColumn;
    v1Column34: TcxGridDBColumn;
    v1Column35: TcxGridDBColumn;
    v1Column36: TcxGridDBColumn;
    v1Column37: TcxGridDBColumn;
    v1Column38: TcxGridDBColumn;
    v1Column39: TcxGridDBColumn;
    v1Column40: TcxGridDBColumn;
    v1Column41: TcxGridDBColumn;
    defnote2: TEdit;
    Label17: TLabel;
    v1Column43: TcxGridDBColumn;
    v1Column44: TcxGridDBColumn;
    Label18: TLabel;
    CYSpec: TEdit;
    v1Column45: TcxGridDBColumn;
    v1Column46: TcxGridDBColumn;
    v1Column47: TcxGridDBColumn;
    v1Column48: TcxGridDBColumn;
    Tv1Column1: TcxGridDBColumn;
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TBCloseClick(Sender: TObject);
    procedure TBDelClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure cxDBTreeList1DblClick(Sender: TObject);
    procedure TBAddClick(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure CYIDKeyPress(Sender: TObject; var Key: Char);
    procedure CYNoChange(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure ToolButton6Click(Sender: TObject);
    procedure Tv1CellClick(Sender: TcxCustomGridTableView;
      ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
      AShift: TShiftState; var AHandled: Boolean);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Tv1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure ToolButton7Click(Sender: TObject);
    procedure v1Column19PropertiesChange(Sender: TObject);
    procedure CYMFChange(Sender: TObject);
    procedure CYNameChange(Sender: TObject);
    procedure CYNOKeyPress(Sender: TObject; var Key: Char);
    procedure ToolButton8Click(Sender: TObject);
  private
    { Private declarations }
    CPID:string;
    PState:Integer;
    FCPID,FTopID:String;
    procedure InitTree();
    procedure InitGrid();
    procedure ReadINIFile();
    procedure InitImage();
    procedure TJGS();

  public                                              
    { Public declarations }
  end;
                                          

var
  frmCPManage: TfrmCPManage;
   Mach: array of TfrmSlt;

implementation
uses
  U_DataLink,U_Fun,U_CPAdd,U_FileUp,U_YPCR;

{$R *.dfm}

procedure TfrmCPManage.InitTree();
var
  i:Integer;
begin
  with ADOQueryTree20 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * from CP_Type order by CPlevel,CPOrder,CPName');
    Open;
  end;
  SCreateCDS20(ADOQueryTree20,ADOQueryTree);
  SInitCDSData20(ADOQueryTree20,ADOQueryTree);
  cxDBTreeList1.Items[0].Expand(false);
  //cxDBTreeList1.Items[1].Expand(False);
end;

procedure TfrmCPManage.InitGrid();
begin
  Panel2.Visible:=True;
  Panel2.Refresh;
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered:=False;
      Close;
      SQL.Clear;
      SQL.Add('exec P_Select_CP_YDang :Code,:PState,:CYType');
      Parameters.ParamByName('Code').Value:='';
      Parameters.ParamByName('PState').Value:=0;
      Parameters.ParamByName('CYType').Value:=Trim(ADOQueryTree.fieldbyname('CPID').AsString);
      Open;
    end;
    SCreateCDS20(ADOQueryMain,CDS_Main);
    SInitCDSData20(ADOQueryMain,CDS_Main);
  finally
    ADOQueryMain.EnableControls;
  end;
  Panel2.Visible:=False;
end;
procedure TfrmCPManage.TJGS();
var
  i,j:Integer;
begin
{  i:=0;
  j:=0;
  CDS_Main.DisableControls;
  with CDS_Main do
  begin
    first;
    while not Eof do
    begin
      if FieldByName('CYPriceKg').Value=0 then
      begin
        i:=i+1;
      end else
      begin
        j:=j+1;
      end;
      Next;
    end;
  end;
  CDS_Main.EnableControls;      }
//  Label11.Caption:='定价样品数量:'+Trim(IntToStr(j));
 // Label12.Caption:='未定价样品数量:'+Trim(IntToStr(i));
end;
procedure TfrmCPManage.FormDestroy(Sender: TObject);
begin
  frmCPManage:=nil;
end;

procedure TfrmCPManage.FormClose(Sender: TObject; var Action: TCloseAction);
var
  i,j:integer;
begin
  j:=length(Mach);
  if j>0 then
  begin
    for i:=0 to j-1 do
    begin
      Mach[i].free;
    end;
  end;
  SetLength(Mach, 0);
//  writeCxGrid(self.Caption+tv1.Name,tv1);
 // Application := mainApplication;
  action:=cafree;
end;

procedure TfrmCPManage.TBCloseClick(Sender: TObject);
begin
  WriteCxGrid(self.Caption,Tv1,'样品管理');
  if  DirectoryExists(ExtractFileDir('D:\Right1209')) then
    winexec('cmd /c rd /s /q D:\Right1209',sw_hide);
  Close;
end;
procedure TfrmCPManage.TBDelClick(Sender: TObject);
begin
  if CDS_Main.IsEmpty then Exit;
  if Application.MessageBox('确定要删除数据吗？','提示',32+4)<>IDYES then Exit;
  if Trim(CDS_Main.fieldbyname('CYID').AsString)<>'' then
  begin
    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('delete CP_YDang where CYID='''+Trim(CDS_Main.fieldbyname('CYID').AsString)+'''');
      ExecSQL;
    end;
  end;
  CDS_Main.Delete;
end;

procedure TfrmCPManage.FormShow(Sender: TObject);
begin
  Panel3.Align:=alclient;
  InitTree();
  ReadCxGrid(self.Caption,Tv1,'样品管理');
  if DParameters1='1' then
  begin
    TBAdd.Visible:=False;
    TBDel.Visible:=False;
    ToolButton3.Visible:=False;
    ToolButton5.Visible:=False;
  end;
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select CYID='''' ');
    Open;
  end;
  SCreateCDS20(ADOQueryTemp,CDS_CYNO);
  SInitCDSData20(ADOQueryTemp,CDS_CYNO);
    with ADOQueryMain do
    begin
      Filtered:=False;
      Close;
      SQL.Clear;
      SQL.Add('exec P_Select_CP_YDang :Code,:PState,:CYType');
      Parameters.ParamByName('Code').Value:='';
      Parameters.ParamByName('PState').Value:=0;
      Parameters.ParamByName('CYType').Value:='XXXXXXX';
      Open;
    end;
    SCreateCDS20(ADOQueryMain,CDS_Main);
    SInitCDSData20(ADOQueryMain,CDS_Main);
  CDS_CYNO.Delete;
end;

procedure TfrmCPManage.cxDBTreeList1DblClick(Sender: TObject);
begin
  InitGrid();
  TJGS();
end;

procedure TfrmCPManage.TBAddClick(Sender: TObject);
var
  i:Integer;
  FieldName:String;
begin
  try
    frmCPAdd:=TfrmCPAdd.Create(Application);
    with frmCPAdd do
    begin
      CopyInt:=0;
      FCYID:='';
      FCPID:=Trim(Self.ADOQueryTree.fieldbyname('CPID').AsString);
      FCPNo:=Trim(Self.ADOQueryTree.fieldbyname('CPNo').AsString);
      if ShowModal=1 then
      begin
        Self.CDS_Main.Append;
        for i:=0 to frmCPAdd.Tv1.ColumnCount-1 do
        begin
          FieldName:=frmCPAdd.Tv1.Columns[i].DataBinding.FilterFieldName;
          if Trim(FieldName)<>'' then
          begin
            Self.CDS_Main.FieldByName(FieldName).Value:=frmCPAdd.CDS_Sub.FieldByName(FieldName).Value;
          end;
        end;
        CDS_Main.FieldByName('CPName').Value:=Trim(ADOQueryTree.fieldbyname('CPName').AsString);
        CDS_Main.FieldByName('CYID').Value:=CDS_Sub.fieldbyname('CYID').Value;
        CDS_Main.FieldByName('CYType').Value:=CDS_Sub.fieldbyname('CYType').Value;
        Self.CDS_Main.Post;
        self.InitGrid();
      end;
    end;
  finally
    frmCPAdd.Free;
  end;
end;

procedure TfrmCPManage.TBRafreshClick(Sender: TObject);
begin
  InitTree();
  InitGrid();
  TJGS();
end;

procedure TfrmCPManage.ToolButton3Click(Sender: TObject);
var
 i:Integer;
 FieldName:String;
begin
  try
    frmCPAdd:=TfrmCPAdd.Create(Application);
    with frmCPAdd do
    begin
      CopyInt:=0;
      FCYID:=Trim(Self.CDS_Main.fieldbyname('CYID').AsString);
      FCPID:=Trim(Self.ADOQueryTree.fieldbyname('CPID').AsString);
      FCPNo:=Trim(Self.ADOQueryTree.fieldbyname('CPNo').AsString);
      if ShowModal=1 then
      begin
        Self.CDS_Main.Edit;
        for i:=0 to frmCPAdd.Tv1.ColumnCount-1 do
        begin
          FieldName:=frmCPAdd.Tv1.Columns[i].DataBinding.FilterFieldName;
          if Trim(FieldName)<>'' then
          begin
            Self.CDS_Main.FieldByName(FieldName).Value:=frmCPAdd.CDS_Sub.FieldByName(FieldName).Value;
          end;
        end;
        CDS_Main.FieldByName('CPName').Value:=Trim(ADOQueryTree.fieldbyname('CPName').AsString);
        CDS_Main.FieldByName('CYID').Value:=CDS_Sub.fieldbyname('CYID').Value;
        CDS_Main.FieldByName('CYType').Value:=CDS_Sub.fieldbyname('CYType').Value;
        Self.CDS_Main.Post;
      end;
    end;
  finally
    frmCPAdd.Free;
  end;
end;

procedure TfrmCPManage.ToolButton2Click(Sender: TObject);
begin
  if ADOQueryMain.Active then
  begin
    SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2));
    SCreateCDS20(ADOQueryMain,CDS_Main);
    SInitCDSData20(ADOQueryMain,CDS_Main);
    TJGS();
  end;

end;

procedure TfrmCPManage.CYIDKeyPress(Sender: TObject; var Key: Char);
begin
  if Key=#13 then
  begin
    if Trim(CYID.Text)='' then Exit;
    with ADOQueryMain do
    begin
      Close;
      Filtered:=False;
      sql.Clear;
      sql.Add('exec P_Select_CP_YDang :Code,1,'''' ');
      Parameters.ParamByName('Code').Value:=Trim(CYID.Text);
      Open;
    end;
    SCreateCDS20(ADOQueryMain,CDS_Main);
    SInitCDSData20(ADOQueryMain,CDS_Main);
    CYID.Text:='';
    ADOQueryTree.Locate('CPID',CPID,[]);
  end;
end;

procedure TfrmCPManage.CYNoChange(Sender: TObject);
begin
  //if Length(Trim(TEdit(Sender).Text))<4 then Exit;
  if ADOQueryMain.Active then
  begin
    SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2));
    SCreateCDS20(ADOQueryMain,CDS_Main);
    SInitCDSData20(ADOQueryMain,CDS_Main);
    TJGS();
  end;

end;

procedure TfrmCPManage.ToolButton1Click(Sender: TObject);
begin
  if CDS_Main.IsEmpty then Exit;
  TcxGridToExcel('样品档案1',cxGrid1);
end;

procedure TfrmCPManage.ToolButton4Click(Sender: TObject);
var
   fPrintFile,FFCYID:string;
   DPS,i,j:Integer;
   Txt,fImagePath:string;
   Moudle: THandle;
   Makebar:TMakebar;
   Mixtext:TMixtext;
begin
  CYID.SetFocus;
  if CDS_Main.IsEmpty then Exit;

  IF trim(ComboBox1.Text)='' then
  begin
      Application.MessageBox('样品标签不能为空!','提示',0);
      exit;
  end;
  //if CDS_CYNO.IsEmpty then Exit;
  if Trim(Edit1.Text)<>'' then
  begin
    if TryStrToInt(Edit1.Text,i)=False then
    begin
      Application.MessageBox('份数录入错误!','提示',0);
      exit;
    end;
  end;

  fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\'+trim(ComboBox1.Text)+'.rmf';
  CDS_Main.DisableControls;
  DPS:=0;
  FFCYID:='';
  i:=1;
  if Trim(Edit1.Text)='' then
  begin
    j:=1;
  end else
  begin
    j:=StrToInt(Edit1.Text);
  end;
  with CDS_Main do
  begin
    First;
    while not Eof do
    begin
      if CDS_Main.FieldByName('SSel').AsBoolean=True then
      begin

        try
          Moudle:=LoadLibrary('MakeQRBarcode.dll');
          @Makebar:=GetProcAddress(Moudle,'Make');
          @Mixtext:=GetProcAddress(Moudle,'MixText');
          Txt:=Trim(CDS_Main.fieldbyname('CYID').AsString);
          fImagePath:=ExtractFilePath(Application.ExeName)+'image\temp.bmp';
          if not DirectoryExists(pchar(ExtractFilePath(Application.ExeName)+'image')) then
          CreateDirectory(pchar(ExtractFilePath(Application.ExeName)+'image'),nil);
          if FileExists(fImagePath) then DeleteFile(fImagePath);
          Makebar(pchar(Txt),Length(Txt),3,3,0,PChar(fImagePath),3);
        except
          application.MessageBox('条形码生成失败！','提示信息',MB_ICONERROR);
          exit;
        end;
        RMVariables['QRBARCODE']:=fImagePath;

        for i:=1 to j do
        begin
          if FileExists(fPrintFile) then
          begin
            RM1.LoadFromFile(fPrintFile);
            RM1.PrintReport;
          //  RM1.ShowReport;
          end else
          begin
            Application.MessageBox(PChar('没有找'+ExtractFilePath(Application.ExeName)+'Report\样品标签.rmf'),'提示',0);
            Exit;
          end;
        end;

        if DPS=0 then                                                                   
        begin
          FFCYID:=Trim(CDS_Main.fieldbyname('CYID').AsString);
        end;
      end;
      //CDS_Main.Locate('CYID',Trim(CDS_CYNO.fieldbyname('CYID').AsString),[]);

      Next;
    end;
  end;
  CDS_Main.EnableControls;
  CDS_Main.Locate('CYID',FFCYID,[]);
  Edit1.Text:='1';

end;

procedure TfrmCPManage.ToolButton5Click(Sender: TObject);
begin
  try
    frmFileUp:=TfrmFileUp.Create(Application);
    with frmFileUp do
    begin
      Code.Text:=Trim(Self.CDS_Main.fieldbyname('CYNO').AsString);
      CYID:=Trim(Self.CDS_Main.fieldbyname('CYID').AsString);
      if ShowModal=1 then
      begin
        Self.InitGrid();
        Self.CDS_Main.Locate('CYID',CYID,[]);
      end;
    end;
  finally
    frmFileUp.Free;
  end;
end;

procedure TfrmCPManage.ToolButton6Click(Sender: TObject);
var
  fHandle:THandle;
  FInt:Integer;
  FFName,FPath:String;
begin
  {FPath:='C:\HTTP1209\';
  if  DirectoryExists(ExtractFileDir(FPath)) then
    winexec('cmd /c rd /s /q C:\HTTP1209',sw_hide);}
  with ADOQueryTemp do
  begin
    close;
    sql.Clear;
    sql.Add('select * from XD_File where CYNO='''+Trim(CDS_Main.fieldbyname('CYNO').AsString)+'''');
    Open;
    if IsEmpty then
    begin
      Application.MessageBox('样品图片未上传！','提示',0);
      Exit;
    end;
  end;
  try
    ReadINIFile();
    server:=ReadINIFileStr('SYSTEMSET.INI','SERVER','服务器地址','127.0.0.1');
    if Length(server)<6 then
    begin
      server:='127.0.0.1';
    end;
    IdFTP1.Host :=server;//PicSvr;
    IdFTP1.Username := 'three';
    IdFTP1.Password := '641010';
    IdFTP1.Connect();
  except
    IdFTP1.Quit;
    Application.MessageBox('无法连接到文件服务器，请检查！', '提示', MB_ICONWARNING);
    Exit;
  end;
  FPath:='D:\Right1209\';
  if not DirectoryExists(ExtractFileDir(FPath)) then
    CreateDir(ExtractFileDir(FPath));
  FFName:=Trim(ADOQueryTemp.fieldbyname('FileName').AsString);
  FFName:=FPath+FFName;
  if FileExists(FFName) then
  begin
    FInt:=1;
  end;
  if FInt<>1 then
    IdFTP1.Get('YP\'+Trim(ADOQueryTemp.fieldbyname('FileName').AsString),
                   FPath+Trim(ADOQueryTemp.fieldbyname('FileName').AsString)
                    );
  if IdFTP1.Connected then IdFTP1.Quit;
  ShellExecute(Handle, 'open',PChar(FPath+Trim(ADOQueryTemp.fieldbyname('FileName').AsString)),'', '', SW_SHOWNORMAL);

end;
procedure TfrmCPManage.ReadINIFile();
var
  programIni:Tinifile;  //配置文件名
  FileName:string;
begin
  FileName:=ExtractFilePath(Paramstr(0))+'SYSTEMSET.INI';
  programIni:=Tinifile.create(FileName);
  server:=programIni.ReadString('SERVER','服务器地址','127.0.0.1');
  programIni.Free;
end;

procedure TfrmCPManage.Tv1CellClick(Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
  if CDS_Main.IsEmpty then Exit;
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from CP_YDang where CYID='''+Trim(CDS_Main.fieldbyname('CYID').asstring)+'''');
    Open;
  end;
  CPID:=Trim(ADOQueryTemp.fieldbyname('CYType').AsString);
  ADOQueryTree.Locate('CPID',CPID,[]);  
  InitImage();
end;
procedure TfrmCPManage.InitImage();
var
  i,j:integer;
  jpg:TJpegImage;
  myStream: TADOBlobStream;
begin

  j:=length(Mach);
  if j>0 then
  begin
    for i:=0 to j-1 do
    begin
      Mach[i].free;
    end;
  end;
  SetLength(Mach, 0);
  IF CDS_Main.IsEmpty then exit;                             
  try
    with adoqueryPicture do
    begin
      close;
      sql.Clear;
      sql.Add(' select A.TFID,A.WBID,A.FilesOther,B.FileName from TP_File A,XD_File B  where A.TFID =B.XFID and A.WBID='+quotedstr(trim(CDS_Main.fieldbyname('CYID').AsString)));
      open;
    end;
    j:=adoqueryPicture.RecordCount;
    if j<1 then exit;
    adoqueryPicture.DisableControls;
    adoqueryPicture.First;
    SetLength(Mach, j);
    jpg:=TJpegImage.Create();
    for i:=0 to j-1 do
    begin
      if triM(adoqueryPicture.fieldbyname('FilesOther').AsString)<>'' then
      begin
        myStream:=tadoblobstream.Create(tblobfield(adoqueryPicture.fieldbyname('FilesOther')),bmread);
        jpg.LoadFromStream(myStream);
        Mach[i] := TfrmSlt.Create(Self);
        Mach[i].Name:=trim(adoqueryPicture.fieldbyname('TFID').AsString);
        Mach[i].Parent := ScrollBox1;
        Mach[I].Left:=0+i*165;
        Mach[i].Init(adoqueryPicture.fieldbyname('TFID').AsString,adoqueryPicture.fieldbyname('FileName').AsString,jpg);
      end;
      adoqueryPicture.Next;
    end;
     adoqueryPicture.EnableControls;
  finally
    jpg.free;
    application.ProcessMessages;
  end;
end;

procedure TfrmCPManage.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  {if Key= then
  begin
    if CDS_Main.IsEmpty then Exit;
    if Application.MessageBox('确定6666要删除数据吗？','提示',32+4)<>IDYES then Exit;
    if Trim(CDS_Main.fieldbyname('CYID').AsString)<>'' then
    begin
      with ADOQueryCmd do
      begin
        Close;
        SQL.Clear;
        sql.Add('delete CP_YDang where CYID='''+Trim(CDS_Main.fieldbyname('CYID').AsString)+'''');
        ExecSQL;
      end;
    end;

    CDS_Main.Delete;
  end;  }
end;

procedure TfrmCPManage.Tv1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key=46 then
  begin
    TBDel.Click;
  end;
end;

procedure TfrmCPManage.ToolButton7Click(Sender: TObject);
var
 i:Integer;
 FieldName:String;
begin

  try
    frmCPAdd:=TfrmCPAdd.Create(Application);
    with frmCPAdd do
    begin
      CopyInt:=1;
      FCYID:=Trim(Self.CDS_Main.fieldbyname('CYID').AsString);
      FCPID:=Trim(Self.ADOQueryTree.fieldbyname('CPID').AsString);
      FCPNo:=Trim(Self.ADOQueryTree.fieldbyname('CPNo').AsString);
      if ShowModal=1 then
      begin
        Self.CDS_Main.Append;
        for i:=0 to frmCPAdd.Tv1.ColumnCount-1 do
        begin
          FieldName:=frmCPAdd.Tv1.Columns[i].DataBinding.FilterFieldName;
          if Trim(FieldName)<>'' then
          begin
            Self.CDS_Main.FieldByName(FieldName).Value:=frmCPAdd.CDS_Sub.FieldByName(FieldName).Value;
          end;
        end;
        CDS_Main.FieldByName('CPName').Value:=Trim(ADOQueryTree.fieldbyname('CPName').AsString);
        CDS_Main.FieldByName('CYID').Value:=CDS_Sub.fieldbyname('CYID').Value;
        CDS_Main.FieldByName('CYType').Value:=CDS_Sub.fieldbyname('CYType').Value;
        Self.CDS_Main.Post;
      end;
    end;
  finally
    frmCPAdd.Free;
  end;
end;

procedure TfrmCPManage.v1Column19PropertiesChange(Sender: TObject);
var
  mvalue:Boolean;
begin
 { mvalue:=TcxCheckBox(Sender).EditingValue;
  if mvalue=True then
  begin
    with CDS_CYNO do
    begin
      if Locate('CYID',Trim(CDS_Main.fieldbyname('CYID').AsString),[])=False then
      begin
        Append;
        FieldByName('CYID').Value:=Trim(CDS_Main.fieldbyname('CYID').AsString);
        Post;
      end;
    end;
  end else
  begin
    //with CDS_CYNO do
    //begin
    CDS_CYNO.Locate('CYID',Trim(CDS_Main.fieldbyname('CYID').AsString),[]);
    CDS_CYNO.Delete;
    //end;
  end; }
end;

procedure TfrmCPManage.CYMFChange(Sender: TObject);
begin
  //if Length(Trim(TEdit(Sender).Text))<2 then Exit;
  if ADOQueryMain.Active then
  begin
    SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2));
    SCreateCDS20(ADOQueryMain,CDS_Main);
    SInitCDSData20(ADOQueryMain,CDS_Main);
    TJGS();
  end;

end;

procedure TfrmCPManage.CYNameChange(Sender: TObject);
begin
  //if Length(Trim(TEdit(Sender).Text))<2 then Exit;
  if ADOQueryMain.Active then
  begin
    SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2));
    SCreateCDS20(ADOQueryMain,CDS_Main);
    SInitCDSData20(ADOQueryMain,CDS_Main);
    TJGS();
  end;

end;

procedure TfrmCPManage.CYNOKeyPress(Sender: TObject; var Key: Char);
begin
  if Key=#13 then
  begin
    if Trim(CYNO.Text)='' then Exit;
    if Length(Trim(CYNO.Text))<4 then Exit;
    with ADOQueryMain do
    begin
      Close;
      Filtered:=False;
      sql.Clear;
      sql.Add('exec P_Select_CP_YDang :Code,2,'''' ');
      Parameters.ParamByName('Code').Value:='%'+Trim(CYNO.Text)+'%';
      Open;
    end;
    SCreateCDS20(ADOQueryMain,CDS_Main);
    SInitCDSData20(ADOQueryMain,CDS_Main);
    CYID.Text:='';
    ADOQueryTree.Locate('CPID',CPID,[]);
    TJGS();
  end;
end;

procedure TfrmCPManage.ToolButton8Click(Sender: TObject);
var
   fPrintFile,FFCYID:string;
   DPS,i,j:Integer;
   Txt,fImagePath:string;
   Moudle: THandle;
   Makebar:TMakebar;
   Mixtext:TMixtext;
begin
  CYID.SetFocus;
  if CDS_Main.IsEmpty then Exit;

  IF trim(ComboBox1.Text)='' then
  begin
      Application.MessageBox('样品标签不能为空!','提示',0);
      exit;
  end;
  //if CDS_CYNO.IsEmpty then Exit;
  if Trim(Edit1.Text)<>'' then
  begin
    if TryStrToInt(Edit1.Text,i)=False then
    begin
      Application.MessageBox('份数录入错误!','提示',0);
      exit;
    end;
  end;

  fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\'+trim(ComboBox1.Text)+'.rmf';
  CDS_Main.DisableControls;
  DPS:=0;
  FFCYID:='';
  i:=1;
  if Trim(Edit1.Text)='' then
  begin
    j:=1;
  end else
  begin
    j:=StrToInt(Edit1.Text);
  end;
  with CDS_Main do
  begin
    First;
    while not Eof do
    begin
      if CDS_Main.FieldByName('SSel').AsBoolean=True then
      begin

        try
          Moudle:=LoadLibrary('MakeQRBarcode.dll');
          @Makebar:=GetProcAddress(Moudle,'Make');
          @Mixtext:=GetProcAddress(Moudle,'MixText');
          Txt:=Trim(CDS_Main.fieldbyname('CYID').AsString);
          fImagePath:=ExtractFilePath(Application.ExeName)+'image\temp.bmp';
          if not DirectoryExists(pchar(ExtractFilePath(Application.ExeName)+'image')) then
          CreateDirectory(pchar(ExtractFilePath(Application.ExeName)+'image'),nil);
          if FileExists(fImagePath) then DeleteFile(fImagePath);
          Makebar(pchar(Txt),Length(Txt),3,3,0,PChar(fImagePath),3);
        except
          application.MessageBox('条形码生成失败！','提示信息',MB_ICONERROR);
          exit;
        end;
        RMVariables['QRBARCODE']:=fImagePath;

        for i:=1 to j do
        begin
          if FileExists(fPrintFile) then
          begin
            RM1.LoadFromFile(fPrintFile);
          //  RM1.PrintReport;
            RM1.ShowReport;
          end else
          begin
            Application.MessageBox(PChar('没有找'+ExtractFilePath(Application.ExeName)+'Report\样品标签.rmf'),'提示',0);
            Exit;
          end;
        end;

        if DPS=0 then
        begin
          FFCYID:=Trim(CDS_Main.fieldbyname('CYID').AsString);
        end;
      end;
      //CDS_Main.Locate('CYID',Trim(CDS_CYNO.fieldbyname('CYID').AsString),[]);

      Next;
    end;
  end;
  CDS_Main.EnableControls;
  CDS_Main.Locate('CYID',FFCYID,[]);
  Edit1.Text:='1';

end;

end.
