pub.pas

来自「pasa人力资源考勤管理系统」· PAS 代码 · 共 219 行

PAS
219
字号
unit pub;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StdCtrls, Buttons, ExtCtrls, DBCtrls, Grids, DBGrids, ImgList,
  ToolWin, OleCtrls,  Menus, adodb,Quickrpt,qrextra, ppCtrls, ppBands,
  ppClass, ppPrnabl, ppProd, ppReport, ppDB, ppComm, ppRelatv, ppCache,
  ppDBPipe, ppViewr,ppTypes, ppVar, ppModule, daDatMod, ppDBBDE;

type
  TFormpub = class(TForm)
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    tbnsort: TToolButton;
    tbnfind: TToolButton;
    tbsButton: TToolButton;
    ToolButton4: TToolButton;
    DBNavigator1: TDBNavigator;
    ImageList1: TImageList;
    PopupMenu1: TPopupMenu;
    stob: TMenuItem;
    btos: TMenuItem;
    exe: TMenuItem;
    esc: TMenuItem;
    DBGrid1: TDBGrid;
    procedure tbnsortClick(Sender: TObject);
    procedure stobClick(Sender: TObject);
    procedure btosClick(Sender: TObject);
    procedure exeClick(Sender: TObject);
    procedure escClick(Sender: TObject);
    procedure tbnfindClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ToolButton4Click(Sender: TObject);
    procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
    manyfield:boolean;
    findex:array[1..5] of integer;
    fsort:array[1..5] of string;
    fcount:0..5;
    dbgrid:0..2;
    f:string;   //排序的字段
    angry:0..2;
  end;

var
  Formpub: TFormpub;

implementation

uses datamol, main,publicfunction, canfind;
{$R *.DFM}

procedure TFormpub.tbnsortClick(Sender: TObject);
var i:1..5;
begin
  if manyfield then
   begin
     manyfield:=false;
     tbnsort.hint:='设定多字段排序';
     popupmenu1.Items[0].Enabled :=false;
     popupmenu1.Items[1].Enabled :=false;
     popupmenu1.Items[2].Enabled :=false;
     popupmenu1.Items[3].Enabled :=false;
   end
  else begin
    manyfield:=true;
    tbnsort.hint:='取消多字段排序'; //说明现在dbgrid1正处于多字段排序中
    f:='';
    popupmenu1.Items[0].Enabled :=true;
    popupmenu1.Items[1].Enabled :=true;
    popupmenu1.Items[2].Enabled :=true;
    popupmenu1.Items[3].Enabled :=true;
    fcount:=0;
    for i:=1 to 5 do
     begin
       findex[i]:=0;
       fsort[i]:='';
     end;
  end;
end;

procedure TFormpub.stobClick(Sender: TObject);
var i:integer;
   db:Tdbgrid;
begin
  db:=TDBGrid(Findcomponent('DBGrid1'));
  for i:=1 to fcount do
   if db.SelectedIndex =findex[i] then
    begin
     fsort[i]:='ASC';
     exit;
    end;
  if fcount<5 then
   begin
    fcount:=fcount+1;
    findex[fcount]:=db.selectedindex;
    fsort[fcount]:='ASC';
    db.Columns[db.selectedindex].Color :=clgray;
   end;
end;

procedure TFormpub.btosClick(Sender: TObject);
var i:integer;
   db:Tdbgrid;
begin
  db:=TDBGrid(Findcomponent('DBGrid1'));
  for i:=1 to fcount do
   if db.SelectedIndex =findex[i] then
    begin
     fsort[i]:='DESC';
     exit;
    end;
  if fcount<5 then
   begin
    fcount:=fcount+1;
    findex[fcount]:=db.selectedindex;
    fsort[fcount]:='DESC';
    db.Columns[db.selectedindex].Color :=clgray;
   end;
end;

procedure TFormpub.exeClick(Sender: TObject);
var i:1..5;
   db:Tdbgrid;
begin
  db:=TDBGrid(Findcomponent('DBGrid1'));
  TADODataset(DBGrid1.Datasource.dataset).Sort:='';
  for i:=1 to fcount do
  begin
   if db.Columns[findex[i]].Color=clgray then
    begin
     TADODataset(DBGrid1.Datasource.dataset).Sort :=TADODataset(DBGrid1.Datasource.dataset).Sort+db.Columns[findex[i]].FieldName+' '+fsort[i];
     if i<fcount then TADODataset(DBGrid1.Datasource.dataset).Sort:=TADODataset(DBGrid1.Datasource.dataset).Sort+',';
    end;
  end;
end;

procedure TFormpub.escClick(Sender: TObject);
var i:1..5;
begin
  for i:=1 to fcount do
    TDBGrid(Findcomponent('DBGrid1')).Columns[findex[i]].Color :=clwindow;
  fcount:=0;
end;

procedure TFormpub.tbnfindClick(Sender: TObject);
var tablename,sql,s1,s2:string;
    d:TADODataset;
begin
  d:=TADODataset(TDBGrid(Findcomponent('DBGrid1')).DataSource.DataSet);
  sql:=d.CommandText;
  s1:=trim(copy(sql,pos('from',sql)+4,length(sql)-pos('from',sql)+4));
  s2:=copy(s1,1,pos(' ',s1)-1);
  tablename:=s2;
  findrecorder(TADODataset(DBGrid1.Datasource.dataset),TDBGrid(Findcomponent('DBGrid1')).DataSource.DataSet.Name,tablename);   //调用publicfuction中的查询功能
end;

procedure TFormpub.FormCreate(Sender: TObject);
begin
  f:='ASC';
  if Findcomponent('DBGrid1')<>nil then
  begin
     DBGrid1.PopupMenu:=popupmenu1;
     DBNavigator1.DataSource:=TDBGrid(Findcomponent('DBGrid1')).DataSource;
  end;
  TDBGrid(Findcomponent('DBGrid1')).DataSource.DataSet.Open;
end;

procedure TFormpub.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  TDBGrid(Findcomponent('DBGrid1')).DataSource.DataSet.close;
  action:=cafree;
end;

procedure TFormpub.ToolButton4Click(Sender: TObject);
begin
  close;
end;

procedure TFormpub.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  dbgrid_keypress(sender,key);
end;

procedure TFormpub.DBGrid1TitleClick(Column: TColumn);
var db:Tdbgridsort;
begin
 if angry=2 then
   begin
    angry:=0;
    exit;
   end;
  db:=Tdbgridsort.create;   //调用排序
  db.sort(column,TADODataset(DBGrid1.datasource.dataset),f);
  db.free;
  angry:=1;
end;

procedure TFormpub.FormKeyPress(Sender: TObject; var Key: Char);
begin
   if key=#13 then
   begin
     key:=#0;
     selectnext(activecontrol,true,true);
   end;
end;

end.

⌨️ 快捷键说明

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