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

📄 power_unit.~pas

📁 餐营的数据核算,模拟入库,出库,库存.对餐营的流程详细叙述
💻 ~PAS
字号:
unit POWER_Unit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, Grids, DBGridEh, ComCtrls, CheckTreeView, DB,
  ADODB;
type
  PPurview = ^TPurview;
  TPurview = record
    FunctionsID: integer;
    ActionList: string;
end;
type
  TPOWER_Form = class(TForm)
    DBGridEh1: TDBGridEh;
    BitBtn1: TBitBtn;
    CheckTree1: TCheckTree;
    USEADOQ: TADOQuery;
    qryDisplayPurview: TADOQuery;
    qryRefreshPurview: TADOQuery;
    USEDS: TDataSource;
    USEADOQCUST_NO: TStringField;
    USEADOQCUST_NAME: TStringField;
    USEADOQCUST_PASS: TStringField;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure CheckTree1Editing(Sender: TObject; Node: TTreeNode;
      var AllowEdit: Boolean);
    procedure CheckTree1Enter(Sender: TObject);
    procedure CheckTree1StateChange(Sender: TObject; Node: TTreeNode;
      NewState: TCheckCheckState);
    procedure DBGridEh1Enter(Sender: TObject);
    procedure USEADOQAfterScroll(DataSet: TDataSet);
    procedure USEADOQAfterOpen(DataSet: TDataSet);
    procedure USEADOQBeforeOpen(DataSet: TDataSet);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  POWER_Form: TPOWER_Form;
  CanModify: Boolean;
implementation

uses DMUnit;

{$R *.dfm}

procedure TPOWER_Form.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=cafree;
end;

procedure TPOWER_Form.FormDestroy(Sender: TObject);
var
  i: integer;
begin
  inherited;
  for i := 0 to CheckTree1.Items.Count - 1 do
  begin
    if CheckTree1.Items.Item[i].Data <> nil then
      FreeMem(CheckTree1.Items.Item[i].Data);
  end;
  POWER_form:=nil;
end;

procedure TPOWER_Form.BitBtn1Click(Sender: TObject);
begin
Close;
end;

procedure TPOWER_Form.CheckTree1Editing(Sender: TObject; Node: TTreeNode;
  var AllowEdit: Boolean);
begin
  inherited;
  AllowEdit:=false;
end;

procedure TPOWER_Form.CheckTree1Enter(Sender: TObject);
begin
  inherited;
  CanModify:=True;
end;

procedure TPOWER_Form.CheckTree1StateChange(Sender: TObject;
  Node: TTreeNode; NewState: TCheckCheckState);
begin
  if not CanModify then
    Exit;
  if Node.SelectedIndex = 0 then
    Exit;
  try
    Screen.Cursor := crSQLWait;
    with qryDisplayPurview do
    begin
      Active := False;
      if NewState = csChecked then
        SQL.Text := 'insert into PRE(USEID, ID_NO)'#13 +
          'values(''' + USEADOQCUST_NO.AsString + ''', ' +
          IntToStr(PPurview(Node.Data).FunctionsID) + ')'

      else
        SQL.Text := 'delete from PRE where USEID like ''' +
          USEADOQCUST_NO.AsString + ''' and ID_NO = ' +
          IntToStr(PPurview(Node.Data).FunctionsID);
      try
        ExecSQL;
      except
      end;
    end;
  finally
    Screen.Cursor := crDefault;
  end;
end;

procedure TPOWER_Form.DBGridEh1Enter(Sender: TObject);
begin
inherited;
CanModify := False;
end;

procedure TPOWER_Form.USEADOQAfterScroll(DataSet: TDataSet);
var
  i: integer;
begin
  inherited;
  if DataSet.ControlsDisabled then
    Exit;
  try
    Screen.Cursor := crSQLWait;
    for i := 0 to CheckTree1.Items.Count - 1 do
    begin
      CheckTree1.ItemState[i] := csUnChecked;
    end;
    with qryRefreshPurview do
    begin
      Active := False;
      SQL.Text := 'select ID_NO from PRE where USEID like ''' +
        USEADOQCUST_NO.AsString + '''';
      Active := True;
      First;
      while not Eof do
      begin
        for i := 0 to CheckTree1.Items.Count - 1 do
        begin
          if CheckTree1.Items.Item[i].SelectedIndex = 0 then
            Continue;
          if PPurview(CheckTree1.Items.Item[i].Data).FunctionsID =
            Fields[0].AsInteger then
            CheckTree1.ItemState[i] := csChecked;
        end;
        Next;
      end;
    end;
  finally
    Screen.Cursor := crDefault;
  end;
end;

procedure TPOWER_Form.USEADOQAfterOpen(DataSet: TDataSet);
begin
inherited;
DataSet.EnableControls;
end;

procedure TPOWER_Form.USEADOQBeforeOpen(DataSet: TDataSet);
begin
inherited;
DataSet.DisableControls;
end;

procedure TPOWER_Form.FormActivate(Sender: TObject);
var
  aPNode, aCNode,aTNode: TTreeNode;
  aPurview: PPurview;
begin
  inherited;
  CheckTree1.Items.Clear;
  with qryDisplayPurview do
  begin
    Active := False;
    SQL.Text := 'select distinct PBS from BUTTON';
    Active := True;
    First;
    while not Eof do
    begin
      aPNode := CheckTree1.Items.AddChild(nil, Fields[0].AsString);
      aPNode.SelectedIndex := 0;
      aPNode.Data := nil;
      with qryRefreshPurview do
      begin
        Active := False;
        SQL.Text := 'select * from BUTTON where PBS like ''' +
          qryDisplayPurview.Fields[0].AsString + '''';
        Active := True;
        First;
        while not Eof do
        begin
         aPurview := new(PPurview);
         aPurview.FunctionsID := FieldbyName('ID_NO').AsInteger;
         aPurview.ActionList := FieldbyName('ActionList').AsString;
          aCNode :=
            CheckTree1.Items.AddChildFirst(aPNode,
            FieldbyName('BUTTON_NAME').AsString);
          aCNode.SelectedIndex := 1;
          aCNode.Data := aPurview;
         { with addnode do
          begin
            Active :=false;
            SQL.Text:='SELECT * FROM BUTTON WHERE PBS LIKE '''+
            qryRefreshPurview.FieldByName('SNAME').AsString+'''';
            Active:=True;
            First;
            while not eof do
            begin
              aPurview := new(PPurview);
              aPurview.FunctionsID := FieldbyName('ID_NO').AsInteger;
              aPurview.ActionList := FieldbyName('ActionList').AsString;
              atnode:=
                CheckTree1.Items.AddChild(acnode,
                FieldByName('BUTTON_NAME').AsString);
                atNode.SelectedIndex:=2;
                atNode.Data:=aPurView;
                Next;
            end;
          end; }
          Next;
        end;
      end;
      Next;
    end;
  end;
  with USEADOQ do
  begin
    Active := False;
    Active := True;
  end;
end;

end.

⌨️ 快捷键说明

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