unit U_LabelList;

interface

uses
  Windows, Messages, SysUtils, StrUtils, Variants, Classes, Graphics, Controls,
  Forms, Dialogs, ComCtrls, ToolWin, StdCtrls, BtnEdit, ExtCtrls, DB, ADODB,
  RM_System, RM_Common, RM_Class, RM_GridReport, Buttons, RTComboBox, RM_Preview,
  RM_e_Xls, RM_e_Graphic, RM_e_bmp, RM_BarCode, RM_DsgGridReport, RM_Dataset,
  cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit,
  cxDBData, cxGridLevel, cxGridCustomTableView, cxGridTableView,
  cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, DBClient,
  cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxSkinsCore,
  dxSkinsDefaultPainters, dxDateRanges;

type
  TfrmLabelList = class(TForm)
    ADOQueryCmd: TADOQuery;
    OpenDialog1: TOpenDialog;
    RMGridReport1: TRMGridReport;
    ADOQueryTmp: TADOQuery;
    RMPreview1: TRMPreview;
    ADOQuery1: TADOQuery;
    DS_Label: TDataSource;
    ADOQueryLabel10: TADOQuery;
    ToolBar2: TToolBar;
    Tadd: TToolButton;
    Tupd: TToolButton;
    Tdel: TToolButton;
    TOK: TToolButton;
    Tclose: TToolButton;
    Panel4: TPanel;
    ToolButton1: TToolButton;
    Label9: TLabel;
    Label10: TLabel;
    LabelCaption: TEdit;
    LabelType: TRTComboBox;
    ADOQueryLabel: TClientDataSet;
    cxGrid1: TcxGrid;
    tv1: TcxGridDBTableView;
    tv1labelId: TcxGridDBColumn;
    tv1labeltype: TcxGridDBColumn;
    tv1labelCaption: TcxGridDBColumn;
    tv1labelFile: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    procedure TcloseClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BtOpenClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure RMPreview1DblClick(Sender: TObject);
    procedure TaddClick(Sender: TObject);
    procedure TupdClick(Sender: TObject);
    procedure tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
    procedure TdelClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
    procedure TOkClick(Sender: TObject);
    procedure tv1DblClick(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure LabelTypeChange(Sender: TObject);
    procedure tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
  private
    isLoad: Boolean;
    function DeleteData(): Boolean;
    procedure InitWinData();
    procedure InitVarDictionary();
    procedure InitDataSetDictionary();
    procedure InitGrid();
    procedure OpenLabel();
    procedure DoFilter();
  public
    fSelLabelId, LBName, LBInt, SLBName: string;
    fKeyNo: string;
    fchg: Boolean;
    fIsShowModal: Boolean;
    fWinStatus: integer;
  end;

var
  frmLabelList: TfrmLabelList;

implementation

uses
  U_DataLink, U_LabelAdd, U_RTFun;
{$R *.dfm}

procedure TfrmLabelList.DoFilter();
var
  filterStr: string;
begin
  filterStr := '';

  if trim(LabelType.Text) <> '' then
  begin
    filterStr := ' and LabelType like ' + quotedStr('%' + trim(LabelType.Text) + '%');
  end;
  //����
  if trim(LabelCaption.Text) <> '' then
  begin
    filterStr := filterStr + ' and LabelCaption like ' + quotedStr('%' + trim(LabelCaption.Text) + '%');
  end;
  try
    ADOQueryLabel10.DisableControls;
    if trim(filterStr) = '' then
    begin
      ADOQueryLabel.Filtered := false;
      ADOQueryLabel.EnableControls;
      exit;
    end;
    filterStr := trim(RightBStr(filterStr, length(filterStr) - 4));
    with ADOQueryLabel do
    begin
      filtered := false;
      filter := filterStr;
      filtered := true;
    end;
    SDofilter(ADOQueryLabel10, filterStr);
    SCreateCDS(ADOQueryLabel10, ADOQueryLabel);
    SInitCDSData(ADOQueryLabel10, ADOQueryLabel);
  finally
    ADOQueryLabel10.EnableControls;
  end;
end;

procedure TfrmLabelList.TcloseClick(Sender: TObject);
begin
  close;
end;

procedure TfrmLabelList.FormCreate(Sender: TObject);
begin

 // ClearWinData(panel3);
  fSelLabelId := '';

end;

procedure TfrmLabelList.BtOpenClick(Sender: TObject);
begin

end;
////////////////////////////////////////////////////////////
  //��ʼ����������
////////////////////////////////////////////////////////////

procedure TfrmLabelList.InitWinData();
begin
  try
    with ADOQueryTmp do
    begin
      close;
      sql.Clear;
      sql.Add('select A.* ,B.customName as customNoName');
      sql.Add('from JD_Label A');
      sql.Add('INNER JOIN BC_customer B ON A.customNO=B.customNo');
      sql.Add('WHERE B.customNo=''' + fkeyNo + '''');
      Open;
      if isEmpty then
      begin
        close;
        exit;
      end;

     // SetWinData(ADOQueryTmp,panel3);
      {
      RMGridReport1.LoadFromBlobField(tblobfield(fieldbyname('labelFile')));
      RMGridReport1.Preview :=RMPreview1;
      RMGridReport1.PrepareReport;
      RMGridReport1.ShowReport ;
      }
    end;
  except
  end;
end;

procedure TfrmLabelList.FormShow(Sender: TObject);
begin
  if fWinStatus = 1 then
    tok.Visible := false;
  InitGrid();
  if Trim(SLBName) <> '' then
  begin
    ADOQueryLabel.Locate('labelCaption', SLBName, []);
  end;
end;

procedure TfrmLabelList.RMPreview1DblClick(Sender: TObject);
begin
  //btOpen.Click ;
end;
////////////////////////////////////////////////////////////
  //
////////////////////////////////////////////////////////////

procedure TfrmLabelList.InitVarDictionary();
var
  TmpList: Tstrings;
  mm: string;
  i: integer;
begin
  try
    TmpList := TstringList.Create();
    with ADOQueryTmp do
    begin
      close;
      sql.Clear;
      sql.Add('select distinct ItemType from JC_LabelSetItems ');
      sql.Add('where valid=''Y''');
      Open;
      TmpList.Clear;
      while not Eof do
      begin
        TmpList.Add(trim(fieldByName('ItemType').AsString));
        Next;
      end;
    end;
  finally
    TmpList.Free;
  end;
end;
/////////////////////////////////////////////////
  //
/////////////////////////////////////////////////

procedure TfrmLabelList.InitDataSetDictionary();
begin
{  with ADOQuery1 do
  begin
    close;
    sql.Clear ;
    sql.Add('exec P_Get_LabelPrintData');
    sql.Add(quotedStr(''));
    sql.Add(','+quotedStr(''));
    sql.Add(','+quotedStr(''));
    OPen;
  end; }
end;

procedure TfrmLabelList.TaddClick(Sender: TObject);
begin
  try
    frmLabelAdd := TfrmLabelAdd.create(self);
    with frmLabelAdd do
    begin
      if showModal = 1 then
      begin
        fchg := true;
        InitGrid();
      end;
    end;
  finally
    frmLabelAdd.Free;
  end;
end;

procedure TfrmLabelList.TupdClick(Sender: TObject);
begin
  if ADOQueryLabel.IsEmpty then
    exit;
  try
    frmLabelAdd := TfrmLabelAdd.create(self);
    with frmLabelAdd do
    begin
      fKeyNo := ADOQueryLabel.fieldByName('LabelId').AsString;
      fWinstatus := 1;
      if showModal = 1 then
      begin
        fchg := true;
        InitGrid();
      end;
    end;
  finally
    frmLabelAdd.Free;
  end;

end;
/////////////////////////////////////////////
  //
/////////////////////////////////////////////

procedure TfrmLabelList.InitGrid();
begin
  try
    isLoad := false;
    ADOQueryLabel10.DisableControls;
    with ADOQueryLabel10 do
    begin
      close;
      sql.Clear;
      sql.Add('select * from P_Label');
      sql.Add('where valid=''Y''');
      sql.Add(' order by labelCaption');
      Open;
    end;
    SCreateCDS(ADOQueryLabel10, ADOQueryLabel);
    SInitCDSData(ADOQueryLabel10, ADOQueryLabel);
  finally
    ADOQueryLabel10.EnableControls;
    isLoad := true;
    //DoFilter();
    //OpenLabel();
  end;
end;
////////////////////////////////////////////////////////
  //�������ܣ��򿪱�ǩ�ļ�
////////////////////////////////////////////////////////

procedure TfrmLabelList.OpenLabel();
begin
  if ADOQueryLabel.IsEmpty then
    exit;
  with RMGridReport1 do
  begin
    LoadFromBlobField(tblobfield(ADOQueryLabel.fieldbyname('labelFile')));
    //Preview :=RMPreview1;
    ShowReport;
  end;
end;

procedure TfrmLabelList.tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
begin

end;

/////////////////////////////////////////////////////////////

function TfrmLabelList.DeleteData(): Boolean;
begin
  try
    with ADOQueryCmd do
    begin
      close;
      sql.clear;
      sql.Add('delete P_Label');
      sql.Add('where labelId=' + ADOQueryLabel.fieldByName('LabelID').asString);

      sql.Add('insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( ');
      sql.Add(' ' + quotedstr(trim(DName)));
      sql.Add(',getdate() ');
      sql.Add(',' + quotedstr(trim(self.Caption)));
      sql.Add(',' + quotedstr(trim('��ǩɾ��')));
      sql.Add(',' + quotedstr(trim('��ǩ���ƣ�' + trim(ADOQueryLabel.fieldByName('labelCaption').asString))));
      sql.Add(',' + quotedstr(trim('�ɹ�')));
      sql.Add(')');
      execSql;
    end;
    result := true;
  except
    result := false;
    application.MessageBox('ɾ��ʧ��!', '������Ϣ', 0);
  end;
end;

procedure TfrmLabelList.TdelClick(Sender: TObject);
begin
  if ADOQueryLabel.IsEmpty then
    exit;
  if application.MessageBox('ȷ��Ҫɾ���˱�ǩ��', '������Ϣ', 1) = 2 then
    exit;
  if DeleteData() then
  begin
    fchg := true;
    InitGrid();
  end;
end;

procedure TfrmLabelList.FormClose(Sender: TObject; var Action: TCloseAction);
begin

  Action := caFree;
end;

procedure TfrmLabelList.FormDestroy(Sender: TObject);
begin
  frmLabelList := nil;
end;

procedure TfrmLabelList.TOkClick(Sender: TObject);
begin
  if ADOQueryLabel.IsEmpty then
    exit;
  LBName := Trim(ADOQueryLabel.fieldbyname('labelCaption').AsString);
  ModalResult := 1;
end;

procedure TfrmLabelList.tv1DblClick(Sender: TObject);
begin
  TOk.Click;
end;

procedure TfrmLabelList.ToolButton1Click(Sender: TObject);
begin
  InitGrid();
end;

procedure TfrmLabelList.LabelTypeChange(Sender: TObject);
begin
  DoFilter();
end;

procedure TfrmLabelList.tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
begin
  if isLoad then
    OpenLabel();
end;

end.