⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pfm_querykcsp.pas

📁 POS收银系统
💻 PAS
字号:
unit pfm_querykcsp;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, Grids, DBGrids, Db, DBTables,pvar_lib, pfm_selgridcol;

type
  Tfm_querykcsp = class(TForm)
    GroupBox1: TGroupBox;
    CbBox1: TComboBox;
    BBtnset: TBitBtn;
    GroupBox2: TGroupBox;
    Query1: TQuery;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    QryName: TQuery;
    BBtnclear: TBitBtn;
    BBtnSelV: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BBtnsetClick(Sender: TObject);
    procedure CbBox1Change(Sender: TObject);
    procedure BBtnclearClick(Sender: TObject);
    procedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    procedure BBtnSelVClick(Sender: TObject);
  private
    { Private declarations }
    procedure OpenKcsp();
  public
    { Public declarations }
  end;

var
  fm_querykcsp: Tfm_querykcsp;

implementation

uses pfm_query;

{$R *.DFM}
var
gridcolname:Tstringlist;
mysql1:string;
qrysql:string;
visiblecol:Tstringlist;

procedure Tfm_querykcsp.FormCreate(Sender: TObject);
var
i:integer;
begin
//往中加入仓库
    Qryname.close;
    Qryname.SQL.Clear;
    Qryname.SQL.Add('select * from t_ckxx');
    Qryname.Open;

    cbbox1.Items.add('全部仓库');
    while not Qryname.Eof do
    begin
        cbBox1.items.add(Qryname.fieldbyname('ckmc').asstring);
        Qryname.Next;
    end;
    Qryname.close;
    Qryname.SQL.Clear;
    Qryname.SQL.Add('select * from t_fendianxx');
    Qryname.Open;

    cbbox1.items.add('全部分店');
    while not Qryname.Eof do
    begin
        cbbox1.items.add(Qryname.fieldbyname('fdmc').asstring);
        Qryname.Next;
    end;
    gridcolname:=tstringlist.create;
    visiblecol:=tstringlist.create;
    QryName.Active:=false;
    qryname.sql.clear;
    qryname.sql.add('select * from tab_chinesename where tablename=''t_spxx'' or tablename=''t_spstock''');
    qryname.active:=true;
    while not qryname.eof do
    begin
        gridcolname.add(qryname.fieldbyname('englishname').asstring+'='+
               qryname.fieldbyname('chinesename').asstring);
        qryname.next;
    end;
    qryname.active:=false;
    query1.sql.clear;
    query1.sql.add('select * from v_kcsp where 1=2');
    query1.active:=true;
    for i:=0 to dbgrid1.columns.count-1 do
    begin
        visiblecol.add(dbgrid1.columns[i].FieldName+'=1');
        dbgrid1.columns[i].Title.caption:=GridColName.values[dbgrid1.columns[i].Title.caption];
        if (dbgrid1.Columns[i].fieldname='spnum') or (dbgrid1.Columns[i].fieldname='spnummin') then
            dbgrid1.columns[i].font.Color:=clGreen;
    end;
    mysql1:='';
    qrysql:='2=2';

end;

procedure Tfm_querykcsp.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
    gridcolname.free;
    visiblecol.free;
    action:=cafree;
end;

procedure Tfm_querykcsp.BBtnsetClick(Sender: TObject);
var
i:integer;
begin
    for i:=0 to dbgrid1.Columns.Count-1 do
    begin
        mFieldCap[i]:=dbgrid1.Columns[i].Title.Caption;
        mFieldName[i]:=dbgrid1.Columns[i].fieldname;
        mFieldType[i]:=dbgrid1.Columns[i].Field.datatype;
        mFieldNum:=i;
    end;

    fm_query:=Tfm_query.Create(self);
    if fm_query.ShowModal=mrOK then
    begin
        qrysql:=sQuerySql;
        OpenKcsp();
    end;

end;

procedure Tfm_querykcsp.CbBox1Change(Sender: TObject);
var
i:integer;
begin
    if cbbox1.ItemIndex<0 then
    begin
        showmessage('请选择仓库或分店名称');
        exit;
    end;
    if (cbbox1.text='全部仓库') then
    begin
        mysql1:=' v_kcsp.ckmc in (select ckmc from t_ckxx) and ';
    end else if cbbox1.text='全部分店' then
    begin
        mysql1:=' v_kcsp.ckmc in (select fdmc from t_fendianxx) and ';
    end
    else
    begin
        mysql1:=' ckmc='''+cbbox1.text+''' and ';
    end;
    OpenKcsp();

end;

procedure Tfm_querykcsp.BBtnclearClick(Sender: TObject);

begin
    qrysql:='2=2';
    OpenKcsp();
end;
procedure Tfm_querykcsp.OpenKcsp();
var
i:integer;
begin
    query1.active:=false;
    query1.sql.clear;
    query1.sql.add('select * from v_kcsp where '+mysql1+qrysql);
    query1.active:=true;
    for i:=0 to dbgrid1.columns.count-1 do
    begin
        if visiblecol.values[dbgrid1.Columns[i].fieldname]='1' then
        begin
            dbgrid1.columns[i].visible:=true;
        end
        else
        begin
            dbgrid1.columns[i].visible:=false;
        end;
        dbgrid1.columns[i].Title.caption:=GridColName.values[dbgrid1.columns[i].Title.caption];
        if (dbgrid1.Columns[i].fieldname='spnum') or (dbgrid1.Columns[i].fieldname='spnummin') then
        begin
            dbgrid1.columns[i].font.Color:=clGreen;
            dbgrid1.columns[i].font.Style:=dbgrid1.columns[i].font.Style + [fsbold];
        end;

    end;
end;
procedure Tfm_querykcsp.DBGrid1DrawDataCell(Sender: TObject;
  const Rect: TRect; Field: TField; State: TGridDrawState);
begin
    if (query1.fieldbyname('spnum').asinteger<query1.fieldbyname('spnummin').asinteger) and (not(gdselected  in state)) then
    begin
        (sender as tdbgrid).Canvas.Brush.Color:=RGB(219,253,253);
        (sender as tdbgrid).Canvas.font.Color:=clred;
    end
    else if (query1.fieldbyname('spnum').asinteger>query1.fieldbyname('spnummax').asinteger) and (not(gdselected in state)) then
    begin
        (sender as tdbgrid).Canvas.Brush.Color:=RGB(229,253,253);
        (sender as tdbgrid).Canvas.font.Color:=clpurple;
    end;
     (sender as tdbgrid).DefaultDrawDataCell(Rect, Field, State);
end;

procedure Tfm_querykcsp.BBtnSelVClick(Sender: TObject);
var
i:integer;
begin
    Application.CreateForm(Tfm_selgridcol, fm_selgridcol);
    fm_selgridcol.GRID1:=dbgrid1;
    fm_selgridcol.showmodal;
    fm_selgridcol.Free;
    for i:=0 to dbgrid1.columns.count-1 do
    begin
        if dbgrid1.Columns[i].visible=true then
        begin
            visiblecol.values[dbgrid1.Columns[i].fieldname]:='1';
        end
        else
        begin
            visiblecol.values[dbgrid1.Columns[i].fieldname]:='0';
        end;
     end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -