unit U_XcCustCodeHelp_dx;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, CheckLst, Buttons, DB, ADODB, cxStyles, cxCustomData,
  cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData,
  cxDropDownEdit, cxGridLevel, cxGridCustomTableView, cxGridTableView,
  cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid,
  cxLookAndFeels, DBClient, cxCheckBox;

type
  TfrmXcCustCodeHelp_dx = class(TForm)
    ADOQueryHelp: TADOQuery;
    btOk: TBitBtn;
    btNo: TBitBtn;
    dbGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    Tv1code: TcxGridDBColumn;
    Tv1Name: TcxGridDBColumn;
    dbGrid1Level1: TcxGridLevel;
    DataSource1: TDataSource;
    ADOConnection1: TADOConnection;
    cxLookAndFeelController1: TcxLookAndFeelController;
    cxStyleRepository1: TcxStyleRepository;
    cxStyle1: TcxStyle;
    cxStyle2: TcxStyle;
    cxStyle_gridRow: TcxStyle;
    cxStyle_gridFoot: TcxStyle;
    cxStyle_gridHead: TcxStyle;
    cxStyle_gridGroupBox: TcxStyle;
    cxStyle_yellow: TcxStyle;
    cxStyle_Red: TcxStyle;
    cxStyle_fontBlack: TcxStyle;
    cxStyle_fontclFuchsia: TcxStyle;
    cxStyle_fontclPurple: TcxStyle;
    cxStyle_fontclGreen: TcxStyle;
    cxStyle_fontclBlue: TcxStyle;
    cxStyle_fontclTeal: TcxStyle;
    cxStyle_fontclOlive: TcxStyle;
    CDSHELP: TClientDataSet;
    v1sel: TcxGridDBColumn;
    CheckBox1: TCheckBox;
    procedure btNoClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure btOkClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Tv1DblClick(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
  private
    procedure InitData();
  public
    Fflag:string;  //类型标志
    fDivChar:string;
    pColumns:integer;
    fSelResult:string;
  end;

var
  frmXcCustCodeHelp_dx: TfrmXcCustCodeHelp_dx;

implementation
uses
  U_global,U_FormPas;
{$R *.dfm}
procedure InitCDSData20(fromADO:TADOQuery;toCDS:TclientDataSet);
var
  i:integer;
  k:integer;
begin
  if fromADO.IsEmpty then exit;
  fromADO.first;
  K:=1;
  try
    toCDS.DisableControls;
    toCDS.Filtered:=false;

    while not fromADO.Eof do
    begin
      with toCDS do
      begin
        Append;
        for i:=0 to fromADO.FieldCount-1 do
        begin
          fields[i].value:=fromADO.Fields[i].Value ;
        end;
        fieldByName('index').value :=k;
        fieldByName('sel').value :=false;
        inc(k);
        Post;
      end;
      fromADO.Next;
    end;
    if not toCDS.IsEmpty then
    begin
      toCDS.First ;
    end;
  finally
    toCDS.EnableControls;
  end;
end;
procedure CreateCDS20(SADOQry:TADOQuery; mClientDataset:TclientDataSet );
var
  i:integer;
  mfieldName:string;
  mSize:integer;
begin
  mfieldName:='';
  mClientDataset.FieldDefs.Clear;
  with SADOQry do
  begin
    for i:=0 to fieldCount-1 do     //
    begin
      if (Fields[i].DataType=ftString) and (Fields[i].Size=0) then
      begin
        msize:=1;
      end
      else
        msize:=Fields[i].Size;
      mfieldName:=trim(fields[i].FieldName);
      mClientDataset.FieldDefs.Add(mfieldName,
                                    Fields[i].DataType,msize);

    end;
  end;
  mClientDataset.FieldDefs.Add('index',ftInteger,0);
  mClientDataset.FieldDefs.Add('sel',ftBoolean,0);
  mClientDataset.FieldDefs.Add('DefNote',ftString,20);
  mClientDataset.Close;
  mClientDataset.CreateDataSet;
end;
procedure TfrmXcCustCodeHelp_dx.btNoClick(Sender: TObject);
begin
  ModalResult:=-1;
end;

procedure TfrmXcCustCodeHelp_dx.FormCreate(Sender: TObject);
begin
  with ADOConnection1 do
  begin
    Connected:=false;
    ConnectionString:=gConString;
    Connected:=true;
  end;
end;
////////////////////////////////////////////////
  //函数：
////////////////////////////////////////////////
procedure TfrmXcCustCodeHelp_dx.InitData();
begin
  with ADOQueryHelp do
  begin
    close;
    sql.clear;
    sql.Add('select * from XC_Custcode');
    sql.Add('where flag='''+Fflag+'''');
    sql.Add('and Valid=''Y''');
    sql.Add('order by orderNo');
    Open;
  end;
  CreateCDS20(ADOQueryHelp,cdsHelp);
  InitCDSData20(ADOQueryHelp,cdsHelp);
end;
procedure TfrmXcCustCodeHelp_dx.FormShow(Sender: TObject);
begin
  self.Caption :='输入帮助(类别：'+FFlag+')';
  InitData();
end;

procedure TfrmXcCustCodeHelp_dx.btOkClick(Sender: TObject);
begin
  if cdshelp.IsEmpty then exit;
  fSelResult:='';
  if trim(fDivChar)='' then fDivChar:=';';
  with  cdshelp do
  begin
    DisableControls;
    First;
    while not Eof do
    begin
      if fieldbyname('sel').AsBoolean then
      fSelResult:=fSelResult+Trim(Fieldbyname('Name').AsString)+Trim(fDivChar);
      next;
    end;
    First;
    EnableControls;
  end;
  ModalResult:=1;
end;

procedure TfrmXcCustCodeHelp_dx.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action:=caFree;
end;

procedure TfrmXcCustCodeHelp_dx.Tv1DblClick(Sender: TObject);
begin
  btOk.Click ;
end;

procedure TfrmXcCustCodeHelp_dx.CheckBox1Click(Sender: TObject);
begin
  if cdshelp.IsEmpty then exit;
  with  cdshelp do
  begin
    DisableControls;
    First;
    while not Eof do
    begin
      edit;
      fieldbyname('sel').AsBoolean:=checkbox1.Checked;
      post;
      next;
    end;
    First;
    EnableControls;
  end;
end;

end.
