?? fcprocess.pas
字號:
unit FCProcess;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, BaseInfoBase, wwDialog, wwidlg, DB, ADODB, ActnList, ComCtrls,
ToolWin, wwdblook, StdCtrls, Mask, wwdbedit, ExtCtrls, Grids, DBGrids,
DBCtrls, dxdbtrel, fcTreeView;
type
TfrmFCProcess = class(TfrmBaseInfoBase)
Splitter1: TSplitter;
Panel1: TPanel;
Panel3: TPanel;
Label10: TLabel;
Label4: TLabel;
Label2: TLabel;
Label1: TLabel;
wwDBEditName: TwwDBEdit;
wwDBLSec: TwwDBLookupCombo;
QBaseInfofID: TAutoIncField;
QBaseInfofSecID: TIntegerField;
QBaseInfofName: TWideStringField;
QBaseInfofRoleID: TIntegerField;
QBaseInfofNotes: TWideStringField;
qSection: TADOQuery;
dsSection: TDataSource;
QBaseInfosSectionName: TStringField;
dxDBLookupTreeView1: TdxDBLookupTreeView;
DBMemo1: TDBMemo;
qDep: TADOQuery;
dsDep: TDataSource;
QBaseInfosDepName: TStringField;
qSectionfID: TAutoIncField;
qSectionfName: TWideStringField;
QMaster: TADOQuery;
dsMaster: TDataSource;
DBGrid1: TDBGrid;
tvMaster: TfcTreeView;
qWC: TADOQuery;
dsWC: TDataSource;
Label3: TLabel;
wwDBLWC: TwwDBLookupCombo;
QBaseInfofWCID: TIntegerField;
QBaseInfosWCName: TStringField;
QMasterAID: TAutoIncField;
QMasterAName: TWideStringField;
QMasterBID: TAutoIncField;
QMasterBName: TWideStringField;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure QBaseInfoAfterInsert(DataSet: TDataSet);
procedure dsBaseInfoStateChange(Sender: TObject);
procedure dxDBLookupTreeView1DropDown(Sender: TObject);
procedure tvMasterChange(TreeView: TfcCustomTreeView;
Node: TfcTreeNode);
procedure QBaseInfoAfterPost(DataSet: TDataSet);
procedure acDeleteExecute(Sender: TObject);
procedure acModifyExecute(Sender: TObject);
procedure acNewExecute(Sender: TObject);
private
iState:TDataSetState;
iSectionID:integer;
procedure DrawTree();
{ Private declarations }
public
{ Public declarations }
end;
var
frmFCProcess: TfrmFCProcess;
implementation
Uses DataModule, Global;
{$R *.dfm}
procedure TfrmFCProcess.DrawTree();
begin
With QMaster do
begin
first;
//寫樹
tvMaster.items.BeginUpdate;
tvMaster.Items.Clear ;
while not eof do
begin
GFTreeAddItem(2,False,QMaster,tvMaster);
next;
end;
tvMaster.items.Endupdate;
if tvMaster.Items.Count >0 then
tvMaster.Items[0].Selected :=True;
//tvMaster.FullExpand ;
end;
end;
procedure TfrmFCProcess.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
frmFCProcess:=nil;
end;
procedure TfrmFCProcess.FormCreate(Sender: TObject);
begin
if Not QMaster.Active then QMaster.Open ;
inherited;
if not qDep.Active then qDep.open;
if not qSection.Active then qSection.Open;
if not qWC.Active then qWC.Open;
drawTree();
end;
procedure TfrmFCProcess.QBaseInfoAfterInsert(DataSet: TDataSet);
begin
inherited;
QBaseInfo.FieldByName('fSecID').asInteger:=iSectionID;
end;
procedure TfrmFCProcess.dsBaseInfoStateChange(Sender: TObject);
var
i:Integer;
begin
inherited;
With Panel3 do
for i:= 0 to ControlCount-1 do
if Controls[i] is TDBEdit then
(Controls[i] as TDBEdit).ReadOnly := Not acSave.Enabled
else if Controls[i] is TDBMemo then
(Controls[i] as TDBMemo).ReadOnly := Not acSave.Enabled;
dbGrid1.ReadOnly := Not acSave.Enabled ;
tvMaster.Enabled := Not acSave.Enabled ;
end;
procedure TfrmFCProcess.dxDBLookupTreeView1DropDown(Sender: TObject);
begin
inherited;
if Not acSave.Enabled then abort;
end;
procedure TfrmFCProcess.tvMasterChange(TreeView: TfcCustomTreeView;
Node: TfcTreeNode);
{var
ChildNode:TfcTreeNode; }
begin
inherited;
acModify.Enabled :=Node.Level =1;
acDelete.Enabled :=Node.Level =1;
Case Node.Level of
0:
begin
if (Node.data<>nil) and (iSectionID<>Integer(Node.Data^)) then
begin
iSectionID := Integer(Node.Data^);
With QBaseInfo do
Begin
Parameters.ParamValues['fID']:=iSectionID;
if Active then Requery else Open;
end;
end;
end ;
1:
begin
if iSectionID<>Integer(Node.Parent.Data^) then
begin
iSectionID:=Integer(Node.Parent.Data^);
With QBaseInfo do
Begin
Parameters.ParamValues['fID']:=iSectionID;
if Active then Requery else Open;
end;
end;
if Node.data<>nil then
QBaseInfo.Locate('fID',Integer(Node.Data^),[]);
end;
end;
end;
procedure TfrmFCProcess.QBaseInfoAfterPost(DataSet: TDataSet);
var
sName: String;
pID: ^Integer;
Node,ParentNode: TfcTreeNode;
begin
inherited;
if tvMaster.Selected.Level =0 then
ParentNode:= tvMaster.Selected
else
ParentNode:=tvMaster.Selected.Parent;
if iState=dsInsert then
sName:=QBaseInfo.FieldbyName('fName').asString;
Node:=GFTreeFindItem(ParentNode,tvMaster,QBaseInfo.FieldbyName('fName').asString);
if Node<>Nil then
Node.Text := sName
else
begin
New(pID);
pID^:=QBaseInfo.FieldbyName('fID').asInteger;
tvMaster.Items.AddChildObject(ParentNode,sName,pID);
end;
iState:=dsBrowse ;
end;
procedure TfrmFCProcess.acDeleteExecute(Sender: TObject);
var
Node: TfcTreeNode;
begin
if QBaseInfo.RecordCount >0 then
if messagedlg('您確定要刪除當前記錄嗎?',mtWarning,[mbOk,mbCancel],0)=mrOk then
begin
if tvMaster.Selected.Level =0 then
Node:=GFTreeFindItem(tvMaster.Selected,tvMaster,QBaseInfo.FieldbyName('fName').asString)
else
Node:=GFTreeFindItem(tvMaster.Selected.Parent,tvMaster,QBaseInfo.FieldbyName('fName').asString);
tvMaster.Items.Delete(Node);
QBaseInfo.Delete ;
end;
// inherited;
end;
procedure TfrmFCProcess.acModifyExecute(Sender: TObject);
begin
inherited;
iState:=QBaseInfo.State ;
end;
procedure TfrmFCProcess.acNewExecute(Sender: TObject);
begin
inherited;
iState:=QBaseInfo.State ;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -