📄 power_unit.~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 + -