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

📄 unit1.pas

📁 2004090611144625767.rar 资源名称:通用工资管理
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids, DBGrids, ComCtrls, StdCtrls, Db;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Button2: TButton;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    DBGrid2: TDBGrid;
    treeview1: TTreeView;
    procedure Button1Click(Sender: TObject);
    procedure Edit1Enter(Sender: TObject);
    procedure TreeView1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormShow(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure DBGrid1ColEnter(Sender: TObject);
    procedure DBGrid1ColExit(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure SaveBoolean;
    procedure treeviewproc();
    procedure DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
  private
    { Private declarations }
   OriginalOptions : TDBGridOptions;
  public
   i_key13:boolean;
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses datamodule;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
grouprsbm,rsbmstr:string;
begin
treeview1.items.clear;
grouprsbm:='select a_bm from rsbm group by a_bm';
with datamodule1.rsbms do
begin
close;
sql.clear;
sql.add(grouprsbm);
prepare;
open;
end;
datamodule1.rsbms.Last;
while not datamodule1.rsbms.bof do
begin
 rsbmstr:='select *from rsbm where a_bm='+''''+datamodule1.rsbms.fieldbyname('a_bm').asstring+'''';
 with datamodule1.rsbmss do
 begin
 close;
 sql.clear;
 sql.add(rsbmstr);
 prepare;
 open;
 end;//with
 // treeview1.Items.Clear;
 if datamodule1.rsbms.eof  then
 begin
 if (datamodule1.rsbms.eof) and (datamodule1.rsbmss.RecordCount<=1) then
 begin
 treeview1.Items.Add(treeview1.TopItem ,datamodule1.rsbmss.fieldbyname('a_bm').asstring+'('+datamodule1.rsbmss.fieldbyname('a_number').asstring+')');
 treeview1.TopItem.selected:=true;
 end//if
 else
 begin
 treeview1.Items.Add(treeview1.TopItem ,datamodule1.rsbms.fieldbyname('a_bm').asstring);
 datamodule1.rsbmss.last;
 while not datamodule1.rsbmss.bof do
 begin
  if datamodule1.rsbmss.FieldByName('a_bz').asstring<>'' then
 treeview1.Items.addchild(treeview1.topitem,datamodule1.rsbmss.fieldbyname('a_bz').asstring+'('+datamodule1.rsbmss.fieldbyname('a_number').asstring+')');
 datamodule1.rsbmss.prior;
 end;//while
 treeview1.TopItem.selected:=true;
 end;//else  第一条头节点
  end//datamodule1.rsbms.bof
  else
  begin
  if datamodule1.rsbmss.RecordCount<=1 then
  begin
  treeview1.Items.Add(treeview1.selected,datamodule1.rsbmss.fieldbyname('a_bm').asstring+'('+datamodule1.rsbmss.fieldbyname('a_number').asstring+')');
  treeview1.Selected.getNextSibling.Selected :=true;
  end
  else
  begin
  treeview1.items.add(treeview1.Selected.getNextSibling,datamodule1.rsbms.fieldbyname('a_bm').asstring);
  treeview1.Selected.getNextSibling.Selected :=true;
  datamodule1.rsbmss.last;
  while not datamodule1.rsbmss.bof do
  begin
  if datamodule1.rsbmss.FieldByName('a_bz').asstring<>'' then
  treeview1.items.addchild(treeview1.selected,datamodule1.rsbmss.fieldbyname('a_bz').asstring+'('+datamodule1.rsbmss.fieldbyname('a_number').asstring+')');
  datamodule1.rsbmss.prior;
  end;//while not
  end;
  end;//else不是第一条节点
datamodule1.rsbms.prior;
end;//while not rsbms

treeview1.visible:=true;
end;


procedure tform1.treeviewproc();
var
grouprsbm,rsbmstr:string;
begin
self.treeview1.items.clear;
grouprsbm:='select a_bm from rsbm group by a_bm';
with datamodule1.rsbms do
begin
close;
sql.clear;
sql.add(grouprsbm);
prepare;
open;
end;
datamodule1.rsbms.Last;
while not datamodule1.rsbms.bof do
begin
 rsbmstr:='select *from rsbm where a_bm='+''''+datamodule1.rsbms.fieldbyname('a_bm').asstring+'''';
 with datamodule1.rsbmss do
 begin
 close;
 sql.clear;
 sql.add(rsbmstr);
 prepare;
 open;
 end;//with
 // treeview1.Items.Clear;
 if datamodule1.rsbms.eof  then
 begin
 if (datamodule1.rsbms.eof) and (datamodule1.rsbmss.RecordCount<=1) then
 begin
 self.treeview1.Items.Add(self.treeview1.TopItem ,datamodule1.rsbmss.fieldbyname('a_bm').asstring+'('+datamodule1.rsbmss.fieldbyname('a_number').asstring+')');
 self.treeview1.TopItem.selected:=true;
 end//if
 else
 begin
 self.treeview1.Items.Add(self.treeview1.TopItem ,datamodule1.rsbms.fieldbyname('a_bm').asstring);
 datamodule1.rsbmss.last;
 while not datamodule1.rsbmss.bof do
 begin
  if datamodule1.rsbmss.FieldByName('a_bz').asstring<>'' then
 self.treeview1.Items.addchild(self.treeview1.topitem,datamodule1.rsbmss.fieldbyname('a_bz').asstring+'('+datamodule1.rsbmss.fieldbyname('a_number').asstring+')');
 datamodule1.rsbmss.prior;
 end;//while
 self.treeview1.TopItem.selected:=true;
 end;//else  第一条头节点
  end//datamodule1.rsbms.bof
  else
  begin
  if datamodule1.rsbmss.RecordCount<=1 then
  begin
  self.treeview1.Items.Add(treeview1.selected,datamodule1.rsbmss.fieldbyname('a_bm').asstring+'('+datamodule1.rsbmss.fieldbyname('a_number').asstring+')');
  self.treeview1.Selected.getNextSibling.Selected :=true;
  end
  else
  begin
  self.treeview1.items.add(self.treeview1.Selected.getNextSibling,datamodule1.rsbms.fieldbyname('a_bm').asstring);
  self.treeview1.Selected.getNextSibling.Selected :=true;
  datamodule1.rsbmss.last;
  while not datamodule1.rsbmss.bof do
  begin
  if datamodule1.rsbmss.FieldByName('a_bz').asstring<>'' then
  self.treeview1.items.addchild(self.treeview1.selected,datamodule1.rsbmss.fieldbyname('a_bz').asstring+'('+datamodule1.rsbmss.fieldbyname('a_number').asstring+')');
  datamodule1.rsbmss.prior;
  end;//while not
  end;
  end;//else不是第一条节点
datamodule1.rsbms.prior;
end;//while not rsbms

self.treeview1.visible:=true;
end;
procedure TForm1.Edit1Enter(Sender: TObject);
begin
treeview1.SetFocus;
end;

procedure TForm1.TreeView1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
  begin
  if key in [37..40] then
begin
if treeview1.Selected.haschildren=true then
begin
     if treeview1.Selected.level<>0 then
     begin
     if pos('(',treeview1.Selected.parent.Text)=0 then
     edit1.text:=treeview1.selected.parent.text
     else
     edit1.text:=copy(treeview1.selected.parent.text,1,pos('(',treeview1.selected.parent.text)-1);
     if pos('(',treeview1.selected.text)=0 then
     edit2.text:=treeview1.Selected.Text
     else
     edit2.text:=copy(treeview1.selected.text,1,pos('(',treeview1.selected.text)-1);
   end;
   end;//if treeview1
{else
begin
if pos('(',treeview1.Selected.parent.Text)=0 then
     edit1.text:=treeview1.selected.parent.text
     else
     edit1.text:=copy(treeview1.selected.parent.text,1,pos('(',treeview1.selected.parent.text)-1);
     edit2.text:='';
end;//else  }
if treeview1.selected.level<>0 then
begin
if pos('(',treeview1.Selected.parent.Text)=0 then
     edit1.text:=treeview1.selected.parent.text
     else
     edit1.text:=copy(treeview1.selected.parent.text,1,pos('(',treeview1.selected.parent.text)-1);
     if pos('(',treeview1.selected.text)=0 then
     edit2.text:=treeview1.Selected.Text
     else
     edit2.text:=copy(treeview1.selected.text,1,pos('(',treeview1.selected.text)-1);
end;
end;//if inttostr
if key=13 then
begin
if (treeview1.Selected.HasChildren=true) and (treeview1.Selected.Level=0) then
begin
showmessage('请先选择好班组,谢谢!');
i_key13:=true;
treeview1.Selected.getFirstChild.Selected:=true;
end//if (
else
begin

if i_key13=false then
treeview1.visible:=false;
  //
if treeview1.Selected.haschildren=true then
begin
     if treeview1.Selected.level<>0 then
     begin
  if pos('(',treeview1.Selected.parent.Text)=0 then
     edit1.text:=treeview1.selected.parent.text
     else
     edit1.text:=copy(treeview1.selected.parent.text,1,pos('(',treeview1.selected.parent.text)-1);
     if pos('(',treeview1.selected.text)=0 then
     edit2.text:=treeview1.Selected.Text
     else
     edit2.text:=copy(treeview1.selected.text,1,pos('(',treeview1.selected.text)-1);
   end;
   end//if treeview1
else
begin
    if pos('(',treeview1.Selected.Text)=0 then
    edit1.text:=treeview1.selected.text
    else
    edit1.text:=copy(treeview1.selected.text,1,pos('(',treeview1.selected.text)-1);
    edit2.text:='';
end;//else
if treeview1.selected.level<>0 then
begin
   if pos('(',treeview1.Selected.parent.Text)=0 then
     edit1.text:=treeview1.selected.parent.text
     else
     edit1.text:=copy(treeview1.selected.parent.text,1,pos('(',treeview1.selected.parent.text)-1);
     if pos('(',treeview1.selected.text)=0 then
     edit2.text:=treeview1.Selected.Text
     else
     edit2.text:=copy(treeview1.selected.text,1,pos('(',treeview1.selected.text)-1);
end;

    //

i_key13:=false;
end;

end;//if key  13

  end; //begin

procedure TForm1.FormShow(Sender: TObject);
begin
i_key13:=false;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
aa:string;
begin
aa:=copy(label1.caption,1,pos('(',label1.caption)-1);
if pos('(',label1.caption)=0 then
aa:=label1.caption;
showmessage(aa);
end;

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
// 这个整数值将按照布尔值返回,并送入数组
CtrlState : array[Boolean] of Integer = (DFCS_BUTTONCHECK,
DFCS_BUTTONCHECK or DFCS_CHECKED);
begin
//确保只有在逻辑字段才能插入组件
 if Column.Field.DataType = ftBoolean then
begin
DBGrid1.Canvas.FillRect(Rect);
DrawFrameControl(DBGrid1.Canvas.Handle,
Rect,
DFC_BUTTON,
CtrlState[Column.Field.AsBoolean]);
 end;
end;

procedure TForm1.DBGrid1ColEnter(Sender: TObject);
begin
// 确保该栏是逻辑字段
if DBGrid1.SelectedField.DataType = ftBoolean then
begin
OriginalOptions := DBGrid1.Options;
DBGrid1.Options := DBGrid1.Options - [dgEditing];
end;
end;

procedure TForm1.DBGrid1ColExit(Sender: TObject);
begin
if DBGrid1.SelectedField.DataType = ftBoolean then
DBGrid1.Options := OriginalOptions;
end;

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
//确保该栏是逻辑字段
if DBGrid1.SelectedField.DataType = ftBoolean then
SaveBoolean();
end;

procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
//确保该栏是逻辑字段和空格键在键盘中被敲击
if ( Key = VK_SPACE ) and
( DBGrid1.SelectedField.DataType = ftBoolean ) then
SaveBoolean();
end;

procedure TForm1.SaveBoolean();
begin
DBGrid1.SelectedField.Dataset.Edit;
DBGrid1.SelectedField.AsBoolean :=
not DBGrid1.SelectedField.AsBoolean;
DBGrid1.SelectedField.Dataset.Post;
end;
procedure TForm1.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
 State: TGridDrawState);
 var
 lastcolor: TColor;
begin
 with (Sender as TDBGrid) do
 begin
   lastcolor := clred;

   case DataSource.DataSet.RecNo mod 2 of
     1: lastcolor := $00F5FEFD;
     0: lastcolor := clwhite;
   end;

   if gdSelected in State then
     lastcolor := clred;      //选中行背景为绿色

   Canvas.Brush.Color := lastcolor;
   DefaultDrawDataCell(Rect, Column.Field, State);
 end;
end;


end.

⌨️ 快捷键说明

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